1.變量的作用域
變量在程序中能夠使用的范圍
2.全局變量
a.聲明在函數(shù)或者類(lèi)的外部的變量都是全局變量
b.全局變量是從聲明開(kāi)始到整個(gè)py文件結(jié)束盛险,任何位置都可以使用(作用域:從聲明開(kāi)始到文件結(jié)束)
3.局部變量
a.聲明在函數(shù)或者類(lèi)的里面的變量都是局部變量
b.局部變量是從聲明開(kāi)始到函數(shù)結(jié)束,任何位置都可以使用(作用域:從聲明開(kāi)始到函數(shù)結(jié)束)
global關(guān)鍵字只能在函數(shù)中使用,作用是在函數(shù)中聲明一個(gè)全局變量
語(yǔ)法:
global 變量名
變量名 = 值
nonlocal關(guān)鍵字只能在函數(shù)中使用
當(dāng)需要在局部的局部中修改局部變量的值,就使用nonlocal
語(yǔ)法:
nonlocal 變量名
變量名 = 值
python中苦掘,聲明函數(shù)其實(shí)就是聲明一個(gè)類(lèi)型是function的變量换帜。函數(shù)名就是變量名
函數(shù)名作為變量除了可以用來(lái)調(diào)用函數(shù)獲取返回值以外,普通變量能做的它都能做
3.作為函數(shù)的參數(shù)
"""
將函數(shù)1作為實(shí)參鹤啡,傳遞給函數(shù)2惯驼;這兒的函數(shù)2就是一個(gè)高階函數(shù)(實(shí)參高階函數(shù))
def sort(key=None, reverse=False)
key - 確定排序的時(shí)候以什么值為標(biāo)準(zhǔn)來(lái)排序(默認(rèn)情況下,以列表的元素的大小為標(biāo)準(zhǔn)來(lái)排序);
需要傳一個(gè)函數(shù)揉忘,函數(shù)需要一個(gè)參數(shù)和一個(gè)返回值跳座。這兒的參數(shù)是列表的元素
reverse - 是否降序排序, 需要傳一個(gè)bool值
變量作為函數(shù)的返回值
返回值是函數(shù)的函數(shù)端铛,也叫高階函數(shù)(返回值高階函數(shù))
1.什么是迭代器(iter)
迭代器是python中的容器類(lèi)的數(shù)據(jù)類(lèi)型泣矛,可以同時(shí)存儲(chǔ)多個(gè)數(shù)據(jù)。
取迭代器中的數(shù)據(jù)只能一個(gè)一個(gè)的取禾蚕,而且取出來(lái)的數(shù)據(jù)您朽,在迭代器就不存在了
2.迭代器中數(shù)據(jù)的來(lái)源
a.將其他序列轉(zhuǎn)換成迭代器
b.使用生成式、生成器去產(chǎn)生數(shù)據(jù)
1.將數(shù)據(jù)轉(zhuǎn)換成迭代器
所有的序列都可以轉(zhuǎn)換成迭代器
2.獲取迭代器中的元素
a.
next(迭代器) / 迭代器.next() - 取出迭代器中第一個(gè)元素(已經(jīng)取出來(lái)的元素再也回不到迭代器中了)
當(dāng)?shù)魇强盏臅r(shí)候换淆,使用next獲取元素哗总,會(huì)出現(xiàn)StopIteration異常
b.通過(guò)for循環(huán)取出迭代器中每個(gè)元素
1.什么是生成器
生成器就是迭代器;迭代器不一定是生成器
調(diào)用帶有yield關(guān)鍵字的函數(shù)倍试,拿到的結(jié)果就是一個(gè)生成器讯屈。生成器中元素就是yield關(guān)鍵字后邊的值
2.生成器怎么產(chǎn)生數(shù)據(jù)
只要函數(shù)中有yield關(guān)鍵字,調(diào)用函數(shù)不會(huì)再執(zhí)行函數(shù)體獲取返回值县习,而是創(chuàng)建一個(gè)生成器涮母。
當(dāng)獲取生成器的元素的時(shí)候,才會(huì)執(zhí)行函數(shù)的函數(shù)體,執(zhí)行到y(tǒng)ield語(yǔ)句為止,并且將yield后面的值作為結(jié)果返回躁愿;
并且保存當(dāng)前執(zhí)行的位置叛本。
獲取下一個(gè)元素的時(shí)候,就從上次結(jié)束的位置接著往下去執(zhí)行函數(shù)彤钟,直到函數(shù)結(jié)束或者遇到y(tǒng)ield為止;
如果遇到y(tǒng)ield就將yield后面的值作為結(jié)果返回来候,并且保存當(dāng)前執(zhí)行的位置。如果函數(shù)結(jié)束了逸雹,就出現(xiàn)StopIteration異常
生成器對(duì)應(yīng)的函數(shù)营搅,執(zhí)行完成遇到y(tǒng)ield的次數(shù),決定了生成器能產(chǎn)生的數(shù)據(jù)的個(gè)數(shù)