一.模塊
- 定義:有些功能開發者自己無法完成(例:與操作系統打交道,時間,1000取隨機數,壓縮文件,網絡通信),需要借用已經實現的函數/類來完成這些功能
- 模塊的分類:
Python包, 1,? ?內置函數:安裝python解釋器的時候跟著安裝的那些方法
2,自定義模塊:你寫的功能如果是一個通用功能,那么就把它當作一個模塊
Python不同包有相同文件模塊, 3,第三發模塊/擴展模塊:沒在安裝python解釋器的時候跟著安裝的那些方法
- 模塊的導入順序:先導入內置模塊,再導入第三方模塊,最后導入自定義模塊
- 模塊的重命名
import my_moudle as m
- 導入多個模塊
# import os,my_moudle,sys # 1 橫向導入 # PEF8規范 # 2 縱向導入 # import os # import sys # 所有的模塊都應該盡量放在這個文件的開頭
- 一個模塊只會被導入一次,不管你執行了多少次import。這樣可以防止導入模塊被一遍又一遍地執行。
# import my_moudle # 要導入一個py文件的名字,但不會加.py后綴名 # import my_moudle # 模塊的名字必須要滿足變量命名的規范,一般情況下,模塊都是小寫開頭
二.from...import
# from my_moudle import login # import login 知道了login這個名字,那么會在本文件中創建一個變量,指向這個模塊命名空間中的login函數 # login() # from my_moudle 會找到my_moudle模塊,開辟一塊屬于這個模塊的命名空間,執行函數# def login(): # print('hello world') # 當模塊中導入的變量與方法 和 本文件中的變量重名時,那么這個名字只代表最后一次對它賦值的變量或方法 # login()# from my_moudle import login# 導入了什么 就能使用什么# 不導入的變量 就不能使用# 不導入并不意味著不存在,而是沒有建立從文件到模塊的其他名字的引用 # print(name)
- 導入多個
# from my_moudle import login,name # print(name) # login()
- 重命名
# from my_moudle import login as l,name as n # print(n) # l()
- *導入模塊中的所有變量
# from my_moudle import * # print(name)
-
__all__ = [] 控制*導入的內容
#__all__ = ['login']
三.把模塊當作腳本運行
- 運行py文件的兩種方式:
# 1 以模塊的方式運行# import my_moudle # 2 以腳本的方式運行# 直接運行pycharm解釋器,cmd運行
# 在編寫py文件的時候 # 所有不在函數和類中封裝的內容都應該寫在 # if __name__ == '__main__':下面
# if __name__ == '__main__': # print('路過人間,世人都善變') # print(__name__,type(__name__)) # '__main__'/'my_moudle'
# 在使用反射自己模塊中的內容的時候 # import sys # sys.modules[__name__]
四.包
-
導入包 相當于執行了__init__.py文件
- 直接導入模塊
# import book.letter.bookworm # book.letter.bookworm# import book.letter.bookworm as bookworm # bookworm.get()# from book.letter import bookworm # bookworm.get()
- 絕對導入
# import sys # sys.path.append('D:\python_worksapce\day24\模塊導入的專題練習\core') # import main
- 相對導入
# import sys # lst = __file__.split('/') # base_path = '/'.join(lst[:-2]) # sys.path.append(base_path) # from core import main
如果使用了相對導入的模塊只能被當作模塊執行,不能被當作腳本執行
五.set去重機制
# class Employee: # def __init__(self,name,sex,age,partment): # self.name = name # self.sex = sex # self.age = age # self.partment = partment # # def __hash__(self): # return hash('%s%s' % (self.name,self.sex)) # # def __eq__(self, other): # if self.name == other.name and self.sex == other.sex: # return True # # employ_lst = [] # for i in range(200): # employ_lst.append(Employee('alex','male',i,'python開發部')) # for i in range(200): # employ_lst.append(Employee('wusir','male',i,'go開發')) # for i in range(200): # employ_lst.append(Employee('taibai','male',i,'爬蟲')) # # employ_lst = set(employ_lst) # # print(employ_lst) # for Person in employ_lst: # print(Person.__dict__)
?
?
?
?
?
?