Python函数入参解惑

时间:2022-03-20 21:07:28

Python函数入参解惑

介绍

由于最近一个需求需要使用python来开发,所以就学习了下python,其中让我有一点困惑的是python的函数入参我第一眼确实蒙圈了,看内建函数定义了那么多入参,但是调用的时候并不是都需要传入参数的,这让我很是奇怪(由于本人之前一直都是使用java开发的),于是我决定好好研究下python函数入参到底是怎么回事。虽然只学了一两天但是对python还是挺有好感的,相信python会成为我的辅助语言。

python函数参数定义

默认缺省函数

def function(name,age=20):
print("name:",name)# xuyi
print("age:",age) # 20
pass

# 默认缺省函数
function("xuyi")

//定义默认缺省函数时,默认缺省参数必须要在非缺省参数后面定义

根据参数名传参数

def function(name,age,sex):

print("name:",name)# xuyi
print("age:",age) # 23
print("sex:",sex) # man
pass

# 注意我调函数时参数和入参并不是一一对应的
function(sex="man",name="xuyi",age=23)

//即使传入参数顺序和函数定义不一致,也能调用成功
//这点java是不具备的

可变长度参数(元组和字典)

元组

def function(name,*params):

print("name:",name) # xuyi
print("params:",params) # 1、(); 2、("hello",world)

function("man")
print("---------")
function("man","hello","wolrd")

# *表示这个参数是元组参数,默认为().

//java虽然也有可变参数但是和python略有不同

元组和字典

def function(name,*params,**dict_params):

print("name:",name)
print("params:",params)
print("dict_params:",dict_params)


params=("hello","world")
dict_params={"key1":"value1","key2":"value2"}
function("man",*params,**dict_params,key3="value3")# 1

function("man",1,2,3,a=1,b=2,key3="value3")# 2

# *表示这个参数是元组参数,默认为().
# **表示这个参数是字典参数,默认为{}.

# 参数中如果使用“*”元组参数或者“**”字典参数,这两种参数应该放在参数列表最后.并且“*”元组参数位于“**”字典参数之前
# 元组对象前面如果不带“*”、字典对象如果前面不带“**”,则作为普通的对象传递参数.

//正因为python中的这种可变参数非常的灵活,就更显得python动态语言特性了,看源码时要多注意。


*param相当于java的可变参数
**param就是python特有的字典入参

第一种方式调用

Python函数入参解惑

第二种方式调用

Python函数入参解惑

参考

1、http://www.cnblogs.com/xudong-bupt/p/3833933.html
2、http://blog.csdn.net/xmnathan/article/details/39156697