天天看點

生成器表達式,清單推導式、内置函數

一、清單推導式

[變量(加工後的變量) for 變量 in iterable] 循環模式      
# l2 = [i for i in range(1, 14)]
# print(l2)
# l3 = [ 'python%s期' % i for i in range(1, 14)]
# print(l3)      
凡是用清單推導式構造的清單對象,用其他方式都可建構.,非常複雜的清單,清單推導式是建構不出的      
[變量(加工後的變量) for 變量 in iterable if 條件] 篩選模式      
# l1 = [i for i in range(1, 31) if i % 3 == 0]
# print(l1)      

二、生成器表達式

# g_obj = ('python%s期' % i for i in range(1,14)) # 循環模式
# g_obj1 = ('python%s期' % i for i in range(1,14) if i % 2 == 0) # 篩選模式
# print(g_obj)                    #<generator object <genexpr> at 0x00000000025F73B8>
# print(g_obj.__next__())         #python1期      

  1.把清單解析的 [ ] 換成 ( ) 得到的就是生成器表達式

  2.清單解析與生成器表達式都是一種便利的程式設計方式,隻不過生成器表達式更節省記憶體

  3.Python不但使用疊代器協定,讓for循環變得更加通用。大部分内置函數,也是使用疊代器協定通路對象的

三、内置函數

***locals()    目前位置的所有變量以及函數名等資料.      
***globals()   永遠是全局的.      
*** eval:執行字元串類型的代碼,并傳回最終結果。      
# print(eval('1+3'))                        4
# dic = eval("{'name': 'alex'}")
# print(dic,type(dic))               {'name': 'alex'} <class 'dict'>      
*** exec: 執行字元串類型的代碼      
code = '''
for i in range(1, 11):
    print(i)
'''
exec(code)
結果: 1 2 3 4 5 6 7 8 9 10      
compile:将字元串類型的代碼編譯。代碼對象能夠通過exec語句來執行或者eval()進行求值      
*** input:函數接受一個标準輸入資料,傳回為 string 類型      
*** print:列印輸出      
# print(1,2,3,sep='|')   # 設定每個元素的連接配接符 sep='|'
# print(666,end='')      # end='\n' 預設換行
# print(555)      
** hash:擷取一個對象(可哈希對象:int,str,Bool,tuple)的哈希值      
** id:用于擷取對象的記憶體位址      
open:函數用于打開一個檔案,建立一個 file 對象,相關的方法才可以調用它進行讀寫      
__import__:函數用于動态加載類和函數      
help:函數用于檢視函數或子產品用途的詳細說明      
** callable:函數用于檢查一個對象是否是可調用的。如果傳回True,object仍然可能調用失敗;但如果傳回False,調用對象ojbect絕對不會成功。      
def func1():
    print(111)
a = 666
print(callable(a))             False
print(callable(func1))         True