pyrhon學習_day17___內置函數
3.6版本python共提供68種內置函數,如下圖展示,現將重要內置函數的使用做如下講解:
1、作用域相關:globals()和locals()
globals():全局作用域中的變量,無論放在全局命名空間還是在局部命名空間,輸出結果一樣,都是全局中的變量
locals():放在全局命名空間時和globals()效果一致,放在局部命名空間輸出局部空間的變量
def func(): x = 1 y = 2 func() print(locals()) print(globals()) #輸出結果一致,均為全局變量 def func(): x = 1 y= 2 print(locals()) print(globals()) func() #前者輸出局部變量,後者輸出全局變量
2、叠代器/生成器相關:range()、iter()、next()
range(n):可叠代對象,可用於for循環得到0-n間的整數,包括0,不包括n
print(range(10)) #結果為:range(0,10) for i in range(10): print(i) #結果為:0 1 2 3 4 5 6 7 8 9
iter():將可叠代對象轉變為叠代器,等價於:可叠代對象.__iter__()
from collections import Iterable from collections import Iterator lst=[1,2,3,4,5] print(isinstance(lst,Iterable)) #輸出結果:True---是否可叠代對象 print(isinstance(lst.__iter__(),Iterator)) #輸出結果:True---是否叠代器 print(isinstance(iter(lst),Iterator)) #輸出結果:True---是否叠代器
next():返回叠代器的下一個值。next(叠代器)等價於叠代器.__next__()
#例1: k=iter([1,2,3,4]) print(k.__next__()) #輸出結果為:1 print(next(k)) #輸出結果為:2 #例2: k=iter([1,2,3,4]) while True: try: print(next(k)) except StopIteration: #超出叠代器的層數就退出循環 break
3、字符串類型python代碼執行相關:eval()、exec()、compile()
eval():執行字符串表達式,並返回表達式的值
print(eval(‘2*2‘)) #輸出結果:4 x=3 print(eval(‘7*x‘)) #輸出結果:21
exec():執行字符串代碼,無返回值
4、內置函數filter()和map()
filter()函數:用於過濾序列,將不符合條件的序列過濾,返回符合條件的叠代器。該接收兩個參數,第一個為函數,第二個為序列,序列的每個元素作為參數傳遞給函數進行判,然後返回 True 或 False,最後將返回 True 的元素放到新列表中。
def func(n): if n%2 == 0: return True lst = [1,2,3,4,5,6,7] ret = filter(func,lst) print(list(ret)) #輸出結果為:[2,4,6]
map()函數: 會根據提供的函數對指定序列做映射。第一個參數 function 以參數序列中的每一個元素調用 function 函數,返回包含每次 function 函數返回值的新列表的叠代器。
lst=[1,2,3,4] def func(n): return n**2 ret=map(func,lst) print(list(ret) #輸出結果為:[1,4,9,16]
5、輸入和輸出函數:input()、print()
print()函數:在py2中是個關鍵字,語法為:print(*objects, sep=‘ ‘, end=‘\n‘, file=sys.stdout)。objects -- 復數,表示可以一次輸出多個對象。輸出多個對象時,需要用 , 分隔。
sep -- 用來間隔多個對象,默認值是一個空格。end -- 用來設定以什麽結尾。默認值是換行符 \n,我們可以換成其他字符串。file -- 要寫入的文件對象。
#進度條實例 import time import sys for i in range(0,101,2): time.sleep(0.1) char_num = i//2 #打印多少個* per_str = ‘\r%s%% : %s\n‘ % (i, ‘*‘ * char_num) if i == 100 else ‘\r%s%% : %s‘%(i,‘*‘*char_num) print(per_str,end=‘‘, file=sys.stdout,flush=True )
pyrhon學習_day17___內置函數