亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Python易學就會(二)import的用法

YPHP / 1116人閱讀

摘要:所以,學會用好就成為我們學習需要重點了解的第一個內容。模塊的作用,就是可以把一組相關的功能,集成在一個文件中,方便在其它應用中通過引入來調用。為避免這種相互覆蓋而出錯的情況,時還是盡量使用模塊名的方式來訪問,當然可以用別名。

  前文有敘,Python是開放型社群化的開發(fā)語言,所以我們在編寫Python程序時,不可避免的需要用到別人已經(jīng)做好的、成型的類庫,這些類庫可能是圖形處理、可能是網(wǎng)絡通訊、可能是數(shù)據(jù)分析等等,反正不需要自己來重新從最底層開始再寫一遍,這樣就需要用到import 來引入外來的拓展包。
  能否找到更多的第三方庫、拓展包,也因此成為評判一個編程語言的開發(fā)社區(qū)是否活躍、是否易用的一個標志。所以,學會用好import就成為我們學習Python需要重點了解的第一個內容。
  Python能通過import 引入的,有模塊(module)和包(package)兩種。
  模塊(module)的作用,就是可以把一組相關的功能,集成在一個 .py 文件中,方便在其它應用中通過 import 引入來調用。比如跟時間相關的操作,都集成在一個 module 中,使用時這樣來操作。

#引入time模塊
import time
#調用time模塊的sleep()方法
time.sleep(1)

  不同人寫的模塊(module)有可能會重名,例如A寫了個time.py模塊,B也寫了個time.py,他們中間各有一個方法非常好用,對于C來說,就容易混淆了。因此有了包(package)的概念。
  包(package)是在module的外面加了一層,如

#引入A的time模塊
import A.time
#引入B的time模塊
import B.time
#調用A的time模塊的sleep()方法
A.time.sleep(1)
#調用B的time模塊的方法
B.time.setTime(0)

  就相當于JAVA中的PACKAGE。物理上體現(xiàn)在:模塊(module)可以放在同一目錄下,而包(package)一般放在以包名命名的文件夾中。下面以例子來解釋。

  新建 lmModule.py,內容如下

print("From lmModule.py")

  運行一下,可以看到正常打印

From lmModule.py

  在同一目錄中再新建一個main01.py,內容如下

import lmModule

print("From main01.py")

  運行一下,可以看到打印出來:

From lmModule.py
From main01.py

  由此可見,import實際上是把要導入的程序預先加載在了主程序的前部,兩者的內容都得到了執(zhí)行。

  修改一下lmModule.py的內容,添加一個變量和一個方法:

print("From lmModule.py")

lmModule_var = "LmModule Var"

def lmModule_method():
    print("From lmModule.py lmModule_method")

  再修改一下main01.py,來嘗試調用一下模塊的變量和方法:

import lmModule

print("From main01.py")

print(lmModule.lmModule_var)

lmModule.lmModule_method()

  運行發(fā)現(xiàn),使用“模塊名+.”的方式,可以很好的實現(xiàn)調用,運行結果如下:

From lmModule.py
From main01.py
LmModule Var
From lmModule.py lmModule_method

  再次修改main01.py,嘗試不同的import方法:

from lmModule import lmModule_var, lmModule_method

print("From main01.py")

print(lmModule_var)

lmModule_method()

  用“from 模塊名 import 部分變量或方法”這種方式,可以從模塊中引入特定的的變量或方法,這些變量或方法可以直接使用,就像程序自己定義的一樣,再不需要用“模塊名+.”來訪問。如果需要引入所有的變量或方法,可以改寫成通配符*,執(zhí)行效果一樣。

from lmModule import *

print("From main01.py")

print(lmModule_var)

lmModule_method()

  接下來,新建一個目錄dir,在dir下面新建一個“dirModule.py”,內容如下:

print("From dir dirModule")

  修改main01.py,內容如下,以引入dir目錄下的dirModule模塊:

from lmModule import *

from dir.dirModule import *

print("From main01.py")

print(lmModule_var)

lmModule_method()

  執(zhí)行發(fā)現(xiàn),把模塊定義在下級目錄中,也是可以順利import到的,執(zhí)行效果如下

From lmModule.py
From dir dirModule
From main01.py
LmModule Var
From lmModule.py lmModule_method

  修改dirModule.py,在其中加入一個變量和一個方法的定義,內容如下:

print("From dir dirModule")

lmModule_var = "DirModule Var"

def lmModule_method():
    print("From dir dirModule.py lmModule_method")

  執(zhí)行main01.py,可以看到,當先后import的兩個模塊中,有相同的變量定義或方法定義時,前面先import的會被后import的覆蓋,執(zhí)行效果如下:

From lmModule.py
From dir dirModule
From main01.py
DirModule Var
From dir dirModule.py lmModule_method

  如果修改main01.py,交換import的順序,可以看到,執(zhí)行的結果不同,先import的會被后import的覆蓋,你可以自己試試。

  為避免這種相互覆蓋而出錯的情況,import 時還是盡量使用“模塊名+.”的方式來訪問,當然可以用別名。修改main01.py如下:

import dir.dirModule as d

import lmModule as h

print("From main01.py")

print(h.lmModule_var)

d.lmModule_method()

  執(zhí)行效果如下:

From dir dirModule
From lmModule.py
From main01.py
LmModule Var
From dir dirModule.py lmModule_method

  在dir目錄下新建一個“secModule.py"文件,內容如下:

print("From dir secModule")

secModule_var = "SecModule Var"

  修改main01.py,增加對于secModule模塊的調用,內容如下:

import dir.dirModule as d
import dir.secModule
import lmModule as h

print("From main01.py")

print(h.lmModule_var)

d.lmModule_method()

print(dir.secModule.secModule_var)

  執(zhí)行一下,可以看到secModule模塊的內容正常被引入了,secModule模塊中定義的變量也可以使用。

From dir dirModule
From dir secModule
From lmModule.py
From main01.py
LmModule Var
From dir dirModule.py lmModule_method
SecModule Var

  好,那么如果想一次性導入dir目錄下的多個文件,可行嗎,經(jīng)測試 import dir.* 是不好使的;import dir 更是不好使。那怎么辦呢?
  該包(package)上場了!

  在dir目錄下新建“__init__.py”,內容如下:

from . import secModule
from . import dirModule

  有了這個“__init__.py”,就把dir由一個目錄,變成了一個包(package)。Python只要在目錄下找到這個文件,就會按package來處理,下面我們修改一下main01.py的內容:

import dir
import lmModule as h

print("From main01.py")

print(h.lmModule_var)

dir.dirModule.lmModule_method()

print(dir.secModule.secModule_var)

  執(zhí)行一下,可見通過import一個包dir,可以將包中的所在module都引入進來。執(zhí)行效果如下:

From dir secModule
From dir dirModule
From lmModule.py
From main01.py
LmModule Var
From dir dirModule.py lmModule_method
SecModule Var

  當然__init__.py中也可以定義變量和方法。而且,如果“__init__.py”中包含了變量“__all__”,那么將只有“__all__”中所指定的變量或方法能被外部訪問!“__all__”中所指定的變量或方法相當于JAVA中的public。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/42943.html

Failed to recv the data from server completely (SIZE:0/8, REASON:closed)