python 內建函式

2021-10-08 06:43:15 字數 3079 閱讀 9848

對迭代器與生成器的區別

迭代器和生成器

迭代器

可迭代協議-含有iter方法的都是可迭代的

迭代器協議-含有next和iter的都是迭代器

特點:節省記憶體空間

方便逐個取值,乙個迭代器只能取一次

生成器

生成器函式

含有yield關鍵字的函式都是生成器函式

生成器函式的特點:

呼叫之後函式內的**不執行,返回生成器

每次從生成器中取乙個值就會掃一段**,遇見yield停止

如何從生成器中取值:

for:如果沒有break會一直取完

next:每次只取乙個

生成器表示式:

條件成立想放在生成器中的值 for in 可迭代的if條件

內建函式:

作用域相關:

1.globals() 獲取全域性變數的字典

2.locals() 獲取執行本方法所在命名空間內的區域性變數的字典

3.global 使用場景和作用域不一樣

迭代器:

1.__next__()與next()

迭代器的實現方法:

def next(迭代器):實現方法(簡易)

迭代器.__next__()

迭代器 = iter(可迭代的)

2.range()是可迭代的但不是乙個迭代器,range()迭代後沒有生成物件

例:'__next__' in iter(range(10))

如果想要列印range(),需加list(range())或其它列印迭代器的物件

呼叫相關:

1.dir() 檢視對像的屬性和方法

2.callable() 檢視物件是否可呼叫,返回值true和false

例:callable(print)

def func_1():pass

callable(func_1)

其它: help() 檢視方法名的用法

help與dir

help仔細查詢,幫助

dir簡略查詢

例:help(dir) 退出按'q'

模組相關:

1.import

2.time = __import__('time') 不常用

檔案相關:

open()

例: print(f.writable()) 能不能寫

print(f.readable()) 能不能讀

記憶體相關:

1.id()

2.hash()

注意:1.對一次程式執行中,保證可雜湊的值不會變

2.把可雜湊的資料型別轉換為一串數字

3.字典的定址方式

輸入輸出相關:

1.input()

2.print()

例:print有很多種引數,有很多方式接收傳進來的值

a. print(1,2,3,4,5,sep='|')

b. print(1,2,3,end='')

將輸入內容輸出到檔案

c. f = open('file','w')

print('aaaa',file=true)

f.close()

d. 老師寫的進度條顯示,其中用到知識點關鍵點為格式化輸出,flush=true

'''import time

for i in range(0,101,2):

time.sleep(0.01)

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='', flush=true)

''' 另外方面:progress bar(為專業列印進度條)

字串**執行:

1.compile(source, filename, mode[, flags[, dont_inherit]])

'''source -- 字串或者ast(abstract syntax trees)物件。。

filename -- **檔名稱,如果不是從檔案讀取**則傳遞一些可辨認的值。

mode -- 指定編譯**的種類。可以指定為 exec, eval, single。

flags -- 變數作用域,區域性命名空間,如果被提供,可以是任何對映物件。。

flags和dont_inherit是用來控制編譯原始碼時的標誌

'''字串型別的**編譯。**物件能夠通過exec語句或eval進行求值

2.eval(expression[, globals[, locals]])

'''expression -- 表示式。

globals -- 變數作用域,全域性命名空間,如果被提供,則必須是乙個字典物件。

locals -- 變數作用域,區域性命名空間,如果被提供,可以是任何對映物件。

'''eval有返回值,eval一般時候不用,

只能用在你明確知道你要執行的**是什麼 流程,執行,互動

3.exec obj

'''obj -- 要執行的表示式

'''exec 返回值永遠為 none。執行儲存在字串或檔案中的python語句,exec沒有返回值

例: 1. name = input('>>>') 上面第二條相關

eval(name) name可巢狀**,危險

2. code1 = 'for i in range(10):print(i)' #流程

com = comple(code1,'','exec')

code2 = '1+2+3' #執行

com = compile(code2,'','eval')

code3 = 'name = input('>>')' #互動

com = compile(code3,'','sigle')

exec(com) #pycharm會報錯,但執行後無錯

print(name)

python重寫內建函式 python 內建函式

說明 zip 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 號操作符,可以將元組解壓為列表。語法 zip iterable1,iterable2,引數 iterable 乙個或多...

python內建函式簡稱 Python內建函式詳解

此文參考python文件,然後結合自己的理解,寫下來,一方面方便自己,讓自己好好學習,順便回憶回憶 另一方面,讓喜歡的盆友也參考一下。經查詢,3.6版本總共有68個內建函式,主要分類如下 數 算 7個 型別轉換 24個 序列操作 8個 物件操作 9個 反射操作 8個 變數操作 2個 互動操作 2個 ...

python內建函式使用 python內建函式使用

eval函式執行python表示式,有返回值 eval 1 2 3 4 5 exec函式執行的是python語句,沒有返回值 exec print 123 將字串型別的 編碼.物件能夠通過exec語句來執行或者eval 進行求值,c只是編譯,不執行 code for i in range 10 pr...