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

來源:互聯網
上載者:User

標籤:一個   運行   ros   一個使用者   bar   col   end   sar   items   

1、*args

 

# 位置參數,計算x2的函數def power(x):    return x * xp = power(5)print(p)# 把power(x)修改為power(x, n),用來計算xndef power(x, n):    s = 1    while n > 0:        n = n - 1        s = s * x    return sp1 = 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函數—函數參數(三)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.