模塊化開發

1.什麼是模塊化開發

  • 模塊化是代碼的組成的一種方式,Python中的每個文件就是模塊;
  • 在Python中,文件有三種方式進行組織:Python文件(也就是Python模塊)、目錄、包;
  • 包和目錄的區別:包內部多一個__init__.py文件,使得包可以被模塊導入,而目錄不能;

2.模塊化開發的好處

  • 模塊化開發可以將不一樣的功能組裝在一塊兒,實現功能的累加,諸多功能組裝在一塊兒,最終造成項目;

3.如何進行模塊化開發以及注意點

  • 功能模塊的分類;
  • 功能模塊接口的定義;
  • 異常捕獲;

4.Python文件與普通文件的區別

  • Python中的文件也就是以.py後綴名結尾的文件,每個.py後綴名結尾的文件就是Python的一個模塊,可以被其餘模塊所導入;

5.Python包與目錄的區別

  • 包和目錄的不一樣之處在於:包內部多一個__init__.py文件,使得包可以被模塊導入,而目錄不能;

6.絕對導入和相對導入

模塊化開發-01.png

  • 絕對導入:從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

相關文章
相關標籤/搜索