12.函數名的使用 函數是第一類對象 1. 函數名可以當做值被賦值給變數 2. 函數名可以當做元素存放在容器中: 3. 函數名可以當做函數的參數 4. 函數名可以當做函數的返回值 13.格式化f: python3.6版本及以上可以使用 14.遞歸: 特點:不斷調用自己本身 1. 死遞歸 不斷調用自己 ...
12.函數名的使用
函數是第一類對象
- 函數名可以當做值被賦值給變數
def func():
print(1)
return
a = func
print(func)
print(a)
a()
- 函數名可以當做元素存放在容器中:
def func():
print(1)
return
lst = [func,func,func]
for i in lst():
i()
- 函數名可以當做函數的參數
def func(f):
f()
return
def foo():
print(123)
return
func(foo)
- 函數名可以當做函數的返回值
def func():
def foo():
print(123)
return
return foo
a = func()
a()
13.格式化f:
python3.6版本及以上可以使用
#填充字元串
s = f"你好{'啊'}"
s1 = F"你好{'a'}"
print(s)
print(s1)
#填充變數
s = "不去"
s2 = f"我去{s}"
#填充計算公式
s1 = f"{35+15}"
print(s1)
#填充表達式
a = 10
b = 20
s1 = f"{a if a>b else b}"
print(s1)
#填充大括弧
s1 = f"{{{{{'我勒個去'}}}}}"#每兩個顯示一個
print(s1)
#{}大括弧內可以放{},int,方法,函數,list,str,字典值
#{}內不可放符號,要用引號引起來
s1 = f"{{}{}{}{}}"
print(s1)
s1 = f"{print(123)}"
print(s1)
14.遞歸:
特點:不斷調用自己本身
- 死遞歸 -- 不斷調用自己
- 有明確的終止條件
滿足以上兩個條件是有效遞歸
遞:一直執行
歸:從結束開始往回退
官方聲明:最大層次 1000,實際測試998/997
def func():
print(123)
func()
func()
#猜數:
'''
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(age(1))
可變數據類型預設參數的坑:
def func(a,lst = []):
lst.append(a)
return lst
lst1 = func(10)
lst2 = func(123,[])
lst3 = func('aaa')
print(lst1)
print(lst2)
print(lst3)
'''
結果:
[10,'aaa']
[123]
[10,'aaa']
'''