速戰速決 Python - python 模塊,包: 基礎

速戰速決 Python https://github.com/webabcd/PythonSample
作者 webabcd

速戰速決 Python - python 模塊,包: 基礎

示例如下:

module/module1.py

def a():
    print("module1_a")

def b():
    print("module1_b")

if __name__ == '__main__': # 程序是在該模塊自身運行的
   print('module1_沒人引用我,我是主模塊')
else: # 程序是在其它地方運行的,那個地方引用了這個模塊
   print('module1_我被引用了,我不是主模塊')

module/module2.py

def a():
    print("module2_a")

def b():
    print("module2_b")

if __name__ == '__main__': # 程序是在該模塊自身運行的
   print('module2_沒人引用我,我是主模塊')
else: # 程序是在其它地方運行的,那個地方引用了這個模塊
   print('module2_我被引用了,我不是主模塊')

module/demo.py

# 導入 module1.py(注:在一個文件中即使你多次 import 一個模塊,這個模塊也只會被導入一次)
import module1
# 然後就可以調用 module1 中的函數了(需要指定模塊名)
module1.a()
# 可以給導入的模塊或模塊中的函數指定一個別名,之後就可以直接使用這個別名了
x = module1.b
x()


# 導入 module2.py 中的 a 函數和 b 函數,同時爲 b 函數指定一個別名
from module2 import a, b as y # 如果全部導入的話就 from module2 import *
# 然後就可以調用 module2 中的函數了(不需要指定模塊名)
a()
y()


# 通過包名的方式導入
import player.audio.codec
# 調用時需要指定全名
player.audio.codec.show()


# 從指定的包名中導入指定的模塊,或從指定的模塊全名中導入指定的函數,同時可以指定別名
from player.video import codec as videoCodec
# 調用時不需要指定全名
videoCodec.show()


'''
關於上面的通過包名方式導入的說明:
1、要求包的各個目錄只存在一個名爲 __init__.py 的文件,這樣纔會被認爲是一個包
2、導入時是支持星號的,類似這種 from xxx import *
   如果要爲 * 定義自定義邏輯,則需要在每個目錄中的 __init__.py 文件中寫一行類似如下的代碼(列表中配置的是當前目錄中可以通過 * 導入的 py 文件的名稱)
   __all__ = ["aaa", "bbb", "ccc"]
'''

速戰速決 Python https://github.com/webabcd/PythonSample
作者 webabcd

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章