1. 程式人生 > >Python(48)_函式引數

Python(48)_函式引數

1  多個引數

#-*-coding:utf-8-*-
'''
 1、按位置傳遞多個引數
 2、
'''
#
def my_sum(a,b):
    res = a+b
    return res
'''傳遞方式1,按照位置傳參'''
#ret = my_sum(1,2)
'''站在實參的角度上,按照引數傳參'''
ret = my_sum(b=3,a=9)
print(ret)

'''混著用可以,但是必須先按照位置傳參,再按照關鍵字傳參
   不能給同一個引數傳多個值
'''
# ret = my_sum(2,a=1),不可以!

# my_sum(a=1,2) # 不可以!!!

 

2  位置引數和預設引數

#-*-coding:utf-8-*-

'''站在形參角度
   1、位置引數,必須傳,且有幾個引數就傳幾個值
   2、預設引數,如果傳了,就用傳的,沒傳就用預設的
   按位置傳參
   按關鍵字傳參
   注意:定義函式引數的時候,必須先定義位置引數,再定義預設引數
'''
def classmate(name,sex=''):
    print('%s : %s'%(name,sex))
classmate("bowen")
classmate("wenwen",'')
classmate('bowen1'
) classmate("bowen2") classmate("bowen3") classmate(sex='',name='bowen22')


3   動態引數   *args,接收按照位置傳參的值,組織成一個元組


#-*-coding:utf-8-*-

'''
動態引數
 *不能少,表示動態的!
 引數名args,這是約定的,比入print()函式
 定義引數的順序:先定義位置引數
                在定義動態引數
                最後定義預設引數
'''
def sum(*args):
    n 
= 0 for i in args: n +=i return n print(sum(1,2)) print(sum(1,2,3))

4   **kwargs ,接收,組織成一個字典形式的

#-*-coding:utf-8-*-

'''
動態引數
 *不能少,表示動態的!
 引數名args,這是約定的,比入print()函式
 定義引數的順序:先定義位置引數
                在定義動態引數
                最後定義預設引數
                *不能按關鍵字傳遞
'''
def func(**kwargs):
   print(kwargs)
func(a = 1,b=2,c=3)
func(a = 1,b=2)
func(a=1)


5   動態引數混用

#-*-coding:utf-8-*-

'''
動態引數
混合用,最無敵
不能換位置
'''
def func(*args,**kwargs):
   print(args,kwargs)
func(1,2,3,4,5,a='aaaa',b='bbb')


6   預設引數混合動態引數時的傳參順序

#-*-coding:utf-8-*-

'''
動態引數
混合用,最無敵
不能換位置,*必須在**之前!這是之前約定好的
'''
def func(*args,default=6,**kwargs):
   print(args,default,kwargs)
func(1,2,3,4,5,default=8,a='aaaa',b='bbb')


7  * 號對於實參和形參的不同作用

#-*-coding:utf-8-*-

'''
站在形參的角度上,給變數加上*,就是組合所有傳來的值
'''
def func(*args):
    print(args)
func(1,2,3,4,5)
l = [1,2,3,4,5]
func(l[0],l[1],l[2])
'''站在實參角度上給序列加上*號,就是將這個序列按照順序打散'''
func(*l)


8  **對於實參和形參的作用

#-*-coding:utf-8-*-

'''
站在形參的角度上,給變數加上**,就是組合所有傳來的值
'''
def func(**kwargs):
    print(kwargs)
func(a=1,b=2)
d = {'a':1,'b':2}
func(**d)
'''站在實參角度上給序列加上**號,就是將這個序列按照順序打散'''

9  函式的註釋