python模塊import(26)

一.模塊簡(jiǎn)介

python開(kāi)發(fā)中,每一個(gè).py文件都可以看作是一個(gè)模塊,模塊內(nèi)部的函數(shù)或者方法可以被其他模塊調(diào)用,至于函數(shù)或者方法是具體如何實(shí)現(xiàn)的,調(diào)用者不需要關(guān)心。

創(chuàng)新互聯(lián)建站是一家專(zhuān)注于成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)與策劃設(shè)計(jì),雄縣網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:雄縣等地區(qū)。雄縣做網(wǎng)站價(jià)格咨詢(xún):18982081108

?

python 模塊import(26)

?

假如項(xiàng)目中既含有UI也有邏輯代碼還有功能實(shí)現(xiàn),如果全寫(xiě)在一個(gè)py文件,可能會(huì)有幾萬(wàn)甚至十幾萬(wàn)行代碼,顯得代碼很臃腫,為了方便代碼閱讀和維護(hù),我們可以將項(xiàng)目拆分為多個(gè)模塊,不同的模塊實(shí)現(xiàn)不同的功能,這樣分工合作開(kāi)發(fā)效率也高,而且就算出現(xiàn)bug也方便定位。

python 模塊import(26)

?

二.模塊分類(lèi)

1.系統(tǒng)內(nèi)置模塊

python中有一些內(nèi)置模塊我們直接調(diào)用,比如:sys、time、json等,具體使用方法我們?cè)谡{(diào)用模塊中詳細(xì)講解;

2.第三方開(kāi)源模塊

安裝第三方開(kāi)源模塊,可以直接cmd打開(kāi)控制臺(tái)或者打開(kāi)pycharm終端運(yùn)行 pip install <模塊名> 即可,前提是anacoanda已經(jīng)安裝正確,例如:學(xué)習(xí)爬蟲(chóng)的時(shí)候需要安裝request

1

pipinstallrequest

3.自定義模塊

除了前面兩種模塊,我們也可以自己寫(xiě)模塊來(lái)供自己調(diào)用,具體實(shí)現(xiàn)什么功能有自己決定,在后面的模塊調(diào)用中會(huì)有詳細(xì)講解,值得注意的是:模塊名字不能和內(nèi)置模塊名字一樣,會(huì)造成沖突;

?

三.調(diào)用模塊

使用?import關(guān)鍵字?導(dǎo)入模塊,并放置在代碼最開(kāi)始位置;同一個(gè)模塊不管執(zhí)行了多少次?import <模塊名>,實(shí)際上只會(huì)被導(dǎo)入一次。

為了講解關(guān)于模塊的調(diào)用方法,假如我們有一個(gè)計(jì)算加減乘除的模塊文件calculator.py,代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

# !usr/bin/env python

# -*- coding:utf-8 _*-

"""

@Author:何以解憂(yōu)

@Blog(個(gè)人博客地址): shuopython.com

@WeChat Official Account(微信公眾號(hào)):猿說(shuō)python

@Github:www.github.com

@File:calculator.py

@Time:2019/10/11 21:25

?

@Motto:不積跬步無(wú)以至千里,不積小流無(wú)以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!

"""

?

# 定義一個(gè)全局變量

name="calculator"

?

# 加法

defadd(x,y):

????returnx+y

?

# 減法

defsub(x,y):

????returnx-y

?

# 乘法

defmultiplication(x,y):

????returnx*y

?

# 除法

defdivision(x,y):

????returnx/y

?

# 使用內(nèi)置函數(shù)eval計(jì)算表達(dá)式的結(jié)果,如果表達(dá)式有誤,直接拋異常

defget_result(input_str):

????try:

????????returneval(input_str)

????exceptExceptionase:

????????print("表達(dá)式輸入異常!")

????????returnNone

如果已經(jīng)忘記python 異常處理的小伙伴請(qǐng)參考:??python 異常處理詳細(xì)講解

?

1.import <模塊名>

新建一個(gè)py文件,用于調(diào)用模板文件 calculator.py 中的函數(shù),代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

# 導(dǎo)入模塊

importcalculator

?

# 調(diào)用calculator模塊中的add函數(shù) : 模塊名.函數(shù)名??或者 模塊名.變量名

result=calculator.add(2,5)

print(result)

?

# 調(diào)用calculator模塊中的sub函數(shù) : 模塊名.函數(shù)名??或者 模塊名.變量名

result=calculator.sub(2,5)

print(result)

?

# 調(diào)用calculator模塊中的multiplication函數(shù) : 模塊名.函數(shù)名??或者 模塊名.變量名

result=calculator.multiplication(2,5)

print(result)

?

# 調(diào)用calculator模塊中的add函數(shù) : 模塊名.函數(shù)名??或者 模塊名.變量名

result=calculator.division(2,5)

print(result)

?

# 調(diào)用calculator模塊中的get_result函數(shù) : 模塊名.函數(shù)名??或者 模塊名.變量名

result=calculator.get_result("3+2*8-40")

print(result)

?

# 調(diào)用calculator模塊中的name變量 : 模塊名.函數(shù)名??或者 模塊名.變量名

print(calculator.name)

輸出結(jié)果:

1

2

3

4

5

6

7

-3

10

0.4

-21

calculator

注意:調(diào)用模塊中的函數(shù)時(shí)需要指明函數(shù)或者變量來(lái)自哪個(gè)模板:<模塊名>.函數(shù)名? ? <模塊名>.變量名

?

2.from <模塊名> import <函數(shù)或者變量>,<函數(shù)或者變量>,<函數(shù)或者變量>…..

做一個(gè)簡(jiǎn)單理解,從哪個(gè)模塊導(dǎo)入哪些函數(shù)或者變量,外部導(dǎo)入模塊后調(diào)用時(shí)只能調(diào)用導(dǎo)入的函數(shù)或者變量,模塊中沒(méi)有導(dǎo)入的變量或者函數(shù)不能調(diào)用,示例代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

'''

從模塊calculator中導(dǎo)入add,sub兩個(gè)函數(shù),

意味著調(diào)用calculator模塊時(shí),只能調(diào)用add,sub兩個(gè)函數(shù),

calculator 模塊中的其他變量或者函數(shù)無(wú)法調(diào)用

'''

?

fromcalculatorimportadd,sub

?

# 在代碼頂部已經(jīng)聲明add函數(shù)從calculator導(dǎo)入,可以直接使用,不需要帶上模板名

result=add(2,5)

print(result)

?

# 在代碼頂部已經(jīng)聲明sub函數(shù)從calculator導(dǎo)入,可以直接使用,不需要帶上模板名

result=sub(2,5)

print(result)

?

# 錯(cuò)誤寫(xiě)法:該模塊并沒(méi)有導(dǎo)入name變量

# result = multiplication(2,5)

?

# 錯(cuò)誤寫(xiě)法:該模塊并沒(méi)有導(dǎo)入name變量

# result = division(2,5)

?

# 錯(cuò)誤寫(xiě)法:該模塊并沒(méi)有導(dǎo)入name變量

# result = calculator.get_result("3+2*8-40")

?

# 錯(cuò)誤寫(xiě)法:該模塊并沒(méi)有導(dǎo)入name變量

# print(calculator.name)

?

?

3.from <模塊名> import *

這種寫(xiě)法表示直接導(dǎo)入模塊中的所有內(nèi)容,意味著模塊中的函數(shù)或者變量都可以使用,該寫(xiě)法實(shí)際上和第二種導(dǎo)入方法類(lèi)似,示例代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

# 導(dǎo)入calculator 模塊中所有函數(shù)和變量

fromcalculatorimport*

?

# 在代碼頂部已經(jīng)聲明導(dǎo)入calculator模塊所有內(nèi)容,可以直接使用,不需要帶上模板名

result=add(2,5)

print(result)

?

# 在代碼頂部已經(jīng)聲明導(dǎo)入calculator模塊所有內(nèi)容,可以直接使用,不需要帶上模板名

result=sub(2,5)

print(result)

?

# 在代碼頂部已經(jīng)聲明導(dǎo)入calculator模塊所有內(nèi)容,可以直接使用,不需要帶上模板名

result=multiplication(2,5)

print(result)

?

# 在代碼頂部已經(jīng)聲明導(dǎo)入calculator模塊所有內(nèi)容,可以直接使用,不需要帶上模板名

result=division(2,5)

print(result)

?

# 在代碼頂部已經(jīng)聲明導(dǎo)入calculator模塊所有內(nèi)容,可以直接使用,不需要帶上模板名

result=get_result("3+2*8-40")

print(result)

?

# 在代碼頂部已經(jīng)聲明導(dǎo)入calculator模塊所有內(nèi)容,可以直接使用,不需要帶上模板名

print(name)

輸出:

1

2

3

4

5

6

7

-3

10

0.4

-21

calculator

使用該方法導(dǎo)入模塊時(shí)有一個(gè)缺陷:如果同時(shí)導(dǎo)入多個(gè)模塊文件,如果模塊中的函數(shù)或者變量重名,編譯器也不知道具體是用哪一個(gè)模塊重名的函數(shù)或者變量,會(huì)造成意想不到的bug,往往這種bug最難查找!

?

四.簡(jiǎn)單的計(jì)算器

利用上面的calculator模塊,再加上前面的python基礎(chǔ)知識(shí),其實(shí)我們已經(jīng)可以寫(xiě)一個(gè)簡(jiǎn)單的計(jì)算器了,唯獨(dú)沒(méi)有界面而已,至于界面后面會(huì)有pyqt5的教程,暫時(shí)不做過(guò)多講解。計(jì)算器代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

# 導(dǎo)入內(nèi)置模塊time,計(jì)算耗時(shí),默認(rèn)單位秒

importtime

# 導(dǎo)入calculator 模塊

importcalculator

?

?

whileTrue:

????# 獲取表達(dá)式

????input_str=input("請(qǐng)輸入表達(dá)式:")

????ifinput_str=='q':# 輸入 q 退出程序

????????break

????time_start=time.clock()

????print(calculator.get_result(input_str))

????time_end=time.clock()

????# 將 秒 轉(zhuǎn)為 毫秒

????print("計(jì)算耗時(shí):{}毫秒".format((time_end-time_start)*1000))

?

print("退出計(jì)算,程序結(jié)束!")

測(cè)試結(jié)果:

python 模塊import(26)

?

?

五.重點(diǎn)總結(jié)

1.注意模塊的幾種導(dǎo)入方式,python開(kāi)發(fā)中推薦使用寫(xiě)法一的方式導(dǎo)入:import <模塊名>;

2.注意內(nèi)置函數(shù)和內(nèi)置模塊的區(qū)別:內(nèi)置函數(shù)是任何模塊都可以直接調(diào)用,內(nèi)置模塊需要import模塊之后才能調(diào)用模塊里面的函數(shù);

3.不同的模塊中可以存在相同的變量名或者函數(shù)名,但是不能與內(nèi)置函數(shù)名或者內(nèi)置模塊名字重復(fù),避免造成沖突;

猜你喜歡:

1.python內(nèi)置函數(shù)input/eval函數(shù)

2.字典推導(dǎo)式

3.列表推導(dǎo)式

4.python異常處理

?

轉(zhuǎn)載請(qǐng)注明:猿說(shuō)Python???python模塊

文章名稱(chēng):python模塊import(26)
瀏覽路徑:http://bm7419.com/article46/pssshg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、標(biāo)簽優(yōu)化移動(dòng)網(wǎng)站建設(shè)、App開(kāi)發(fā)外貿(mào)網(wǎng)站建設(shè)、定制開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)