python模塊導入方式淺析步驟
首先啊,在python中我們熟知的py文件就是一個模塊,也就是換言之以py結(jié)尾的Python源代碼文件都是一個模塊我就簡單概括一下了直接上代碼
1.模塊的使用
使用模塊里的工具前需要導入模塊,
模塊的導入方式之import·······
單個:
import 模塊名
多個:
import 模塊1
import 模塊2
import 模塊1,模塊2(一般不推薦使用)(多個)
代碼示范:
比方說你有一個py文件我們暫且叫他測試文件cs.py
#文件名:cs.py x='一定要努力' def get(): print(x) def change(): global x x=0 class Foo: def func(self): print('不然變垃圾')
2.導入模塊并使用
要想在另外一個py文件中引用cs.py中的功能,需要使用import cs,首次導入模塊會做三件事:
1、執(zhí)行源文件代碼
2、產(chǎn)生一個新的名稱空間用于存放源文件執(zhí)行過程中產(chǎn)生的名字
3、在當前執(zhí)行文件所在的名稱空間中得到一個名字cs,該名字指向新創(chuàng)建的模塊名稱空間,若要引用模塊名稱空間中的名字,需要加上該前綴,如下
代碼示例:
"""導入cs模塊""" import cs """引用cs模塊點中的x變量并重新賦值給當前名稱空間中的zqh,zqh就具備了cs模塊中x的值""" zqh = cs.x print(zqh) """ 打印結(jié)果:一定要努力""" """調(diào)用cs的get函數(shù)""" cs.get() """調(diào)用cs的change函數(shù)""" cs.change() """使用模塊cs的類Foo來實例化,進一步可以執(zhí)行obj.func()""" obj = cs.Foo() obj.func()
注意:加上cs.作為前綴就相當于指名道姓地說明要引用cs.py名稱空間中的名字,所以肯定不會與當前執(zhí)行文件所在名稱空間中的名字相沖突,并且若當前執(zhí)行文件的名稱空間中存在x,執(zhí)行cs.get()或cs.change()操作的都是源文件中的全局變量x。
3.模塊的導入方式之from-import 語句
既然他們都是導入模塊的語句他們有何不同呢可能你們或許會有這個疑問
from…import…與import語句基本一致,唯一不同的是:使用import cs導入模塊后,引用模塊中的名字都需要加上cs.作為前綴,而使用from cs import x,get,change,Foo則可以在當前執(zhí)行文件中直接引用模塊cs中的名字,還有這種:from cs import * 把cs中所有的名字都導入到當前執(zhí)行文件的名稱空間中,在當前位置直接可以使用這些名字
代碼示例
cs.py: x='悟空' def get(): print(x) def change(): global x x='b.py的x' class Foo: def func(self): print('不然變垃圾') change() aa=Foo() aa.func() get() a.py: """導入cs模塊,并且導入cs模塊中的方法導入當前名稱空間""" from cs import get,change,x x='a.py的x' """直接使用模塊cs中的x賦值給zqh""" zqh=x """直接使用測試文件中的get()函數(shù)""" get() """#即便是當前有文件有重名的x,修改的仍然是源文件中的x""" change() 打印結(jié)果: 不然變垃圾 b.py的x b.py的x
4.__all__變量用來控制*
模塊的編寫者可以在自己的文件中定義__all__變量用來控制*代表的意思
""" 該列表中所有的元素必須?。?!是字符串類型,每個元素!對應!cs.py中的一個名字""" ''' 學習中遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流群:711312441 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' cs.py: __all__=['x','get','change'] x='悟空' def get(): print(x) def change(): global x x='b.py的x' class Foo: def func(self): print('不然變垃圾') a.py: """這樣我們在另外一個文件中使用*導入時,就只能導入__all__定義的名字了""" from cs import * """__all__列表存在get可用""" print(get()) """__all__列表存在change可用""" print(change()) """__all__列表存在x可用""" print(x) """__all__列表不存在Foo不可用""" aaa=Foo() #報錯NameError: name 'Foo' is not defined
導入語法as(起別名)
import cs as zqh #為導入的模塊cs在當前位置起別名zqh,以后再使用時就用這個別名zqh zqh.x zqh.get()
還可以為為導入模塊的某一個名字起一個別名
例如:
from cs import get as cs_get cs_get()
5.總結(jié)
在Python中模塊也屬于第一類對象,可以進行賦值、以數(shù)據(jù)形式傳遞以及作為容器類型的元素等操作。
模塊名應該遵循小寫形式,標準庫從python2過渡到python3做出了很多這類調(diào)整,比如ConfigParser、Queue、SocketServer全更新為純小寫形式。
到此這篇關(guān)于python模塊導入方式淺析步驟的文章就介紹到這了,更多相關(guān)python模塊導入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python數(shù)據(jù)庫開發(fā)之MongoDB安裝及Python3操作MongoDB數(shù)據(jù)庫詳細方法與實例
這篇文章主要介紹了python數(shù)據(jù)庫開發(fā)之MongoDB安裝及Python3操作MongoDB數(shù)據(jù)庫詳細方法與實例,需要的朋友可以參考下2020-03-03詳解Python中RegEx在數(shù)據(jù)處理中的應用
正則表達式(Regular?Expressions,簡稱?RegEx)是一種強大的文本匹配和搜索工具,它在數(shù)據(jù)處理、文本解析和字符串操作中發(fā)揮著關(guān)鍵作用,下面就跟隨小編一起來了解一下RegEx的具體使用吧2024-01-01python django model聯(lián)合主鍵的例子
今天小編就為大家分享一篇python django model聯(lián)合主鍵的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08手把手教你jupyter?notebook更換環(huán)境的方法
在日常使用jupyter-notebook時,可能會碰到需要切換不同虛擬環(huán)境的場景,下面這篇文章主要給大家介紹了關(guān)于jupyter?notebook更換環(huán)境的方法,需要的朋友可以參考下2023-05-05