1. 程式人生 > >廖雪峰網站:學習python函數—函數參數(三)

廖雪峰網站:學習python函數—函數參數(三)

print func bsp 功能 會有 如果 item lee clas

1、*args

# 位置參數,計算x2的函數
def power(x):
    return x * x

p = power(5)
print(p)

# 把power(x)修改為power(x, n),用來計算xn
def power(x, n):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
p1 = power(5, 2)
p2 = power(5, 3)
print(p1)
print(p2)

# 默認參數
# 使用默認參數有什麽好處?最大的好處是能降低調用函數的難度。
def power(x, n=2): s = 1 while n > 0: n = n - 1 s = s * x return s # 關鍵字參數有什麽用? # 它可以擴展函數的功能。比如,在person函數裏, # 我們保證能接收到name和age這兩個參數,但是,如果調用者願意提供更多的參數,我們也能收到。 # 試想你正在做一個用戶註冊的功能,除了用戶名和年齡是必填項外, # 其他都是可選項,利用關鍵字參數來定義這個函數就能滿足註冊的需求。 # *args是可變參數,args接收的是一個tuple
# 可變參數既可以直接傳入:func(1, 2, 3),又可以先組裝list或tuple, # 再通過*args傳入:func(*(1, 2, 3)); def hello(greeting, *args): if (len(args)==0): print(%s! % greeting) else: print(%s, %s! % (greeting, , .join(args))) hello(Hi) hello(Hi, Sarah) hello(Hello, Michael, Bob
, Adam) names = (Bart, Lisa) hello(Hello, *names)

2、**kw

# Python的函數具有非常靈活的參數形態,既可以實現簡單的調用,又可以傳入非常復雜的參數。

# 默認參數一定要用不可變對象,如果是可變對象,程序運行時會有邏輯錯誤!

# 要註意定義可變參數和關鍵字參數的語法:
# *args是可變參數,args接收的是一個tuple;
# **kw是關鍵字參數,kw接收的是一個dict。
# 以及調用函數時如何傳入可變參數和關鍵字參數的語法:
# 可變參數既可以直接傳入:func(1, 2, 3),又可以先組裝list或tuple,
# 再通過*args傳入:func(*(1, 2, 3));

# 關鍵字參數既可以直接傳入:func(a=1, b=2),又可以先組裝dict,
# 再通過**kw傳入:func(**{‘a‘: 1, ‘b‘: 2})。

# 使用*args和**kw是Python的習慣寫法,當然也可以用其他參數名,但最好使用習慣用法。

# 命名的關鍵字參數是為了限制調用者可以傳入的參數名,同時可以提供默認值。

# 定義命名的關鍵字參數在沒有可變參數的情況下不要忘了寫分隔符*,否則定義的將是位置參數。


def print_scores(**kw):
    print( Name Socre)
    print(..........)
    for name, score in kw.items():
        print(%10s  %d %(name, score))
        print()
print_scores(Adam = 99, Lisa=88, Bart=77)

data ={

    Adam Lee: 99,
    Lisa S: 88,
    F.Bart: 77
}

print_scores(**data)

def print_info(name, *, gender, city=Beijing, age):
    print(Personal Info)
    print(-------------)
    print(Name:%s % name)
    print(Gender:%s % gender)
    print(City: %s % city)
    print(age:%s % age)
    print()
print_info(Bob, gender=male, age=20)
print_info(Lisa,gender=female, city=Shanghai, age=18)

廖雪峰網站:學習python函數—函數參數(三)