Python-44章 模塊

什麼是模塊

1.寫好的py文件
2.一杯變異爲共享庫或者dll或C或者C++的擴展(Python是C語言寫的,又叫CPython,所以能調用C)
3.包好一組模塊的包
4.使用C編寫並連接到Python解釋器的內置模塊

首先,在同一目錄下,創建 yitian(倚天)文件

文件內容:
print("啊啊啊啊~")
a = 10
main_person_man = "張無忌"
main_person_woman = "趙敏"
bad_person_one = "成昆"
bad_person_two = "周芷若"

def fight_on_light_top():
    print(f"{main_person_man}粉碎了{bad_person_one}的陰謀詭計")

def fight_on_shaolin():
    print(f"{main_person_man}擊敗了{bad_person_two}")
def end():
    print(f"{main_person_man}和{main_person_woman}過上了沒羞沒臊的幸福生活")

print("啊啊啊啊~啊啊啊啊")

然後相同目錄下創建jinyong.py(金庸)

#import yitian
# pycharm 報錯,pycharm路徑是在絕對路徑下,例如:'J:\\Python文件',這個報錯是pycharm報錯而不是Python報錯
# 導入模塊的時候,我們看到的是把模塊中的代碼執行了一遍,但是如果已經導入過模塊,後面再導入就不會跑代碼了
# 模塊的搜索路徑是 sys.path
#import sys
#print(sys.path)
# 輸出:['J:\\Python文件\\python入門\\week5\\模塊'
# 避免報錯:pycharm 右上角 file -> open -> 新窗口中找到當前py文件的目錄,選中 -> 點擊OK,在新窗口中打開剛纔的文件,沒有報錯

導入模塊執行的操作

# 1.判斷當前模塊是否導入過,如果導入就不會重新導入
# 2.如果沒有,首先開闢一塊內存空間,把改模塊中的代碼放在開闢中的空間中,運行模塊代碼.
# 3. 把改文件名作爲當前名稱空間的名字,(前提是沒有as)

# 如果想拿到模塊中某個變量,例如變量 a ,需要:
import yitian
print(yitian.a)
# 輸出 : 10

#as
import yitian as yt # as : 別名,使用後就不能用之前的文件名,因爲名稱空間叫別名了.
print(yt.a)
# 輸出 : 10
import yitian
print(yitian.main_person_man)
print(f"女主角是{yitian.main_person_woman}")
yitian.fight_on_light_top()
yitian.fight_on_shaolin()
yitian.end()

修改其他變量的值

# 接下來,jinyong想改一改yitian的內容
import yitian as yt
# 從另一個模塊中改變另一個模塊的變量的值只能用這種方式
yt.main_person_man = "劉老六"
print(f"{yt.main_person_man}和{yt.main_person_woman}過上了沒羞沒臊的生活")
# 輸出 : 劉老六和趙敏過上了沒羞沒臊的生活

global

import yitian as yt
def gai():
    global main_person_man
    main_person_man = "吳老五"

    yt.fight_on_light_top()
gai()
yt.fight_on_light_top()
# 此時,不管函數內部還是外面都沒有改
# global : 當前模塊的全局

修改yitian文件

-------------------插入:------------------
def gai():
    global main_person_man
    main_person_man = "齊老七"
----------修改jinyong文件:------------
import yitian
yitian.gai()
yitian.end()
# 輸出 : 齊老七和趙敏過上了沒羞沒臊的幸福生活
# 此時修改的還是全局,並不只是那一個模塊
# global 當前模塊的全局
main 修改yitian文件
print(__name__) #名字,可能是yitian[當前文件名,當做模塊被調用時],可能是__main__[當前自己執行的時候]
if __name__ == '__main__': #輸入mian,按下tab,自動填寫  判斷如果當前文件是啓動文件,則執行,被調用時則不執行
    print("Yes")

import 其他用法

# 一次性導入多個模塊
# 導入模塊時的順序 內置模塊 -> 第三方庫 ->你自己定義的模塊
import yitian as yt,shediao as sd
sd.huashenlunjian()
from xxx import xxx
# 此時導入的只有一個功能
from yitian import fight_on_shaolin
main_person_man="火工頭陀" 
# 此處雖然定義了模塊中的變量但沒有生效,因爲只導入一個部分,還是用的自己的變量
fight_on_shaolin()
出現相同函數時
# 出現相同函數時
from yitian import fight_on_shaolin
main_person_man="火工頭陀"
def fight_on_shaolin():
    print("我要幹少林")
fight_on_shaolin() # 輸出 : 我要幹少林
導入多個模塊相同部分
# 導入多個不同模塊相同的部分
from yitian import fight_on_shaolin
from shediao import fight_on_shaolin
fight_on_shaolin() # 輸出第二次的 : 劉老六打上少林大戰齊老七
# 第二次導入把第一次導入的覆蓋掉了

from yitian import * #可以導入一大堆模塊,極度不推薦,容易產生衝突

模塊部分注意事項:自己寫的py文件不要和系統模塊重名!!!

https://blog.csdn.net/weixin_44455125/article/details/103755191

這個前面說過,但還是強調一下,會報一個調用自己錯誤!可看這篇

發佈了130 篇原創文章 · 獲贊 11 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章