有關python 函數參數

來源:互聯網
上載者:User

標籤:關鍵字   key   而且   形參   類型   需要   命名   foo   rgs   

# def foo(x):
# print(x)
#
#
# foo(1)
# foo(‘a‘)
# foo({‘a‘:2})


#形參與實參:
# def foo(x,y): #x=1,y=2
# return x+y
#
# foo(1,2)



#===================================part1
#位置參數:按照從左至右的順序依次定義的參數


def foo(x,y):
print(x)
print(y)
#按位置定義的形參,必須被傳值,多一個不行,少一個也不行

# foo(1,2,3)


#按位置定義的實參,與形參一一對應
# foo(2,10)



#===================================part2
#關鍵字參數:實參在定義時,按照key=value形式定義
# def foo(x,y):
# print(x)
# print(y)
#
# # foo(y=10,x=1)
# foo(y=10,x=1) #關鍵字參數可以不用像位置實參一樣與形參一一對應,指名道姓地傳值



def foo(x,y):
print(x)
print(y)


# foo(1,10)
# foo(x=1,y=10)
# foo(1,y=10)
# foo(y=10,1)
# foo(x=10,1)

# foo(1,x=10,y=20)


# def foo(x,y,z):
# print(x)
# print(y)
# print(z)
# # foo(1,z=20,10)
# foo(1,y=2,z=10)
#注意的問題一:位置實參必須在關鍵字實參的前面
#注意的問題二:實參的形式既可以用位置實參又可以是關鍵字實參,但是一個形參不能重複傳值




#===================================part3
#預設參數:在定義函數階段,就已經為形參賦值,定義階段有值,調用階段可以不用傳值
# def func(x,y=10):
# print(x)
# print(y)


# func(1,20)
# func(1)



# def func(y=10,x):
# print(x)
# print(y)



#位置實參
#關鍵字實參

#位置形參
#預設參數(形參)


#形參的應用:值經常變化的需要定義成位置形參,
# 值大多數情況下都一樣,需要定義成預設參數
# def register(name,age,sex=‘male‘):
# print(name,age,sex)
#
# register(‘alex‘,1000)
# register(‘wupeiqi‘,9000)
# register(‘yuanhao‘,10000)
# register(‘王鐵蛋‘,10000,‘female‘)







#預設參數需要注意的問題一:必須放在位置形參後面
#預設參數需要注意的問題二:預設參數通常要定義成不可變類型
#預設參數需要注意的問題三:預設參數只在定義階段被賦值一次
# x=10
# def func(name,age=x):
# print(name)
# print(age)
# x=20
#
# func(‘egon‘)





# def func(name,age=10,sex=‘male‘,hobby=[‘play1‘,‘play2‘]):
# print(name)
# print(age)
# print(hobby)
#
# func(‘egon‘)


#===================================part4
#可變長參數:可變長指的是實參的個數不固定
#按位置定義的可變長度的實參:*
#按關鍵字定義的可變長度的實參:**

#
# def func(x,y,*args): #x=1,y=2,args=(3,4,5,6)
# print(x,y)
# print(args)
#
# func(1,2,3,4,5,6)




# def func(x,y,*args): #args=(3,4,5,6)
# print(x,y)
# print(args)
#
# func(1,2,*(3,4,5,6)) #foo(1,2,3,4,5,6)


# def func(x,y,z):
# print(x,y,z)
#
# # func(1,*(2,3)) #func(1,2,3)
# func(*(2,3)) #func(2,3)



#
# def func(x,y=2,z=1):
# print(x,y,z)
#
#
# func(*(‘a‘,‘b‘,‘c‘)) #func(‘a‘,‘b‘,‘c‘)









# def func(x,y,**kwargs): #x=1,y=2,kwargs={‘a‘:1,‘b‘:3,‘z‘:3}
# print(x,y)
# print(kwargs)
#
# func(1,y=2,z=3,a=1,b=3)





# def func(x,y,**kwargs): #x=1,y=2,**kwargs=**{‘a‘:1,‘b‘:3,‘z‘:3}
# print(x,y)
# print(kwargs)
#
# func(1,y=2,**{‘a‘:1,‘b‘:3,‘z‘:3}) #func(1,y=2,z=3,b=3,a=1)


# def func(x,y=1,z=1):
# print(x,y,z)
#
# func(**{‘y‘:2,‘x‘:1,‘z‘:3}) #




# def wrapper(*args,**kwargs): #可以接受任意形式,任意長度的參數
# print(args)
# print(kwargs)
#
#
# wrapper(1,2,3,3,3,3,3,x=1,y=2,z=3)




#
# def index(name,group):
# print(‘welcome %s to index page,group is: %s‘ %(name,group))
#
# def wrapper(*args,**kwargs): #可以接受任意形式,任意長度的參數
# # print(args) #args=(1,2,3)
# # print(kwargs) #kwargs={‘x‘:1,‘y‘:2,‘z‘:3}
# index(*args,**kwargs) #index(*(1,2,3),**{‘x‘:1,‘y‘:2,‘z‘:3}) #index(1,2,3,z=3,y=2,x=1)
#
# wrapper(name=‘egon‘,group=‘group1‘)








#命名關鍵字參數:定義在*後的形參,這類形參,必須被傳值,而且要求實參必須是以關鍵字的形式來傳值

# def register(**kwargs):
# print(kwargs)
# if ‘name‘ in kwargs:
# print(kwargs[‘name‘])
# if ‘age‘ in kwargs:
# print(kwargs[‘age‘])
#
#
# # register(name=‘egon‘,age=18)
# register()



# def register(*args,name=‘egon‘,age):
# print(args)
# print(name)
# print(age)
#
# # register(name=‘egon‘,age=18)
# register(1,2,2,3,age=10)



#
# def register(name,age,*,group,**kwargs):
# print(name)
# print(age)
# print(kwargs)
#
#
# # register(‘egon‘,18)
# register(‘egon1‘,18,hobby=‘paly1‘,group=‘group1‘)


# def func(x,y=1,*args,z,**kwargs):
# print(x)
# print(y)
# print(args)
# print(z)
# print(kwargs)
#
# func(1,2,3,4,5,z=10,a=1,b=2)



#
# def func(x,*args,z=1,**kwargs):
# print(x)
# print(args)
# print(z)
# print(kwargs)
#
# func(1,2,3,4,5,a=1,b=2,c=3)






#形參:位置形參,預設參數,*args,命名關鍵字參數,**kwargs




# def foo(x,y=1,*args,z,**kwargs):
#     print(x)
#     print(y)
#     print(args)
#     print(z)
#     print(kwargs)
# foo(1,2,3,4,5,z=10,a=1,b=3) 

  





有關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.