1 mport math 2 3 r=5 4 print('半徑為5的園面積為:%.2f'%(math.pi*r**2)) 5 #保存文件名為import_test.py。在CMD窗口執(zhí)行如下命令: 6 D:\Pythonworkspace>python import_test.py 7 半徑為5的園面積為:78.54 8 #上面的程序使用了import語(yǔ)句。 9 #import math的意思為從Python標(biāo)準(zhǔn)庫(kù)中引入math.py模塊,這是Python中定義的引入模塊的方法。#import的標(biāo)準(zhǔn)語(yǔ)法如下: 10 >>>import module1[,module2[,...moduleN]] 11 #表示允許一個(gè)import導(dǎo)入多個(gè)模塊,但各個(gè)模塊間需要用逗號(hào)隔開。 12 #當(dāng)解釋器遇到import語(yǔ)句時(shí),如果模塊在當(dāng)前搜索路徑就會(huì)被導(dǎo)入。搜索路徑是一個(gè)解釋器,會(huì)先搜索所有目錄的列表。 13 #當(dāng)我們使用import語(yǔ)句時(shí),Python解釋器怎樣找到對(duì)應(yīng)的文件呢?這就涉及Python的搜索路徑,搜索路徑由一系列目錄名組成,Python解釋器會(huì)依次從這些目錄中尋找引入的模塊。 14 看起來(lái)很像環(huán)境變量,事實(shí)上可以通過(guò)定義環(huán)境變量的方式確定搜索路徑。搜索路徑是在Python編譯或安裝時(shí)確定的,被存儲(chǔ)在sys模塊的path變量中。查看搜索路徑的方式如下: 15 import sys 16 17 print('Python的搜索路徑為:%s'%sys.path) 18 #保存文件為import_sys.py,在cmd窗口執(zhí)行結(jié)果如下: 19 D:\Pythonworkspace>python import_sys.py 20 Python的搜索路徑為:['D:\\Pythonworkspace', 'D:\\Python\\python36.zip', 'D:\\Python\\DLLs', 'D:\\Python\\lib', 'D:\\Python', 'D:\\Python\\lib\\site-packages'] 21 #由以上輸出結(jié)果看到,sys.path輸出了一個(gè)列表,第一項(xiàng)輸出的是執(zhí)行文件的目錄,即我們執(zhí)行Python解釋器的目錄(如果是腳本,就是運(yùn)行腳本所在的目錄)。 22 #了解搜索路徑的概念后,可以在腳本中修改sys.path引入一下不在搜索路徑中的模塊。 23 #上面我們初步引入了import語(yǔ)句,除了用import引入模塊,還有另一種方式引入模塊,示例如下: 24 >>> from math import pi 25 >>> print(pi) 26 3.141592653589793 27 #上面的操作使用了from math import pi 的方式,這是什么意思? 28 #在Python中,from語(yǔ)句可以從模塊中導(dǎo)入指定部分到當(dāng)前命名空間中,語(yǔ)法如下: 29 >>>from modnane import name1[,name2[,...nameN]] 30 #例如,from math import pi 語(yǔ)句就是從math模塊導(dǎo)入pi到當(dāng)前命名空間,該語(yǔ)句不會(huì)將math整個(gè)模塊導(dǎo)入。比如在math模塊中還有sin、exp函數(shù),在這個(gè)語(yǔ)句里這兩個(gè)函數(shù)都使用不了,而導(dǎo)入整個(gè)math模塊的語(yǔ)句中可以使用,示例如下: 31 >>> import math 32 >>> print(math.pi) #math.pi可以被輸出 33 3.141592653589793 34 >>> print(math.sin(1)) #math.sin(1)可以被輸出 35 0.8414709848078965 36 >>> print(math.exp(1)) #math.exp(1)可以被輸出 37 2.718281828459045 38 >>> from import math.pi 39 SyntaxError: invalid syntax 40 >>> from math import.pi 41 SyntaxError: invalid syntax 42 >>> from math import pi 43 >>> print(pi) #pi可以被輸出 44 3.141592653589793 45 >>> print(math.pi) 46 3.141592653589793 47 >>> print(sin(1)) #sin(1)不可以被輸出 48 Traceback (most recent call last): 49 File "<pyshell#11>", line 1, in <module> 50 print(sin(1)) #sin(1)不可以被輸出 51 NameError: name 'sin' is not defined 52 >>> print(exp(1)) #exp(1)不可以被輸出 53 Traceback (most recent call last): 54 File "<pyshell#13>", line 1, in <module> 55 print(exp(1)) 56 NameError: name 'exp' is not defined 57 #再例如: 58 >>> from math import pi 59 >>> print(math.exp(1)) 60 Traceback (most recent call last): 61 File "<pyshell#15>", line 1, in <module> 62 print(math.exp(1)) 63 NameError: name 'math' is not defined 64 >>> import math 65 >>> print(math.exp(1)) 66 2.718281828459045 67 #由以上結(jié)果可知,如果導(dǎo)入模塊,就會(huì)得到模塊中所有對(duì)象;如果指定導(dǎo)入某個(gè)對(duì)象,就只能得到該對(duì)象。 68 #這樣做的好處是什么呢?示例: 69 >>> import math 70 >>> print(math.pi) 71 3.141592653589793 72 >>> print(pi) 73 Traceback (most recent call last): 74 File "<pyshell#20>", line 1, in <module> 75 print(pi) 76 NameError: name 'pi' is not defined 77 >>> from math import pi 78 >>> print(pi) 79 3.141592653589793 80 #由上面的輸出結(jié)果可知,如果在導(dǎo)入math模塊時(shí)訪問(wèn)pi對(duì)象,需要使用math.pi,直接使用pi訪問(wèn)不了,會(huì)報(bào)錯(cuò)。使用import語(yǔ)句后,可以直接訪問(wèn)pi對(duì)象,不需要加上模塊名進(jìn)行訪問(wèn)。 81 #如果要訪問(wèn)模塊中多個(gè)對(duì)象,是否需要一個(gè)一個(gè)導(dǎo)入呢?如果要訪問(wèn)math中的pi和sin,是否要寫兩個(gè)from math import語(yǔ)句呢?例如 82 from math import pi 83 from math import sin 84 #當(dāng)然不用,可以直接使用如下語(yǔ)句: 85 from math import pi,sin 86 #可以從一個(gè)導(dǎo)入語(yǔ)句導(dǎo)入多個(gè)函數(shù),多個(gè)函數(shù)之前用逗號(hào)分割。 87 #如果要訪問(wèn)模塊中多個(gè)對(duì)象,是否需要一個(gè)一個(gè)導(dǎo)入呢?當(dāng)然不用,可以直接使用如下語(yǔ)句: 88 from math import* 89 #使用該語(yǔ)句可以將math中所有對(duì)象都引入,比如上面幾個(gè)報(bào)錯(cuò)的情況就可以成功輸出結(jié)果:例如: 90 >>> from math import* 91 >>> print(pi) #pi可以被輸出 92 3.141592653589793 93 >>> print(math.pi) 94 Traceback (most recent call last): 95 File "<pyshell#28>", line 1, in <module> 96 print(math.pi) 97 NameError: name 'math' is not defined 98 >>> print(sin(1)) #sin(1)可以被輸出 99 0.8414709848078965100 >>> print(math.sin(1))101 Traceback (most recent call last):102 File "<pyshell#30>", line 1, in <module>103 print(math.sin(1))104 NameError: name 'math' is not defined105 >>> print(exp(1)) #exp(1)可以被輸出106 2.718281828459045107 #由輸出結(jié)果看到,pi、sin、exp等函數(shù)都可以被正確輸出了,這是一個(gè)簡(jiǎn)單的將項(xiàng)目中所有模塊都導(dǎo)入的方法。在實(shí)際操作過(guò)程中,這種聲明不建議過(guò)多使用,這樣不利于編寫清晰、簡(jiǎn)單的代碼。只有想從給定模塊導(dǎo)入所有功能時(shí)才使用這種方式。108 #除了上述幾種方式外,還可以為模塊取別名,例如:109 >>> import math as m110 >>> m.pi111 3.141592653589793112 #由輸出結(jié)果看到,給模塊取別名的方式為:在導(dǎo)出模塊的語(yǔ)句末尾增加一個(gè)as子句,as后面跟上別名名稱。113 #既然可以為模塊取別名,當(dāng)然也可以為函數(shù)取別名,例如:114 >>> from math import pi as p115 >>> p116 3.141592653589793117 #由輸出結(jié)果可知,我們?yōu)閜i取了別名為p,為函數(shù)取別名的方式和為模塊取別名的方式類似,也是在語(yǔ)句后面加上as,as后面跟上別名名稱。
聯(lián)系客服