天天看點

Python學習記錄(一) import 與 from...import以及from . import、import as差別

import 與 from...import基本文法(w3school)

在 python 用 import 或者 from...import 來導入相應的子產品。

将整個子產品(somemodule)導入,格式為: import somemodule

從某個子產品中導入某個函數,格式為: from somemodule import somefunction

從某個子產品中導入多個函數,格式為: from somemodule import firstfunc, secondfunc, thirdfunc

将某個子產品中的全部函數導入,格式為: from somemodule import *

導入 sys 子產品

import sys

print('================Python import mode==========================')

print ('指令行參數為:')

for i in sys.argv:

  print (i)

print ('\n python 路徑為',sys.path)

導入 sys 子產品的 argv,path 成員

from sys import argv,path # 導入特定的成員

print('================python from import===================================')

print('path:',path) # 因為已經導入path成員,是以此處引用時不需要加sys.path

from . import

from . import, “.”  代表使用相對路徑導入,即從目前項目中尋找需要導入的包或函數。

具體可以參見:python的包導入問題(一)from . import 的使用

import as

用于引入一個子產品的同時為該子產品取一個别名。

使用文法:import multiprocessing as mp 表示引入multiprocessing子產品并取别名為mp,在該檔案的後續調用中mp就相當于是multiprocessing。

import 與 from...import差別

python中有兩種導入子產品的方式,一種是import xxx,另一種是from xxx import yyy,兩者的差別在于,

第一種僅僅導入一個子產品,并且将該子產品執行了一遍,if __main__ =="__main__"裡面的沒有執行。同時,有在目前的命名空間中導入變量,需要通過xxx.yyy的方式使用導入子產品中的變量、函數、類等;

第二種則将子產品中的變量yyy導入了目前命名空間,是以使用時可以直接以yyy調用,使用這種導入方法時,需要注意目前的命名空間是否有重名的,from xxx import *這種方式盡量不要使用,因為這樣就破壞了對命名空間的管理。使用from xxx import *時是不能導入以單下劃線開頭的保護屬性和以雙下劃線開頭的私有屬性的。

原文連結:https://blog.csdn.net/shiniantianlang/article/details/90665736