一.五種函數調用方法(不夠准確,全面,但初學者可以先這樣理解)
1.是自建於函數位於builtins模塊中的函數,可直接調用.具體那些函數?可以通過dir(_builtins_)查看,共計152個('len(dir(_builtins_))').
2.是通過'import'模塊調用.如:inport Bood,調用Boob模塊中的函數(如toch時),使用的方式是Boob.toch(),Boob.toch.這種方式的缺點是需要頻繁的寫被調用的模塊.
3.是通過'from 模塊 imprt x1 x2 x3 ...'.如:from sys import argv 或者__name__.意思是直接將模塊sys中的argv或者__name__函數導入到擋牆模塊(文件)中,接下來可以直接使用argv,而不需要這樣sys.argv使用.實際上是在當前模塊中創建了新變量argv或者__name__,只是在賦值前兩個變量引用同一個值,一個隱含的賦值過程.若引用了屬性可變動的變量,如屬性是列表,需特別小心.缺點是變量及值容易弄混:如調用很多的話.需要在后面加很多X1,X2....
4.是通過'form 模塊 import *' 調用.如:form sys import *.這種方式可以調用被導入模塊的所有變量(若不想被創建同名變量,如在sys里,可以用下划線作為開頭命名變量,象__doc__就不會被調用;還可以在模塊中,如在sys里,定義一個__all__變量,用字符串列出允許被from sys import *調用的名稱,__all__=[x1,x2,..])此方法雖然不被官方推薦,因為“判定一個特殊的函數或屬性是從哪來的有些困難,並且會造成調試和重構都更困難”。但這種方法對初學者或是編制代碼少的文件來說,是最直接最粗暴也是最方便的方法。
5.是通過"import 模塊 as"。如:import sys as A。給模塊sys起個別名叫A,幫助記憶。在當前所在模塊的module實例上sys名稱失效,只認A。此方法缺點是易發生命名空間沖突。
二.import語句的作用
import就是用來導入模塊的,它可以出現在程序中的任何位置。但需要注意的是最好把導入模塊放在代碼的開頭,因為這和作用域有關系。這樣解釋器在執行語句時,遵循作用域原則。即:如果在頂層導入了模塊,它的作用域是全局的;如果在函數內部導入了模塊,它的作用域只是局部的,不能被其它函數使用;如果其它函數也需要調用這個模塊,還需要再次導入比較麻煩。
import語句導入模塊時,最好按照這樣的順序:1、python標准庫模塊;2、python第三方模塊;3、自定義模塊
當import某個模塊而使得指定的.py(如sys.py)文件被加載時,python解釋器會為它創建一個module實例,並創建一個模塊名稱來引用它,如dir(sys),實際上是查詢SYS名稱引用的module實例上有哪些屬性名稱可以存取。想要知道當前已加載的module實例的名稱與實例有哪些,可通過sys.modules,這是個字典對象,鍵的部分是模塊名稱,值的部分是module實例。若調用dir()未指定任何module實例,則會查詢當前所在模塊的module實例上擁有的名稱。