迭代器 遞迴 格式化

2022-05-29 16:12:11 字數 3528 閱讀 5562

可以當做值被賦值給變數

def func():

print(1)

a = func

print(a)

print(func)

輸出的結果: 你犯渾的原因在於,不敢判斷 func函式是不用執行的

當做元素存放在容器中

def func():

print(1)

lst = [func,func,func]

print(lst)

for i in lst:

i() #這就是相當於 func() 函式呼叫

#[, , ]11

1

3.函式名當做函式的引數

def func(f):

print(f) #呼叫的 foo 的記憶體位址

def foo(): #沒有呼叫 不用執行

print(233)

func(foo)

#結果

4.函式名可以當作函式的返回值

def func():

def foo():

print(233)

return foo #返回給 func foo的記憶體位址

print(func())

#.foo at 0x10e0c92f0>

加乙個判斷

def f1():

def f2():

print(1)

def f3():

print(123)

return f2 #這裡返回的是 f2 的記憶體位址,

ret = f2()

return ret #所以這裡的記憶體位址

print(f1())

%s 和 format 都可以 f

s = f"你好"  #填充字串

s1 =f"你好"

print(s,s1)

s ="123"

s = f"你好" #可以存放變數

print(s)

s = f"你好"   #填充計算公式

print(s)

a = 10

b = 20

s = f"你好" #填充三元運算子

print(s)

#你好 20

s1 = f"}}}"  #兩個大括號是乙個

print(s1)

s1 = f""    #後面可以是函式   這個有疑惑,需要解決一下

print(s1)

# 1233

# none

def foo():

def func():

a = 1

return a

return func()

s1 = f"" #現在看這個程式已經沒有啥問題

print(s1)

# 1

lst = [1,2,3,4,5,6,7,8]

s = f""

print(s)

# [1, 2, 3, 4, 5]

dic = 

s1 = f""

print(s1)

# 1

當容器中資料量較大的時候使用迭代器,入檔案控制代碼

迭代器優點:節省記憶體,惰性機制

迭代器缺點:使用不靈活,操作繁瑣,不能直接檢視所有值

迭代器的特性:

器:工具

可迭代物件————list ,dict,str,set,tuple

具有很多私有方法,具有_iter_\ 方法的就是乙個可迭代物件,使用靈活

可迭代物件不一定是迭代器,但是迭代物件一定是可迭代物件.

檢視是否是可迭代物件的方法

list.__iter__()

str.__iter__()

dic.__iter__()

tuple.__iter__()

set.__iter__()

方法二

看原始碼方法三 :dir

print(dir(list))

方法四官方宣告只具有__iter__方法就是可迭代物件

可迭代物件的優點:

1.使用靈活

2.直接檢視值

可迭代物件的缺點:

消耗記憶體

取值方式:

list ,tuple,str --索引

dict--鍵

set--直接取值

for迭代器:iter()將可迭代物件轉化乘迭代器

官方宣告只要具有__iter__方法__next__就是迭代器

基於上乙個停留的位置進行取值

s = "152132"

news_s = s.__iter__() #將可迭代物件轉化為迭代器

print(news_s)

print(news_s.__next__())

print(news_s.__next__())

print(news_s.__next__())

print(news_s.__next__())

print(news_s.__next__())#1

5213

for 迴圈原理
s = "12332"

new_s = s.__iter__()

while true:

try:

print(new_s.__next__())

except stopiteration: # 捕獲錯誤

break

s = "12332"

new_s = s.__iter__()

while true:

try:

print(new_s.__next__())

except exception: # 萬能異常捕獲

break

遞迴條件:1.自己呼叫自己(官方話,不斷呼叫自己本身)

2.要有明確的終止條件

滿足以上兩個才是有效遞迴

遞:一直執行到帶結束條件

歸:從結束條件往回退

官方宣告最大層次1000,實際測試998/997 可以修改

def age(n):

if n == 4:

return 18

else :

return age(n+1)-2

print(age(1))

格式化,強調 數值格式化

聚合函式返回的的數值型別的值有個特點就是沒有被格式化。通過前面的帶 sum 聚合函式的示例,我們可以看到這一點 注意合計值 命令,或者在物件檢視器中選中 displayformat 屬性。在上節的示例中,格式化操作是針對一物件或物件內的表示式,在物件內僅有乙個表示式時它還能正常工作,不過當物件內不有...

函式的第一類物件,f格式化,迭代器以及遞迴

第一類物件 特殊點 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 fo...

python 格式化和format格式化

格式 name flags width precision typecode name 可選,用於選擇指定的key flags 可選,可提供的值有 右對齊,整數前加正號,負數前加負號 左對齊,正數錢無符號,負數前加負號 空格 右對齊 正數前加空格,負數前加負號 0 右對齊,正數前無符號,負數前加負號...