1.ファーストクラスのオブジェクトや関数名を使用します
関数名は、値として割り当てることができます
def func():
print(1)
print(func)
a = func
a() # <function func at 0x000001A24F8E9B70> 1
関数名は、コンテナに格納された要素として使用することができます
def func():
print(1)
lst = [func,func,func]
for i in lst:
i() # 1 1 1
関数名は、別の関数の引数として使用することができます
def func(f):
f()
def foo():
print(123)
func(foo) # 123
これは、関数名の戻り値として使用することができます
def func():
def foo():
print(123)
return foo
a = func()
a() # 123
2.Fフォーマット
Fフォーマットされた役割
充填文字列
s = f"你好{'常鑫'}"
s1 = F"{你好'常鑫'}"
可変充填
s = "常鑫"
S1 = f"你还是挺好的{s}"
print(s1)
充填式
s1 = "{35+15}"
print(s1)
表現でいっぱい
a = 10
b = 20
s1 = f"{a if a>b else b}"
print(s1)
中括弧でいっぱい
s1 = f"{{{{{{'常鑫'}}}}}}"
print(s1) # {{{'常鑫'}}}
3.イテレータ
イテレータ、ツール
反復可能オブジェクト:
list,dict,str,set,tuple -- 可迭代对象 使用灵活
反復かどうかをチェックします
一つの方法:
list.__iter__()
第二の方法:
ソースを表示
三つの方法:
print(dir(list))
限り公式声明は__iterを持っているよう__()メソッドは、反復可能です
長所と短所
1.メリット
柔軟1.1
1.2直視値
2.欠点
2.1は、メモリを消費します
イテレータ
限り公式声明は、__iter __()メソッド__next __()メソッドを持っているとしてイテレータです
句柄"f"是个迭代器
f = open("xxxx","w")
f.__iter__()
f.__next__()
lst = [1,2,3,4,6]
new_list = lst.__iter__() #将可迭代对象转换成迭代器
new_list.__iter__()
new_list.__next__()
s = "123434"
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 = "12343" # 更改版for的本质
s = [1,2,3,4,5,7]
count = len(s)
new_s = s.__iter__()
while count:
print(new_s.__next__())
count -= 1
s = "12345"
new_s = s.__iter__()
while True:
try:
print(new_s.__next__()) # for真实本质
except StopIteration:
break
# except Exception:
# print("我是万能的!")
# break
4.再帰
定義
1.通話自体を(自分自身を呼び出すために継続) - デッド再帰
2.明確な終了条件があります
会う上記の二つが有効な再帰的です
配信:実行条件は、最後まで満たされています
戻る:バックオフ状態の終わりの初めから、
公式声明:1000の最大レベル、実際のテスト997分の998
示例: 猜3
def age(n): # 1,2,3
if n == 3:
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)
概要
反復可能オブジェクト:
利点:柔軟で、あなたは直接の値を参照することができ
、合計メモリ、反復のない値:欠点を
イテレータ:
利点:メモリを節約する、不活性機構
短所:柔軟ではないが、操作が複雑で、直接の要素を見ることができません
反復子特性:
(NOランアウト)1.使い捨て
(逆ではない)2逆行することができない
不活性機構3(メモリを節約)
反復可能オブジェクトは何である:
多くの独自のメソッドがあり、__iter __を持つ()メソッドは、反復可能です
イテレータは何である:
(__ __iterあり)と__next __()メソッドは、イテレータです
反復子を使用する場合:データの容器に大量に反復子を使用する場合場合