1. 程式人生 > >初識函式到正則表示式知識點總結

初識函式到正則表示式知識點總結

%:求餘數
//:整除
"is"是比較記憶體地址是否一樣 "=="是比較值是否一樣


global:在區域性對全域性變數進行修改
nonlocal:在區域性對離自己最近的上一個區域性中的變數進行修改
globals():返回全域性作用域中的所有名字
locals():返回本地作用域中的所有名字
作用域:函式內部是區域性作用域
函式外部是全域性作用域

閉包函式:內部函式呼叫外部函式的變數,就是閉包函式
裝飾器:開放封閉原則,對功能擴充套件是開放的,對修改是封閉的
本質上是一個閉包函式
迭代器:有“__iter__”方法是可迭代物件,
有“__iter__”和“__next__”方法是迭代器

可迭代物件加上“__iter__”方法就會變成迭代器
可迭代物件和迭代器都能直接for迴圈
生成器和迭代器都是惰性運算,不主動運算,要一個值給一個值
生成器:生成器函式yield,下面接收者就是一個生成器,他有“__iter__”和“__next__”方法,
所以生成器的本質就是迭代器
生成器進階:send():就是給上一個yield處傳一個值,
且第一次必須使用__next__”方法,
最後一次yield不能接受外部的值
yield from:當生成器函式是一個列表的話,可以不用for迴圈然後yield

可以直接yield from
比如可以不用這種
def generator():
a = "abcde"
for i in a:
yield i
g = generator()
for i in g:
print(i)

而用這種:
def generator():
a = "abcde"
yield from a

g = generator()
for i in g:
print(i)
生成器表示式,放在括號中:g = (i for i in range(1, 11)),
列表推倒式,放在列表中:[i for i in range(1, 11) if i % 2 == 0]
g就是生成器
如果放在列表中,就不是生成器表示式,而是列表推倒式
生成器表示式不佔記憶體,可以用一個取一個,
而列表推倒式一下子生成列表,佔記憶體

內建函式加小知識點:
dir():檢視一個物件擁有的方法
help():檢視一個物件擁有的方法以及用法
callble():檢視物件是變數是一個函式還是一個值
id():一個變數所在的記憶體地址
"\r":字串前面加上"\r"回到行首
"\n":字串後面加上"\n"換行
eveal():執行字串型別的程式碼,有返回值
exec():執行字串型別的程式碼,沒有返回值
abs():絕對值
divmod(x,y):x除以y,得出一個元組,第一個值是商,第二個值是餘數
pow(x,y):冪運算,x的y次方
pow(x,y,z):冪運算,x的y次方除以z取餘數
round():精確小數取多少位
sum():求和,只能接受可迭代的資料型別
min():有一個key引數,例如可以指定key=abs
reversed():反轉,保留原列表,返回一個迭代器
repr():會讓一個變數原封不動的打印出來,例如字串1打印出來就是"1"
frozenset():不可變集合,不可變資料型別
enumerate():列舉,接受一個可迭代物件,list之後得到列表包元組,
元組第一個值是序號,第二個值是可迭代物件中的一個個值
zip():拉鍊函式
filter():過濾函式
執行之後的結果,列表中的個數 <= 執行前的結果,
filter只管篩選,不會改變原來的值
map():執行之後的結果,列表中的個數=執行前的結果,
值可能會發生改變, 在列表推倒式中使用map,列表推倒式後面沒有if條件
sorted():排序,會直接生成一個新列表,而不是生成一個迭代器,
所以佔用記憶體,應該慎用
匿名函式:格式: lambda x: x + 1 冒號前面是函式引數,冒號後面是函式返回值
一提到匿名函式,應該立即聯想到內建函式,filter,map,max,min,sorted等