函式高階小結

2022-04-10 22:32:14 字數 2444 閱讀 7601

def f1():

x = 10

def f2():

print(x) # 10

x = 1000

f1() # 10

print(x) # 1000

把函式和變數一起打包拿出去了,內部函式包含對外部作用於而非全域性作用域的引用

def f1(x):

def f2():

print(x) # 10

return f2

f3 = f1(10) # f2

f3() # f2() # 10

f3() # 10

f3() # 10

f4 = f1(5)

f4() # 5

f4() # 5

def f1(x):

def f2():

print(x) # 10

return f2

f2 = f1()

f2() # f2()

def login_deco(func):

login_judge = login()

if login_judge:

res = func(*args,**kwargs)

return res

@login_deco

def shopping():

pass

# shopping = deco(shopping)

# shopping()

def sanceng(x,y):

def login_deco(func):

print(x,y)

login_judge = login()

if login_judge:

res = func(*args,**kwargs)

return res

return login_deco

@sanceng(10,20)

def shopping():

pass

day20

# shopping = login_deco(shopping)

# shopping()

可迭代物件:具有__iter__方法的物件(python中一切皆物件)

迭代器對物件:具有__iter__和__next__方法

成立響應 if 條件 else 不成立響應

print(true) if a >10 else print(false)

[ i for i in range(10)]

(i for i in range(10))
at 0x05196240>

自定義的迭代器,函式內部使用yield關鍵,有yield關鍵字的函式只要呼叫,這個呼叫後的函式就是生成器

def f1():

yield 1

g = f1() # 變成生成器

for i in g:

print(i) # 1

遞迴本質上就是函式呼叫函式本身,必須得有結束條件,並且在遞迴的過程中,問題的規模必須都不斷縮小

def find_num(num,lis):

if len(lis) == 1 and lis[0] != num:

print('沒找到')

return

mid_ind = int(len(lis) / 2) # 中間索引

mid_num = lis[mid_ind] # 中間值

if num < mid_num:

lis = lis[:mid_ind]

find_num(num,lis)

elif num > mid_num:

lis = lis[mid_ind + 1:]

find_num(num, lis)

else:

print('find')

lis = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

find_num(20,lis)

lamdbda 引數 : 邏輯**
max(dic,key=lambda name: dic[name])

max(dic)

max(lis/se/tup)

類似於工廠的流水線,機械式的一步一步完成乙個專案,把完成步驟具體細分,這樣步驟與步驟之間互不干涉

缺點:擴充套件性差,只要有乙個步驟斷了,專案就崩潰了

優點:清晰優雅

函式高階小結

目錄十 一 匿名函式 十二 面向過程程式設計 python從入門到放棄完整教程目錄 def f1 x 10 def f2 print x 10 x 1000 f1 10 print x 1000def f1 x 10 def f2 print x 10 return f2 f f1 f2 f f2 ...

Python高階小結

目錄 三 資料型別內建方法 3.2 字串型別內建方法 3.3 列表型別內建方法 3.4 元祖型別內建方法 3.5 字典型別內建方法 3.6 集合型別內建方法 3.7 布林型別 四 資料型別分類 python從入門到放棄完整教程目錄 萬能捕捉異常公式 try 邏輯 1 0except exceptio...

C 高階小結

1.c 中類的不同儲存區的物件的初始值 class test 1 class test211 intgetj 1215 1.在堆上建立物件時,成員變數初始值為隨機值 test p new test 2.在棧上建立物件時,成員變數初始值為隨機值 test t 3.在靜態儲存區建立物件時,成員變數初始為...