一、函數
1.函數定義
def 關鍵字 -- 定義
func 函數名 -- 和變量定義規則一樣
()必須要寫格式
: 聲明語句結束
def my_len():
函數體
def func(a:int,b:str):
print(a,b)
func(1,2)
2.函數的好處
1.減少代碼重復性(冗余)
2.代碼可讀性高
3.將功能進行封裝(造工具)
3.調用函數
函數名+()
多次調用就是執行多次
可以循環使用
def func():
print("test")
func()
4.函數的返回值
return 的內容返回給了函數的調用
return 返回一個內容(就是內容本身) 可以返回任意類型
return下方的代碼不執行,終止這個函數
return 終止函數,切記不能終止循環
return 返回多個內容的時候是元組形式
return 沒有寫返回值的時候返回的是None,不寫return返回的也是None
5.位置傳參
def yue(a,b,c=1): # 形參 c = 1是默認參數
print("test")
yue(True,(1,),c=3) # 實參 位置參數 > 默認參數
函數的參數
形參:函數定義的時候叫做形參
位置參數
默認參數
混合參數
實參:函數調用的時候叫做實參
位置參數
關鍵字參數
混合參數
傳參:將實參傳遞給形參的過程叫做傳參
6.函數的動態函數
*args,**kwargs(能夠接收函數的位置參數和動態的關鍵字參數)
定義階段(*args,**kwargs) 聚合
*args -- tuple
**kwargs -- dict
使用階段*args,*kwargs打散
*args - 源數據類型
*kwargs - 打散的是字典的鍵
優先級:位置 > 動態位置 > 默認 > 動態關鍵字
lst = [12,23,323,32,32,4]
def func(*args):
print(*args)
func(lst[0],lst[1]) # 笨的方法
func(*lst)
7.函數的注釋
"""
每次寫函數的時候需要寫注釋
函數名.__doc__ 查看函數的注釋
函數名.__name__ 查看函數的名字
"""
8.名稱空間
內置空間:python解釋器自帶的
全局空間:當前文件(.py文件)
局部空間:函數體開辟的空間
加載順序:內置>全局>局部
取值順序:局部>全局>內置
作用域:
全局作用域:內置+全局
局部作用域: 局部
9.函數嵌套
函數中套函數
函數嵌套調用
函數嵌套參數的傳遞
函數嵌套返回值的傳遞
10.global nonlocal
global:修改全局空間的變量對應的值
nonlocal:在外層的函數中,修改局部空間的變量值,完全不涉及全局變量,只修改離他最近的一層,最近的一層沒有變量繼續向上找,直到找到最外層函數
三元運算符
a = 10
b = 20
c = a if a > b else b
變量名 = 條件成立的結果 條件 條件不成立的結果
二、函數名的應用
1.函數名指向的是函數的內存地址,加上()就執行這個函數
func()
2.函數名就是一個變量
age1 = 12
age2 = age1
age3 = age2
print(age3)
def fuc():
print(666)
f1 = fuc
f2 = f1
f2()
f1()
3.函數名可以作為容器類類型的元素
def func1():
print('in func1')
def func2():
print("in func2")
def func3():
print("in func3")
lst = [func1,func2,func3]
for i in lst:
i()
4.函數名可以作為函數的實參。
def func1():print("in func1")
def func2(argv):
argv()
print('in func2')
func2(func1)
5.函數名可以作為函數的返回值
def func1():
print("in func1")
def func2(argv):
print("in func2")
return argv
ret = func2(func1)
ret()