函數基礎-05函數的參數

一丶形參和實參

1.1 形參
在函數定義階段括號內定義的參數,稱之爲形式參數,簡稱形參,本質就是變量名。python

def func(x, y):
    print(x)
    print(y)

1.2 實參app

在函數調用階段括號內傳入的參數,稱之爲實際參數,簡稱實參,本質就是變量的值。函數

func(1,2)


二丶位置參數

2.1 位置參數
在函數定義階段,按照從左到右的順序依次定義的形參,稱之爲位置形參。ui

def func(x, y):
    print(x)
    print(y)

特色:按照位置定義的形參,都必須被傳值,多一個不行,少一個也不行。code

2.2 位置實參
在函數調用階段,按照從左到右的順序依次定義的實參,稱之爲位置實參。ip

func(1,2)

特色:按照位置爲對應的形參依次傳值。it


三丶關鍵字實參

在調用函數時,按照key=value的形式爲指定的參數傳值,稱爲關鍵字實參。io

func(y=2, x=1)

特色:能夠打破位置的限制,但仍能爲指定的形參賦值。class

注意:
 1.能夠混用位置實參和關鍵字實參,可是位置實參必須在關鍵字實參的左邊。
 2.能夠混用位置實參和關鍵字實參,但不能對一個形參重複賦值。變量

func(x, y=2)
func(y=2, x)  # SyntaxError: positional argument follows keyword argument
func(x, x=1)  # NameError: name 'x' is not defined


四丶默認形參

在定義階段,就已經被賦值。

def func(x, y=10):
    print(x)
    print(y)
    
func(2)

特色:在定義階段就已經被賦值,意味着在調用時能夠不用爲其賦值。

注意:

 1.位置形參必須放在默認形參的左邊。
 2.默認形參的值只在定義階段賦值一次,也就是說默認參數的值在函數定義階段就已經固定了。

m = 10


def foo(x=m):
    print(x)


m = 111
foo()  # 10

 1.默認參數的值一般應該是不可變類型。
 2.可變類型一般都會用到*方法打散轉化,函數體形參會用*方法得到對應數值。

# 演示形參是可變類型
def register(name, hobby, hobby_list=[]):
    hobby_list.append(hobby)
    print(f"{name} prefer {hobby}'")
    print(f"{name} prefer {hobby_list}")


register('nash', 'read')
register('tank', 'zuipao')
register('jason', 'piao')

nash prefer read' nash prefer ['read'] tank prefer zuipao' tank prefer ['read', 'zuipao'] jason prefer piao' jason prefer ['read', 'zuipao', 'piao']

# 修改形參是可變類型代碼
def register(name, hobby, hobby_list=None):
    if hobby_list is None:
        hobby_list = []
    hobby_list.append(hobby)
    print(f"{name} prefer {hobby}'")
    print(f"{name} prefer {hobby_list}")


register('nash', 'read')
register('tank', 'zuipao')
register('jason', 'piao')

nash prefer read' nash prefer ['read'] tank prefer zuipao' tank prefer ['zuipao'] jason prefer piao' jason prefer ['piao']


五丶總結

實參的應用:取決於我的習慣
形參的應用:

 1.大多數狀況的調用值同樣,就應該將該參數定義成位置形參  2.大多數狀況的調用值同樣,就應該將該參數定義成默認形參

相關文章
相關標籤/搜索