模塊一

 

一、生成器表達式


  統計文件中字符的個數:
  #a.txt
  # hello
  # world

  with open('a.txt',mode='rt',encoding='utf-8') as f:
    res = sum(len(line) for line in f)
    print(res)

  會得到11,其中包括換行符

二、模塊的基礎知識

  1.什麼是模塊


    模塊就是一系列功能的集合體

  2.模塊的四個通用類型


    2.1 使用python編寫的.py文件
    2.2 已被編譯爲共享庫或DLL的C或C++擴展
    2.3 把一系列模塊組織到一塊的文件夾,文件夾下有一個__init__.py文件,該文件夾稱之爲包
    2.4 使用C編寫並鏈接到python解釋器的內置模塊

  3.模塊的三種來源


    3.1 內置模塊
    3.2 第三方模塊
    3.3 自定義模塊

  4.爲何要用模塊


    4.1 使用內置模塊或者第三方模塊的好處是:拿來主義,極大的提升開發效率
    4.2 使用自定義模塊的好處是:將程序各部分組件共用的功能提取出來放到一個模塊裏,其他的組件通過導入的方式使用該模塊,該模塊即自定義的模塊,好處是可以減少代碼冗餘

 

三、模塊import的使用

 

1、 首次導入模塊會發生三件事


  重複導入會直接引用內存中已經加載好的結果

  1.1 會產生一個模塊的名稱空間
  1.2 執行spam.py文件的內容,將產生的名字丟到模塊的名稱空間裏
  1.3 在當前執行文件中拿到一個名字spam,該名字指向模塊的名稱空間

  #spam.py
  #money=1000

  #aaa.py
  import spam
  money=10
  print(spam.money)

  執行的結果:1000

 

2、爲模塊起別名 as


  對編寫可擴展的代碼很有用
  import spam as sm
  print(sm.money)
  和print(spam.money)是一樣的



3、在一行導入多個模塊

 

  import spam,os,time
  中間用逗號隔開就好

 


三、from...import...的使用



1、 from spam import money,read1


  意思就是可以調用spam中的money和read1
  和import一樣,首次調用會發生同樣的三件事,支持as,支持一行導入多個名字

 

2、 from...import...和import對比


  import:

    優點:指名道姓地問某一個名稱空間要名字,不會與當前執行文件名稱空間中的名字衝突
    缺點:引用模塊中的名字必須加前綴(模塊名.),使用不夠簡潔

  from...import:
    優點:引用模塊中的名字不用加前綴(模塊名.),使用更爲簡潔
    缺點:容易與當前執行文件名稱空間中的名字衝突

3、from...import...*


  from spam import * 把spam中所有的不是以下劃線(_)開頭的名字都導入到當前位置

  可以使用__all__來控制*(用來發布新版本),在spam.py中新增一行:
  __all__=['money','read1'] 在另外一個文件中用from spam import *就這能導入列表中規定的兩個名字


四、模塊的搜索路徑

 

  查找模塊的優先級:


    1.內存
    2.內置模塊
    3.sys.path(重點:是以執行文件爲準)

 

五、區分python文件的兩種用途

 

  print(__name__)
  當文件被當作執行文件執行時__name__的值爲__main__
  當文件被當作模塊導入時

  作用:用來控制.py文件在不同的應用場景下執行不同的邏輯
  if __name__ == '__main__':


六、軟件開發的目錄規範

 

例如:我們要寫一個ATM程序
  ATM 根目錄
    start 啓動代碼
    conf文件 內放配置文件
      seeting 代碼
    lib 自定義模塊 (和業務無關)
      common 代碼
    core 核心代碼文件 (和業務相關)
      src 代碼
    db 數據文件 (用戶信息)
    log 日誌文件
    readme.txt 軟件介紹

 

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