第一類物件 --特殊點
1.可以當作值被賦值給變數
def func():
print(1)
a = func
a()2.可以當作元素存放在容器中
def func()
print(1)
lst = [func,func,func]
for i in lst
i()3.函式名可以當作函式的引數
def func(f):
f()def foo():
print(1)
func(foo)
4.函式名可以當作函式的返回值
def func():
def foo():
print(1)
return foo
a = func()
a()def f(1):
def f2():
print(1)
def f3():
print(2)
return f2
ret = f2()
return ret
print(f1())
# python3.6版本及以上才能夠使用
s = f"你好('hello')" # 填充字串
s1 = f"你好('hello')"
s1 = f"你好" # 填充變數
print(s1)
s1 = f"" #填充計算公式
print(s1)
a = 10 #填充表示式
b = 20
s1 = f"(a if a>b else b)"
print(s1)
s1 = f"}}}}}" #填充大括號
print(s1)
s1 = f"}"
print(s1)
s1 = f"{}{}'}"
print(s1)
s1 = f""
print(s1)
def prin(a):
print(a)
s1 = f""
prin(s1)
def foo():
def func():
a = 1
return a
return func()
s1 = f""
print(s1)
lst = [1,2,3,4,5]
s1 = f""
print(s1)
dic =
s1 = f""
print(s1)
可迭代物件
list,dict,str,set,tuple --可迭代物件,使用靈活
驗證是否為可迭代物件:
方式一:
list.__iter__()
dict.__iter__()
方式二:
檢視原始碼
方式三:
print(dir(list))
官方宣告:只要具有__iter__()方法的就是可迭代物件
可迭代物件的優點:
1.使用靈活
2.直接檢視值
可迭代物件的缺點:
1.消耗記憶體
取值方式:
list,tuple,str --索引
dict --鍵
set --直接取值
迭代器:
官方宣告只要具有__iter__() 和 __next__()就是迭代器
f = open("t1.txt","r")
f.__iter__()
f.__next__()
lst = [1,2,3,4,5]
new_lst = lst.__iter__() # 將可迭代物件轉換成迭代器
new_lst.__iter__()
new_lst.__next__()
s = "123456"
new_s = s.__iter__() #將可迭代物件轉換成迭代器
print(new_s)
new_s.__iter__()
new.s.__next__()
new_s = s.__iter__() #將可迭代物件轉換成迭代器
print(new_s)
new_s.__iter__()
print(new_s.__next__())
print(new_s.__next__())
print(new_s.__next__())
s = "123456" #更改for的本質
s = [1,2,3,4,5,6]
count = len(s)
new_s = s.__iter__()
while count:
print(new_s.__next__())
count -= 1
s = "123456"
new_s = s.__iter__() # for的真實本質
while true:
try:
print(new_s.__next__())
except stopiteration:
break
except exception:
print("萬能審查")
break
總結: 可迭代物件:
優點:使用靈活,可以直接檢視值
缺點:佔記憶體,不能迭代取值
迭代器:
優點:節省記憶體,惰性機制
缺點:使用不靈活,操作比較繁瑣,不能直接檢視元素
迭代器的特性:
1.一次性的(永遠就沒有了)
2.不能逆行(不能後退)
3.惰性機制(節省記憶體)
什麼是可迭代物件:
具有很多私有方法,具有__iter__()方法的就是乙個可迭代物件
什麼是迭代器:
具有__iter__()和__next__()方法的就是迭代器
迭代器什麼時候使用:當容器中資料量較多的時候使用迭代器
遞迴:
1.自己呼叫自己(不斷呼叫自己本身) --死遞迴
2.有明確的終止條件
#滿足兩個以上的才是有效遞迴
遞:一直執行直到碰到結束條件
歸:從結束條件開始往回退
def func():
print(123)
func()
func()
# 官方宣告:最大層次1000,實際測試997/998
def age(n):
if n == 4:
return "你好"
else:
return age(n+1)
print(age(1))
##過程
def age2(n):
if n == 3:
return "你好"
def age1(n):
if n == 3:
return "你好"
else:
age2(n+1)
def age(n):
if n == 3:
return "你好"
else:
age1(n+1)
age(1)
1.寶元 18-2-2-2
2.太白 18-2-2
3.wusir 18-2
4.alex 18
def age(n):
if n == 4:
return 18
else:
return age(n+1)-2
print(age(1))
##過程
def age4(n):
if n == 4:
return 18
def age3(n):
if n == 4:
return 18
else:
return age4(n+1)-2
def age2(n):
if n == 4:
return 18
else:
return age3(n+1)-2
def age1(n):
if n == 4:
return 18
else:
return age2(n+1)-2
print(age1(1))
Python 基礎 第一類物件 閉包 迭代器
第一類物件 函式名 變數名 函式物件物件可以像變數一樣進行賦值 還可以作為列表的元素進行使用 可以作為返回值返回 可以作為引數進行傳遞 閉包 函式的巢狀 內層函式對外層函式中的變數的使用 好處 1.保護變數不被侵害 2.讓乙個變數常駐記憶體 如何通過 檢視乙個閉包 closure 有東西就是閉包.沒...
Python 函式是第一類物件
在很多資料中,經常會看到這樣一句話 python 中的函式是第一類物件 這裡所說的第一類物件,其實是指函式作為乙個物件,與其他物件具有相同的地位。關於這一點,guido 曾提過 first class everything 他對 python 的乙個發展目標就是所有的物件都是第一類物件。也就是說,所...
Python 函式的第一類物件 使用
函式的第一類物件及使用 第一類物件 特殊點 可以當做值被賦值給變數 def func print 1 print func a func a 2.可以當做元素存放在容器中 def func print 1 lst func,func,func for i in lst i 3.函式名可以當做函式的引...