1.什麼是模塊化開發
- 模塊化是代碼的組成的一種方式,Python中的每個文件就是模塊;
- 在Python中,文件有三種方式進行組織:Python文件(也就是Python模塊)、目錄、包;
- 包和目錄的區別:包內部多一個
__init__.py
文件,使得包可以被模塊導入,而目錄不能;
2.模塊化開發的好處
- 模塊化開發可以將不一樣的功能組裝在一塊兒,實現功能的累加,諸多功能組裝在一塊兒,最終造成項目;
3.如何進行模塊化開發以及注意點
- 功能模塊的分類;
- 功能模塊接口的定義;
- 異常捕獲;
4.Python文件與普通文件的區別
- Python中的文件也就是以.py後綴名結尾的文件,每個
.py
後綴名結尾的文件就是Python的一個模塊,可以被其餘模塊所導入;
5.Python包與目錄的區別
- 包和目錄的不一樣之處在於:包內部多一個
__init__.py
文件,使得包可以被模塊導入,而目錄不能;
6.絕對導入和相對導入
- 絕對導入:從python的搜索路徑中導入對應的包中的模塊;
from package import module
- 相對導入: 相對導入必須在包內部使用,且有相對導入的模塊,沒法直接運行,必須使用
python -m package.module
這樣的方式運行,或者被__main__
模塊導入,以後使用;
from . import module
7.使用all過濾模塊屬性的可見性
- 在模塊導入中,模塊的屬性都可以被導入,沒有私有和保護屬性的概念;
在其餘模塊中,均可以導入對應模塊,使用 from package import a, _a, __a
a = 'hello'
_a = 'hello'
__a = 'hello'
- 可是在使用
from package import *
的時候,保護屬性和私有屬性不會被導入;
- 使用
__all__ = ['add', 'a',]
能夠顯示申明可以被導入的屬性;
8.slot
class Student:
__slots__ = ('name', 'age')
def __init__(self):
self.name = 'Summer'
self.age = 22
def show(self):
print(self.name)
print(self.age)
stu= Student()
print(stu.name)
print(stu.age)
print(stu.__dict__) # 報錯,AttributeError
- 使用slot能夠加快屬性訪問速度;
- slot能夠減小內存消耗;
9.爲何要使用if __name__ == '__main__'
- 用於測試,功能調試,不讓測試代碼污染模塊;
-
if __name__ == '__main__'
就至關因而 Python 模擬的程序入口,因爲模塊之間相互引用,不一樣模塊可能都有這樣的定義,而入口程序只能有一個,哪一個入口程序被選中取決於 __name__
的值,__name__
是內置變量,用於表示當前模塊的名字,若是一個模塊被直接運行,其 __name__
值爲 __main__
;
參考:https://www.9xkd.com/user/pla...html