模塊的用法

模塊大總結

'''
模塊的概念:一系列功能的集合體
爲何要使用模塊:使用模塊後的優勢:1文件角度考慮代碼,2拿來主義,提供開發效率
py中實現模塊的方式:4種,重點:py文件


定義模塊:新建一個py文件:文件名就是模塊名,儘可能採用全英文,能夠結合數字與下劃線
使用模塊:能夠不用起別名,但一旦起別名,原名字就不能再使用了
    -- import 模塊名 as 別名
    -- from 模塊名 import 名字 as 別名
    
自執行文件與模塊區分:__name__
'''

函數回調

# 怎麼樣提早寫出函數的調用:在另外一個函數中寫出函數的調用
# 再去考慮函數體的實現:根據實際的需求

   示例:

def my_sleep(sec):
    import time
    current_time = time.time()
    while time.time() - current_time < sec:
        pass


def download(fn=None):
    print('開始下載')
    my_sleep(1)
    data = '下載獲得的信息'
    print('下載完成')
    if fn:  # 若是外界提供了回調函數的實現體,再去調用,不然就只完成默認下載的功能
        res = fn(data)  # 下載成功的回調函數,具體完成什麼事以後決定
        if res:
            print('操做成功')
            return True
        print('操做失敗')
        return False
    return data  # 沒有外界具體操做下載結果的功能代碼,就將下載結果直接返回

# res = download()
# print(res)

def download_action(data):
    print('往文件中寫')
    with open('1.txt', 'w', encoding='utf-8') as f:
        f.write(data)
        return True
    return False

res = download(download_action)
print(res)

# 下載成功後的動做能夠多樣化
def download_action1(data):
    print(data)
    return True
res = download(download_action1)
print(res)

模塊

'''
模塊:一系列功能的集合體

定義模塊:建立一個py文件就是一個模塊,該py文件名就是模塊名

使用模塊:在要使用模塊的文件中,經過  import 模塊名  來導入模塊
'''

'''
import module
# 1.編譯執行模塊所對應的py文件,造成對應的pyc文件
# 2.產生該模塊本身的全局名稱空間
# 3.在使用該模塊的全局名稱空間中產生一個名字(導入的模塊名)
'''

'''
# 注:
# 1.每個文件都會產生本身的全局名稱空間,且相互不影響
# 2.屢次導入,只會編譯執行模塊一次,將其加載到內存,以後的都是直接對名字的引用
'''

'''
優勢:
1.從文件級別組織代碼,是同特性的功能能統一管理
2.可使用系統或第三方模塊(拿來主義),來提升開發效率
'''

起別名

# 經過as關鍵字能夠給模塊起別名: 模塊名一旦起別名,原模塊名就不能再使用
# 1.能夠簡化模塊名字
import mmmmmmmmmmmmmmmmmm3 as my_m3
print(my_m3.num)
# 2.能夠統一功能
cmd = input('數據庫選擇 1:mysql | 2:oracle:')
if cmd == '1':
    import mysql as db
    # mysql.excuse()
else:
    import oracle as db
    # oracle.excuse()
db.excuse()

from導入

from 模塊名 import 名字1, 名字2, ..., 名字n
# 能夠指名道姓導入模板中全部想導入的名字


from  模塊名 import *
# 導入的是模塊中的__all__這個列表
# 1、系統默認該列表不會收錄_開頭的名字
# 2、能夠自定義__all__列表來規定外界經過*能夠導入的名字


# 不建議直接導入 *,由於可讀性差,且極容易出現變量重名
# 模塊中有 名字a
from  模塊名 import *
# 可使用模塊中的a
a = 20
# 模塊中的a就被覆蓋了,且在代碼上還不能直接看出


# 其別名
from 模板名 import 名字1 as 別名1, ..., 名字n as 別名n

自執行與模塊區別

# __name__:
# 1.在py文件做爲模塊被使用時,__name__爲模塊名
# 2.在py文件自執行時,__name__爲字符串 '__main__'

print("共有邏輯")
if __name__ == '__main__':
    # 全部自執行的邏輯
    print("m6: 我是自執行的")
    a = 10  # 產生的是全局的名字
else:
    # 全部模塊的邏輯
    print("m6: 我被導入執行的")
    print(a)  # 會報錯:走else就不可能走if,因此a壓根沒產生
相關文章
相關標籤/搜索