1. 程式人生 > >Python---函數---默認參數

Python---函數---默認參數

python 函數 參數 默認參數 坑 list=none

# 默認參數
# 由於我們經常計算x2,所以,完全可以把第二個參數n的默認值設定為2


def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
# 這樣,當我們調用power(5)時,相當於調用power(5, 2)
print(‘print power(5)‘, power(5))
print(‘print power(5,3)‘, power(5, 3))

# 從上面的例子可以看出,默認參數都已簡化函數的調用。
# 設置默認參數時,有幾點需要註意
# 一是必選參數在前,默認參數在後,否則Python的解釋器會報錯(默認參數放在前面會產生歧義~~)
# 二是如何設置默認參數
# 當函數有多個參數時,把變化大的參數放前面,變化小的參數放後面。變化小的參數就可以作為默認參數
# 使用默認參數有什麽好處?最大的好處是能降低調用函數的難度

# 定義函數enroll,把年齡和城市設為默認參數


def enroll(name, gender, age=6, city=‘Beijing‘):
    print(‘name:‘, name)
    print(‘gender:‘, gender)
    print(‘age:‘, age)
    print(‘city‘, city)
# 這樣,大多數學生註冊時不需要提供年齡和城市,只提供必須的兩個參數
enroll(‘Sarah‘, ‘F‘)
# 只要與默認參數不符的學生才需要提供額外的信息
# 有多個默認參數時,調用的時候既可以按順序提供默認參數,也可以不按順序提供默認參數
enroll(‘Bob‘, ‘M‘, 7)
# 當不按順序提供部分默認參數時,需要把參數名寫上
enroll(‘Adam‘, ‘M‘, city=‘Tianjin‘)


# 下面代碼演示默認參數中的一個坑


def add_end(L=[]):
    L.append(‘END‘)
    return L
# 第一次調用add_end
print(add_end())
# 第二次調用add_end
print(add_end())
# Python函數在定義的時候,默認參數L的值就被計算出來了,即[],因為默認參數L也是一個變量,它指向對象[]
# 每次調用該函數,如果改變了L的內容,則下次調用時,默認參數的內容就變了,不再是函數定義時的[]了
# 所以,定義默認參數要牢記:默認參數必須指向不變對象

# 要修改上面的例子,我們可以用None這個不變對象來實現


def add_end(L=None):
    if L is None:
        L = []
    L.append(‘END‘)
    return L
print(add_end())
print(add_end())


Python---函數---默認參數