日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

python模塊導(dǎo)入方式淺析步驟_python

作者:Python熱愛者 ? 更新時(shí)間: 2022-11-22 編程語言

首先啊,在python中我們熟知的py文件就是一個(gè)模塊,也就是換言之以py結(jié)尾的Python源代碼文件都是一個(gè)模塊我就簡單概括一下了直接上代碼

1.模塊的使用

使用模塊里的工具前需要導(dǎo)入模塊,

模塊的導(dǎo)入方式之import·······

單個(gè):
import 模塊名
多個(gè):
import 模塊1
import 模塊2
import 模塊1,模塊2(一般不推薦使用)(多個(gè))

代碼示范:

比方說你有一個(gè)py文件我們暫且叫他測試文件cs.py

#文件名:cs.py
x='一定要努力'
def get():
    print(x)
def change():
    global x
    x=0
class Foo:
    def func(self):
       print('不然變垃圾')

2.導(dǎo)入模塊并使用

要想在另外一個(gè)py文件中引用cs.py中的功能,需要使用import cs,首次導(dǎo)入模塊會(huì)做三件事:

1、執(zhí)行源文件代碼

2、產(chǎn)生一個(gè)新的名稱空間用于存放源文件執(zhí)行過程中產(chǎn)生的名字

3、在當(dāng)前執(zhí)行文件所在的名稱空間中得到一個(gè)名字cs,該名字指向新創(chuàng)建的模塊名稱空間,若要引用模塊名稱空間中的名字,需要加上該前綴,如下

代碼示例:

"""導(dǎo)入cs模塊"""
import cs
"""引用cs模塊點(diǎn)中的x變量并重新賦值給當(dāng)前名稱空間中的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來實(shí)例化,進(jìn)一步可以執(zhí)行obj.func()"""
obj = cs.Foo()
obj.func()

注意:加上cs.作為前綴就相當(dāng)于指名道姓地說明要引用cs.py名稱空間中的名字,所以肯定不會(huì)與當(dāng)前執(zhí)行文件所在名稱空間中的名字相沖突,并且若當(dāng)前執(zhí)行文件的名稱空間中存在x,執(zhí)行cs.get()或cs.change()操作的都是源文件中的全局變量x。

3.模塊的導(dǎo)入方式之from-import 語句

既然他們都是導(dǎo)入模塊的語句他們有何不同呢可能你們或許會(huì)有這個(gè)疑問

from…import…與import語句基本一致,唯一不同的是:使用import cs導(dǎo)入模塊后,引用模塊中的名字都需要加上cs.作為前綴,而使用from cs import x,get,change,Foo則可以在當(dāng)前執(zhí)行文件中直接引用模塊cs中的名字,還有這種:from cs import * 把cs中所有的名字都導(dǎo)入到當(dāng)前執(zhí)行文件的名稱空間中,在當(dāng)前位置直接可以使用這些名字

代碼示例

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:
"""導(dǎo)入cs模塊,并且導(dǎo)入cs模塊中的方法導(dǎo)入當(dāng)前名稱空間"""
from cs import get,change,x
x='a.py的x'
"""直接使用模塊cs中的x賦值給zqh"""
zqh=x
"""直接使用測試文件中的get()函數(shù)"""
get()
"""#即便是當(dāng)前有文件有重名的x,修改的仍然是源文件中的x"""
change()
打印結(jié)果:
不然變垃圾
b.py的x
b.py的x

4.__all__變量用來控制*

模塊的編寫者可以在自己的文件中定義__all__變量用來控制*代表的意思

""" 該列表中所有的元素必須!!!是字符串類型,每個(gè)元素!對應(yīng)!cs.py中的一個(gè)名字"""
'''
學(xué)習(xí)中遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流群:711312441
尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和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:
"""這樣我們在另外一個(gè)文件中使用*導(dǎo)入時(shí),就只能導(dǎo)入__all__定義的名字了"""
from cs import *
"""__all__列表存在get可用"""
print(get())
"""__all__列表存在change可用"""
print(change())
"""__all__列表存在x可用"""
print(x)  
"""__all__列表不存在Foo不可用"""
aaa=Foo()    #報(bào)錯(cuò)NameError: name 'Foo' is not defined

導(dǎo)入語法as(起別名)

import cs as zqh 
#為導(dǎo)入的模塊cs在當(dāng)前位置起別名zqh,以后再使用時(shí)就用這個(gè)別名zqh
zqh.x
zqh.get()

還可以為為導(dǎo)入模塊的某一個(gè)名字起一個(gè)別名

例如:

from cs import get as cs_get
cs_get()

5.總結(jié)

在Python中模塊也屬于第一類對象,可以進(jìn)行賦值、以數(shù)據(jù)形式傳遞以及作為容器類型的元素等操作。

模塊名應(yīng)該遵循小寫形式,標(biāo)準(zhǔn)庫從python2過渡到python3做出了很多這類調(diào)整,比如ConfigParser、Queue、SocketServer全更新為純小寫形式。

原文鏈接:https://blog.csdn.net/qdPython/article/details/127195891

欄目分類
最近更新