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

學無先后,達者為師

網站首頁 編程語言 正文

python模塊導入方式淺析步驟_python

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

首先啊,在python中我們熟知的py文件就是一個模塊,也就是換言之以py結尾的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、執行源文件代碼

2、產生一個新的名稱空間用于存放源文件執行過程中產生的名字

3、在當前執行文件所在的名稱空間中得到一個名字cs,該名字指向新創建的模塊名稱空間,若要引用模塊名稱空間中的名字,需要加上該前綴,如下

代碼示例:

"""導入cs模塊"""
import cs
"""引用cs模塊點中的x變量并重新賦值給當前名稱空間中的zqh,zqh就具備了cs模塊中x的值"""
zqh = cs.x
print(zqh)
""" 打印結果:一定要努力"""
"""調用cs的get函數"""
cs.get()
"""調用cs的change函數"""
cs.change()
"""使用模塊cs的類Foo來實例化,進一步可以執行obj.func()"""
obj = cs.Foo()
obj.func()

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

3.模塊的導入方式之from-import 語句

既然他們都是導入模塊的語句他們有何不同呢可能你們或許會有這個疑問

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

代碼示例

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()函數"""
get()
"""#即便是當前有文件有重名的x,修改的仍然是源文件中的x"""
change()
打印結果:
不然變垃圾
b.py的x
b.py的x

4.__all__變量用來控制*

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

""" 該列表中所有的元素必須!!!是字符串類型,每個元素!對應!cs.py中的一個名字"""
'''
學習中遇到問題沒人解答?小編創建了一個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.總結

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

模塊名應該遵循小寫形式,標準庫從python2過渡到python3做出了很多這類調整,比如ConfigParser、Queue、SocketServer全更新為純小寫形式。

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

欄目分類
最近更新