閱讀目錄html
楔子python
在講新知識以前,咱們先來複習複習函數的基礎知識。程序員
問:函數怎麼調用?面試
函數名()算法
若是大家這麼說。。。那大家就對了!好了記住這個事兒別給忘記了,我們繼續談下一話題。。。數據結構
來大家在本身的環境裏打印一下本身的名字。函數
大家是怎麼打的呀?學習
是否是print('xxx'),好了,如今大家結合我剛剛說的函數的調用方法,你有沒有什麼發現?ui
咱們就猜,print有沒有多是一個函數?編碼
可是沒有人實現它啊。。。它怎麼就能用了呢?
早在咱們「初識函數」的時候是否是就是用len()引出的?
那如今咱們也知道len()也是一個函數,也沒人實現,它好像就本身能用了。。。
以前老師給你講你能夠這樣用你就用了,那你有沒有想過像這樣直接拿來就能用的函數到底有多少?
內置函數
接下來,咱們就一塊兒來看看python裏的內置函數。截止到python版本3.6.2,如今python一共爲咱們提供了68個內置函數。它們就是python提供給你直接能夠拿來使用的全部函數。這些函數有些咱們已經用過了,有些咱們還沒用到過,還有一些是被封印了,必須等咱們學了新知識才能解開封印的。那今天咱們就一塊兒來認識一下python的內置函數。這麼多函數,咱們該從何學起呢?
上面就是內置函數的表,68個函數都在這兒了。這個表的順序是按照首字母的排列順序來的,你會發現都混亂的堆在一塊兒。好比,oct和bin和hex都是作進制換算的,可是卻被寫在了三個地方。。。這樣很是不利於你們概括和學習。那我把這些函數分紅了6大類。你看下面這張圖,你猜我們今天會學哪幾大類呀?
我猜大家都猜對了。咱們今天就要學習用粉紅色標註出來的這四大塊——56個方法。還有12個方法欠着怎麼辦呢?咱們講完面向對象這剩下的12個會在兩週以內陸續還給大家的,我保證(認真臉)。那這樣,咱們今天就主要關注咱們要學習的這56個方法。
那要學的一共4塊,我們從哪兒開始學起呢?
做用域相關
基於字典的形式獲取局部變量和全局變量
globals()——獲取全局變量的字典
locals()——獲取執行本方法所在命名空間內的局部變量的字典
其餘
字符串類型代碼的執行
http://www.cnblogs.com/Eva-J/articles/7266087.html
輸入輸出相關:
input() 輸入
print() 輸出
數據類型相關:
type(o) 返回變量o的數據類型
內存相關:
id(o) o是參數,返回一個變量的內存地址
hash(o) o是參數,返回一個可hash變量的哈希值,不可hash的變量被hash以後會報錯。
hash函數會根據一個內部的算法對當前可hash變量進行處理,返回一個int數字。
*每一次執行程序,內容相同的變量hash值在這一次執行過程當中不會發生改變。
文件操做相關
open() 打開一個文件,返回一個文件操做符(文件句柄)
操做文件的模式有r,w,a,r+,w+,a+ 共6種,每一種方式均可以用二進制的形式操做(rb,wb,ab,rb+,wb+,ab+)
能夠用encoding指定編碼.
模塊操做相關
__import__導入一個模塊
幫助方法
在控制檯執行help()進入幫助模式。能夠隨意輸入變量或者變量的類型。輸入q退出
或者直接執行help(o),o是參數,查看和變量o有關的操做。。。
和調用相關
callable(o),o是參數,看這個變量是否是可調用。
若是o是一個函數名,就會返回True
查看參數所屬類型的全部內置方法
dir() 默認查看全局空間內的屬性,也接受一個參數,查看這個參數內的方法或變量
和數字相關
數字——數據類型相關:bool,int,float,complex
數字——進制轉換相關:bin,oct,hex
數字——數學運算:abs,divmod,min,max,sum,round,pow
和數據結構相關
序列——列表和元組相關的:list和tuple
序列——字符串相關的:str,format,bytes,bytearry,memoryview,ord,chr,ascii,repr
序列:reversed,slice
數據集合——字典和集合:dict,set,frozenset
數據集合:len,sorted,enumerate,all,any,zip,filter,map
filter和map:http://www.cnblogs.com/Eva-J/articles/7266192.html
sorted方法:http://www.cnblogs.com/Eva-J/articles/7265992.html
匿名函數
匿名函數:爲了解決那些功能很簡單的需求而設計的一句話函數
#這段代碼 def calc(n): return n**n print(calc(10)) #換成匿名函數 calc = lambda n:n**n print(calc(10))
上面是咱們對calc這個匿名函數的分析,下面給出了一個關於匿名函數格式的說明
函數名 = lambda 參數 :返回值 #參數能夠有多個,用逗號隔開 #匿名函數無論邏輯多複雜,只能寫一行,且邏輯執行結束後的內容就是返回值 #返回值和正常的函數同樣能夠是任意數據類型
咱們能夠看出,匿名函數並非真的不能有名字。
匿名函數的調用和正常的調用也沒有什麼分別。 就是 函數名(參數) 就能夠了~~~
練一練:
請把如下函數變成匿名函數 def add(x,y): return x+y
上面是匿名函數的函數用法。除此以外,匿名函數也不是浪得虛名,它真的能夠匿名。在和其餘功能函數合做的時候
l=[3,2,100,999,213,1111,31121,333] print(max(l)) dic={'k1':10,'k2':100,'k3':30} print(max(dic)) print(dic[max(dic,key=lambda k:dic[k])])
res = map(lambda x:x**2,[1,5,7,4,8]) for i in res: print(i) 輸出 1 25 49 16 64
res = filter(lambda x:x>10,[5,8,11,9,15]) for i in res: print(i) 輸出 11 15
面試題練一練
現有兩個元組(('a'),('b')),(('c'),('d')),請使用python中匿名函數生成列表[{'a':'c'},{'b':'d'}]
本章小結
說學習內置函數,不如說整理本身的知識體系。其實整理這些內置函數的過程也是在整理本身的知識體系。
咱們講課的時候會歸類:經常使用或者不經常使用,主要仍是根據場景而言。
一個優秀的程序員就應該是在該用這個方法的時候信手拈來,把每個內置的函數都用的恰到好處。
要想作到這一點,至少要先了解,才能在須要的時候想起,進而將它用在該用的地方。
可是在這裏,我仍是以本身的一點經驗之談,把幾個平時工做中相對更經常使用的方法推薦一下,請務必重點掌握:
其餘:input,print,type,hash,open,import,dir
str類型代碼執行:eval,exec
數字:bool,int,float,abs,divmod,min,max,sum,round,pow
序列——列表和元組相關的:list和tuple
序列——字符串相關的:str,bytes,repr
序列:reversed,slice
數據集合——字典和集合:dict,set,frozenset
數據集合:len,sorted,enumerate,zip,filter,map
參考文檔: