函數的定義與調用
# 定義
def wash():
print("加水")
print("搓洗")
print("脫水")
# 調用
wash()
函數傳參數
def wash(a, b, c):
print("加水{}升".format(a))
print("搓洗{}分鐘".format(b))
print("脫水{}分鐘".format(c))
wash(3, 40 ,10)
形參,實參
上例中a b c為行參 傳遞的 3 40 10為實參
實參與形參必須一一對應不能多或者少
關鍵字參數
可以使用以下方式傳遞參數
wash(a=3, b=40 ,c=10)
使用關鍵字參數參數傳遞順序可以不一緻
預設參數
def wash(a, b=20, c=10):
print("加水{}升".format(a))
print("搓洗{}分鐘".format(b))
print("脫水{}分鐘".format(c))
wash(3, 40, 20)
注意:預設參數如果不傳遞參數值會使用預設值
預設參數後面不能有非預設參數即預設參數需要放在最後
可變長參數
示例
# 可變長參數
def funct1(*args):
for i in args:
print(i, end=" ")
print()
funct1(1, 2, 3, 4, 5)
# 定義一個函數傳遞多個參數求和
def add_num(*args):
sum = 0
for i in args:
sum += i
print(sum)
add_num(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
函數綜合傳參-多個關鍵字
# 函數綜合傳參
def people(name, *args, age=18, **kwargs):
print(name)
print(args)
print(age)
print(kwargs)
people("zhangsan", "man", age=25, salary=20000, department="IT")
使用參數**kwargs傳遞參數轉換成字典 輸出如下
zhangsan
('man',)
25
{'salary': 20000, 'department': 'IT'}
函數傳回值
函數傳回值是函數得到的一個結果
函數的功能要專一,一個函數隻能完成一個功能
傳回值示例
def test(a, b):
c = a + b
return c
print(c) # 函數執行到return就結束了,這句不會繼續執行
test(1, 2) # 調用執行函數 無輸出
print(test(1, 2)) # 列印傳回值輸出3
d = test(1, 2) # 傳回值可以指派給變量
print(d)
函數結果要被其他地方調用就不用在函數内部使用print列印,色圖return傳回值
嵌套函數
在一個函數體内調用其他函數
def aaa():
print("aaa")
def bbb():
print("bbb")
aaa()
bbb()
執行順序
1,定義函數aaa
2,定義函數bbb
3,執行函數bbb
4,執行函數bbb内代碼列印字元串bbb
5,執行函數bbb内代表aaa()即執行函數aaa 列印字元串aaa
輸出為
bbb
aaa
小結:
函數需要先定義在調用
調用函數就是執行函數體内的代碼
函數類似一個變量,定義函數就是把函數體内代碼在記憶體開放一個空間存放進去,通過函數名來調用
傳遞三個數字傳回最大值
def max_num2(a, b):
if a > b:
return a
else:
return b
def max_num3(n1, n2, n3):
aaa = max_num2(n1, n2)
bbb = max_num2(aaa, n3)
return bbb
解析
函數 max_num2傳遞2個參數傳回較大的
函數 max_num3傳遞3個參數,在内部調用函數max_num2第一次調用傳回參數1 2的較大值指派給aaa 然後再次調用函數max_num2把aaa即參數1 2的較大值很參數3進行對比把較大指派給bbb然後傳回,最終擷取了3給參數中的最大值
函數變量作用域
name = "zhangsan" # 全局變量
def change_name():
name = "lisi" # 這個變量隻在函數内部生效
gender = "male"
print(name)
change_name()
print(name) # 結果為zhangsan
print(gender) # 報錯,變量gender隻在函數内部使用
注意:如果函數内部沒有重新定義變量則在函數内部可以使用全局變量,如果定義了局部變量則優先使用局部變量
遞歸函數