三元表達式
無論條件成立與否都要返回一個值,
用于簡化僅有一個判斷的函數(或代碼塊)
遞歸
遞歸有循環調用的次數限制,調用函數時,函數相關數據要入棧,而棧區是有限的
二分查找法
匿名函數
僅能在定義時使用一次,定義完了就沒了
參數沒有括號,不能有return,會自動把函數體的執行結果當做返回值
函數體只能有一個表達式 且不能換行
內置函數
max min sorted map filter reduce
1.列表生成式
2.生成器表達式
3.模塊的使用*****
3.1 模塊的分類
3.2 自定義模塊
3.3 模塊的兩種方式
3.4 模塊的搜索順序
列表生成式
一個快速生產列表的表達式
語法[表達式 for in 遍歷]
語法[表達式 for in 遍歷 if 條件]
生成器表達式
生成數據的函數 函數體中yield關鍵字 yield 暫停函數的執行 還能返回一個值
可以使用一種快速創建生成器的表達式
語法(表達式 for in 循環 if 條件)
與列表生成式完全相同
目前使用函數來編寫代碼 雖然大幅度降低了代碼冗余,并且組織結構清晰多了
但是隨著項目功能的增加如果還將代碼全放一個文件中,將會出現以下問題
1.維護性差
2.函數太多結構也不清晰,可讀性差
3.對于相同功能的函數,如果在不同文件中都要使用,就只能復制粘貼 又出現了重復代碼
1.如何拆分文件
2.拆開后如何再使用文件中的內容
上述問題的解決方案就是拆分模塊
什么是模塊
模塊就是一堆功能的集合體,以py文件的形式存在
簡單的就是具備一堆函數的py文件
模塊的分類
1.自定義模塊(重點學習),包含第三方模塊(學習用法即可)
2.內置模塊 例如time os(主要學怎么使用)
3.經過編譯后的C或C++庫,以DLL形式存在(忽略)
4.包(本質就是一個文件夾,其中包含了一堆模塊)
import 用于導入一個模塊
會立即執行模塊中的代碼
導入模塊時發生了什么
1.創建了一個名稱空間
2.執行模塊中的代碼,將內部名稱與值的對應關系存儲到名稱空間中
3.在當前執行文件創建一個名字,該名字指向被導入模塊的名稱空間
注意:模塊之間的名稱空間是相互獨立的
模塊中的代碼僅在第一次被導入時執行
pycharm會自動幫你檢測 項目根目錄下的模塊
給以給你一些提示,但是對于不再根目錄下的,他可能會報錯
這是pycharm 的問題 不影響執行
給被導入的模塊取別名
import xxx as xx
print()
from導入模塊
使用from 導入時 會把import后的名字直接放入當前名稱空間
使用時可以不寫前綴
注意:可能會與當前名稱空間中的名字沖突
如果真的沖突了 會就近查找 誰最后定義我就用誰
*通配符 會將模塊中所有名字全部導入
極容易出現名稱沖突,要慎用
該特殊變量 用于指定哪些名字可以被*導入
__all__ = ['func']
執行文件的兩種方式:
__name__屬性可以獲取當前這個模塊的名字
當這個文件作為執行文件被執行時,__name__的值時__main__
當這個文件被導入執行時,__name__的值時模塊的名字
使用模塊時必須先找到對應的模塊文件,這就涉及到查找(搜索)路徑
1.查找內存中已存在的
2.內置的
3.sys.path
sys.modules 可以看到內存中已經加載的模塊
當你要使用的模塊不在執行文件同一級下時,就找不到
pycharm會自動把項目根目錄加入syspath
如果碰巧你要找的文件就在項目根目錄下,就能找到
但是如果你換了一個運行環境不在pycharm,就有可能找不到
所以為了保證你的項目在哪都能運行,我們需要自己將要使用的文件路徑添加到sys.path中
可以將sys.path理解為解釋器的環境變量
如果你的執行文件在根目錄下,就能夠訪問到當前項目中的所有文件,無須關心sys.path
內置函數
abs 絕對值
all 如果所有元素都為True 結果為True
any 任意一個元素為True 結果為True
ascii 將參數轉為asc 如果asc不支持這個字符就轉unicode
bin 轉為二進制
oct 轉為八進制
hex 轉為十六進制
bytearray 字節數組
bytes 轉為字節
callable 是否可調用
chr 數字轉asc對應的字符
ord 按照asc字符轉數字
compile 把對象轉為指定的字節碼
complex 轉為復數形式
dir 查看該對象中所有可用的名字(函數和變量)
divmod 得到商和余數
enumerate 枚舉 把一個值和數字對應
eval 可以幫你把一個字符串的內容轉換成python數據類型 但是這并不是他的本職工作
frozenset 凍結一個集合
globals 查看全局名稱空間中的所有名字
locals 查看局部名稱空間中的所有迷你工資 在全局位置調該函數 看到也是全局
hash 可以校驗一個數據是不是可變
可hash的都是不可變的 不可hash都是可變的
轉載于:https://www.cnblogs.com/gengbinjia/p/10288522.html