国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python模塊

2019-11-06 08:15:59
字體:
來源:轉載
供稿:網友

Python模塊

1、模塊的創建

通常以.py結尾的文件會被認為是python的模塊。模塊的名稱會在導入時被使用,因此必須滿足變量的命名規則。自定義模塊mymod.py文件
import sysX = 11Y = [1, 2]def fun():                       # 方法fun,用來打印字符串	PRint "Hello World"class klass:	pass

2、import、from導入模塊

(1) import導入一個模塊。
>>> import mymod                 # import導入mymod模塊>>> mymod.X                      # 模塊的屬性11>>> mymod.fun()                  # 模塊的函數Hello World

(2) from從一個模塊中導入一個特定的變量名。

>>> from mymod import X          # 導入mymod模塊屬性>>> X11>>> from mymod import fun        # 導入mymod模塊函數>>> fun()Hello World

(3) import只會加載一次。

>>> import mymod>>> mymod.X = 13                 # 修改模塊中X的值>>> mymod.X13>>> import mymod                 # 再次調用import>>> mymod.X                      # X的值未變化13

3、imp.reload重新導入模塊

修改模塊變量的值,重新導入后,修改的變量恢復到默認值。
>>> import mymod>>> mymod.X11>>> mymod.X = 13>>> from imp import reload>>> reload(mymod)<module 'mymod' from 'E:/mymod.pyc'>>>> mymod.X11

修改模塊代碼,需要重新導入。修改mymod.py文件中fun方法,把打印字段改成"Welcome to Python"。

>>> import mymod                 # 再次導入mymod模塊>>> mymod.fun()                  # 由于模塊已導入,方法還是原來的Hello World>>> import imp>>> imp.reload(mymod)            # 調用imp.reload方法,重新導入mymod模塊<module 'mymod' from 'E:/mymod.pyc'>>>> mymod.fun()                  # fun方法已修改Welcome to Python

4、導入模塊搜索順序

如果需要添加搜索目錄,可以修改sys.path的值。在D盤下存在extend.py文件
print "extend init"              # 打印一段字符串

該模塊無法直接導入。

>>> import extendTraceback (most recent call last):  File "<pyshell#6>", line 1, in <module>    import extendImportError: No module named extend

在sys.path中添加目錄

>>> import sys>>> sys.path                     # 在sys.path中定義了模塊目錄,從左往右搜索>>> sys.path.append("d://")>>> import extendextend init

5、模塊屬性訪問

(1) 模塊屬性在模塊內的屬性、方法和類等都可以看成模塊的屬性,通過逗號(.)訪問。
>>> import mymod>>> mymod.sys                    # 模塊導入模塊<module 'sys' (built-in)>>>> mymod.X                      # 模塊內屬性11>>> mymod.fun                    # 模塊內的方法<function fun at 0x0000000002CCDCF8>>>> mymod.klass                  # 模塊內的類<class mymod.klass at 0x000000000291DCA8>

(2) 可以采用多種方式來訪問模塊屬性。

>>> import mymod>>> mymod.X                      # 逗號訪問11>>> mymod.__dict__["X"]          # __dict__包含模塊所有的屬性11>>> getattr(mymod, "X")          # getattr函數11>>> import sys>>> sys.modules["mymod"].X11

(3) import和from的賦值。import和from都采用值傳遞的方法引用屬性。

>>> import mymod                 # mymod是本地變量,指向mymod模塊>>> mymod.X = 13                 # 修改模塊中X的值>>> mymod.X13>>> from mymod import X          # X是本地變量,類似于X = mymod.X>>> X = 15                       # X的值被修改>>> mymod.X                      # 模塊中X的值未變13>>> from mymod import Y          # Y是本地變量,指向mymod.Y>>> Y[0] = 15                    # Y是列表,自身被修改>>> mymod.Y[15, 2]

5、模塊包

除了模塊名,導入也可以指定目錄路徑,以點號(.)分開。例如在當前目錄下有一個dir1/dir2/mymod.py文件

(1) dir1和dir2目錄下必須要有__init__.py文件。

dir1/__init__.py文件
print "dir1 init"X = 11dir1/dir2/__init__.py文件
print "dir2 init"Y = 13mymod.py文件
print "mymod init"

(2) 導入時以逗號分開。

>>> import dir1.dir2.mymod      # 導入dir1/dir2/mymod模塊dir1 init                       # dir1/__init__.py文件dir2 init                       # dir1/dir2/__init__.py文件mymod init                      # dir1/dir2/mymod.py文件

(3) 可以導入目錄,對應各自的__init__.py文件。

>>> from imp import reload>>> reload(dir1)                # 重新導入dir1dir1 init<module 'dir1' from 'E:/dir1/__init__.pyc'>>>> reload(dir1.dir2)           # 重新導入dir2dir2 init<module 'dir1.dir2' from 'E:/dir1/dir2/__init__.pyc'>>>> dir1.X, dir1.dir2.Y         # 訪問__init__.py中的變量(11, 13)

6、__name__內置屬性

如果該模塊是被執行的話,__name__被設置為"__main__",否則就是模塊的名稱。minemod.py文件
def fun():	print "Hello World!"	if __name__ == "__main__":	fun()

外部調用

>>> import minemod>>> minemod.fun()Hello World!在cmd命令下,直接運行該模塊文件
% python mine.pyHello World!

7、as可以制定一個變量名替代導入變量。

>>> import dir1.dir2.mymod as mm           # 重命名導入進來的變量名>>> mm.X11

8、exec動態訪問模塊

使用一個變量定義一個模塊,直接導入會發生異常。
>>> module = "dir1.dir2.mymod">>> import moduleTraceback (most recent call last):  File "<pyshell#1>", line 1, in <module>    import moduleImportError: No module named module>>> exec("import " + module)dir1 initdir2 initmymod init
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 水城县| 公安县| 潞城市| 凤台县| 阿勒泰市| 泾阳县| 五大连池市| 万山特区| 湘潭县| 庆元县| 库车县| 扬中市| 西畴县| 阿拉善左旗| 普陀区| 尚义县| 娱乐| 金昌市| 扎赉特旗| 贺州市| 汾阳市| 谢通门县| 毕节市| 宁都县| 漳浦县| 潮州市| 拉萨市| 雅江县| 遂平县| 琼中| 镇远县| 小金县| 灵山县| 于都县| 龙里县| 扎囊县| 苗栗市| 屯昌县| 沁源县| 宜昌市| 嘉义市|