python2.7 位置引數,命名引數,任意位置引數,任意命名引數

一。 形參與實參:

形參: 在函式定義的時候括號裡面的引數

def funct(number, add_number): # number與add_number 就是形參 pass

實參: 在函式呼叫的時候括號裡面的引數

def funct(number, add_number): # number與add_number 就是形參 pass if __name__ == ‘__main__’: funct(5, 3) # 5與3 就是實參 # 實參與形參在呼叫的時候相當於:number = 5, add_number = 3,把實參賦給形參

位置引數: 傳遞引數的時候按位置把實參賦給形參

def funct(number, add_number): # number與add_number 就是形參 print number, add_number>>>funct(1, 2)>>>1, 2# 當然在呼叫函式的時候也可以直接使用命名引數來直接給形參賦值從而不考慮位置關係>>>funct(add_number=1, number=2)>>>1, 2

任意數量位置引數:可以傳入任意數量的的位置引數

# 可以透過*運算子捕獲所有的位置引數def funct(*number): print number>>>funct(1, 2)>>>(1, 2)# *運算子捕獲所有的位置引數,然後打包成元組賦給形參number>>>funct([1, 2]) # 把一個元組作為實參傳進去>>>([1, 2]) # 得到的結果不出所料,引數被打包成元組賦給形參number>>>funct(*[1, 2]) # 如果在實參的前面加一個*運算子是解包的意思相當於funct(1, 2)>>>(1, 2)

命名引數(關鍵字引數/預設引數)

def funct(number=5, add_number=6): print number, add_number>>>funct() # 當你呼叫函式而不輸入引數的時候number的值預設就是5, add_number就是6>>>5 6# 命名引數不用考慮引數的位置順序>>>funct(add_number=6, number=5)>>>5 6>>>funct(add_number=7, number=8)>>>8 7

任意數量命名引數(關鍵字引數/預設引數)

# 可以透過**運算子捕獲所有的命名引數def funct(**number): print number>>>funct(number=5, add_number=6)# **運算子捕獲所有的命名引數,然後打包成字典賦給形參number>>>{‘number’: 5, ‘add_number’: 6}# 如果在實參的前面加一個**運算子是解包的意思,把與形參名相同的key的對應的值賦給形參例子1:def funct(number=5, add_number=6): print number, add_number>>> val = {‘number’: 5, ‘add_number’: 6}>>> funct(**val) # 相當於funct(number=5, add_number=6)>>>5 6>>> funct(val) # 如果不加**運算子,相當於 funct(number=val, add_number=6)>>> {‘number’: 5, ‘add_number’: 6} 6

建議上面所有的程式碼都認真看註釋去體會

思考一下

讓函式打印出5,6有幾種傳參方式,

tub = (5, 6)def funct(number, add_number): print number, add_number

讓函式打印出8,20有幾種傳參方式

dit = {‘number’=5, ‘add_number’=20}def funct(number=5, add_number=6): print number, add_number

當你呼叫maya cmds的時候是不是可以使用解包字典的方式,去試一下吧!

import maya。cmds as cmdsdic = {‘f’: True, ‘new’: True}cmds。file(**dic)