一、生成器表達式
統計文件中字符的個數:
#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 軟件介紹