天天看點

Python函數

函數的定義與調用

# 定義
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隻在函數内部使用
      

  注意:如果函數内部沒有重新定義變量則在函數内部可以使用全局變量,如果定義了局部變量則優先使用局部變量

  遞歸函數