溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

第六天遞歸、匿名函數(shù)、推導(dǎo)式、變量存儲(chǔ)、模塊

發(fā)布時(shí)間:2020-07-24 16:21:30 來(lái)源:網(wǎng)絡(luò) 閱讀:371 作者:LukeRivel 欄目:編程語(yǔ)言

全局變量:生存周期,整個(gè)文件;函數(shù)內(nèi)部、外部都能使,在函數(shù)前面后面定義都o(jì)k
def fun():
print(a+10)
a = 10
fun()

全局變量和局部變量同名:新開辟空間了,并不是重新賦值
a = 10
print(id(a))
def fun():
a = 20
print(id(a))
fun()

global 在函數(shù)內(nèi)部聲明使用的是全局變量,盡可能放上面
下面代碼報(bào)錯(cuò)了、

a = 10
print(id(a))
def fun():
a = 20
print("內(nèi)20",id(a))
global a
a = 15
print("內(nèi)15",id(a))
fun()
print(a)
print(id(a))
global b

函數(shù)內(nèi)使用全局變量,如果不用global聲明,則只能使用,不能修改;聲明過(guò)之后才能修改

匿名函數(shù):只能做簡(jiǎn)單的事,就是個(gè)表達(dá)式
匿名函數(shù)格式:
1、函數(shù)名字 = lambda 形參1, 形參2, 形參 ... : 返回值
函數(shù)名字(實(shí)參1, 實(shí)參2, 實(shí)參...)
2、實(shí)參 = ( lambda 形參1, 形參2, 形參... : 返回值 ) (實(shí)參1, 實(shí)參2, 實(shí)參...)

寫法1:
fun = lambda num1, num2 : num1 + num2
print( fun(num = 1, num= 2))
寫法2:
ret_val = (lambda num1,num2: num1 + num2) (3,4)
print(ret_val)
遞歸關(guān)鍵:1、找遞歸的公式 例:4*(n-1)!
2、找遞歸的出口
3、自己調(diào)用自己

def step (形參):
#遞歸出口:
if n == 1:
return 1
else:
騷操作
return 公式( 騷操作 運(yùn)算符 step(對(duì)形參的騷操作))
調(diào)用step()

for推導(dǎo)式:把for后變量放for()里循環(huán),然后每次循環(huán)得到for前變量,再把for前變量放列表里
關(guān)鍵:for 前的是放列表的,for 后的是放循環(huán)體里的,for外的[] 不要丟
例 把x 放到列表里循環(huán)100次,把i 放到range()里循環(huán)100次
lists = [ x for i in range(1,101)]

for if 推導(dǎo)式: for 的后循環(huán)要滿足 if 條件才能得到for 前變量

注:for 前 for 后可以是同一變量
for 后與列表無(wú)關(guān)可以用來(lái)代替
lists = ["*" for
in range(8)]
lists = [2 * i for i in range(1,9)]
lists = [ x for i in range(1,101) if x % 2 ==0]
lists = [ i for i in range(1,101) if i % 2 ==0]
lists = [ i*2 for i in range(1,11) if i % 2 ==0]
混合使用
例:
print((lambda
a:[i**2 for i in a])(2,3,4))

引用
a引用該空間數(shù)據(jù)

a = 1000
print(id(a))
a = 10 100
print(id(a))
b = 10
print(id(b))
b = 10
10
print(id(b))

a開了倆空間,b開了一個(gè)空間
python緩存池:放地址 將-5~256之間的數(shù)的地址放入緩存池,用了在取出

str1 = "hellopython"
print(id(str1))
str2 = "hello"+"python"
print(id(str2))
str1 = "hellopythonhello×××"
print(id(str1))
str2 = "hellopython"+"hellopython"
print(id(str2))

python緩存池:放地址 將0~20個(gè)字符之間的字符的地址放入緩存池,用了在取出

lists = [10,20,30]
print(id(lists))
lists.append(40)
print(id(lists))
dicts = {"names":"張三"}
print(id(dicts))
dicts["age"] = 18
print(id(dicts))

列表、字典沒(méi)有緩存池,列表、字典不管怎么加,用append/remove等,地址都一樣,不會(huì)新開辟;但是,切片和a = [1,2,3],b = [1,2,3] 是新開辟,可用 is 判斷,if a is b,就沒(méi)新開辟,如果不是,就新開辟了

可變類型:該類型可以在存儲(chǔ)空間修改內(nèi)容
不可變類型:該類型不可以在存儲(chǔ)空間修改內(nèi)容
不可變:int、str、float、tuple

模塊:任意.py文件,要求放同一目錄下,不然不好使,講包之后就好使了。別起中文
使用方法:import 文件名(模塊名,不加.py)
模塊名.函數(shù)名
相當(dāng)于把另外文件所有都拷過(guò)來(lái)

while True 無(wú)限循環(huán),不叫死循環(huán),二者區(qū)別:一個(gè)故意設(shè)的,一個(gè)是寫錯(cuò)了

while 5 也ok,相當(dāng)于while bool(5),也是True

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI