Python(48)_函式引數
阿新 • • 發佈:2019-01-06
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 函式的註釋