一文搞清楚Python函数的参数
本文作者:胡艺粼,中南财经政法大学金融学院
本文编辑:郭培军
技术总编:孙一博
Stata and Python 数据分析
由李春涛教授和团队成员司海涛、薛原编写的《Stata正则表达式及其在财务数据中的应用》终于和大家见面啦!爬虫俱乐部特此为大家准备了100本,即日起购买爬虫俱乐部课程,可赠送本书一本,先到先得!
购书链接:
引言
在python中,函数的作用是对代码进行封装,实现单一或相关联的功能,最大程度地做到代码的重复使用,提高代码的运行效率和可读性。在使用时,我们通常会根据自己对功能的需要定制函数,在这个过程中,参数作为定制的接口,将我们输入的信息传递给函数,从而实现函数的调用,所以,参数的作用是十分重要的。今天就和小编一起深入了解一下它吧!
一、参数的类型
def function(name):
print(f'I love {name}.' )
function("python")
运行结果如下:
在这个例子中,"name"是形参,是在定义函数的时候输入的参数名字;"python"是实参,是在调用函数时传递进去的值。在使用时,首先按照函数的要求设定形参,然后将指定的实参正确传递进去,函数就会按计划运行。
二、传递参数的方式
位置参数
位置参数是拥有固定位置的参数。对于位置参数来说,在定义函数时,参数的顺序已经确定了,实参会按照形参定义的顺序进行传递,一一对应。在使用的时候,需要按照正确的顺序传递参数。举例如下:
def num(m,n):
s = m**n
print(s)
num(3,2) #运行结果:9
num(2,3) #运行结果:8
在这个例子中,设定的函数是计算m的n次方,这里的m和n就是位置参数。调用函数时输入的"3"和"2"是根据位置参数的顺序分别传递给参数m和n。当我们想要计算3的2次方时,就需要输入("3","2")。
如果在定义函数的时候为参数指定了默认值,那么该参数就是默认参数。在调用函数时,如果没有传递实参,运行结果就会采用指定的默认值;而如果传递了实参,该实参就会覆盖默认值。举例如下:
def square(m,n=2):
s = m**n
print(s)
square(3) #运行结果:9
square(3,3) #运行结果:27
在这个例子中,我们希望利用函数计算m的平方,所以定义n为默认参数,默认值为"2"。当只输入参数m的值"3"时,n会采用默认值"2",运行结果是"9"。如果同时输入参数m和n的值("3","3"),那么"3"作为n的值,将会覆盖默认值"2",运行结果就是计算3的3次方,得到"27"。
注意:如果使用默认参数,在定义函数的时候,默认参数需要放在最后。
根据文章前面对位置参数的介绍,要想完成函数的调用,只需要按照正确的顺序传递参数就可以了。但是,如果参数比较多,记住参数的顺序就会变得麻烦且容易出错,这个时候,我们就可以采用关键字参数。
关键字参数将参数的名字与传入的内容对应,传递时只需要知道参数的名字,不用记住每个参数的位置。另外,它允许传入0个或任意多个含参数名的参数。举例如下:
def function(a,b):
print(f'Today is {a}, tomorrow is {b}.')
function(b="Monday",a="Sunday")
运行结果如下:
通过这个例子可以看出关键字参数与参数的顺序无关,只要相对应地输入每个参数的名称与值,就可以得到想要的结果。
在关键词参数部分,还有另外的一个要点:如果定义函数时在形参前面加上"**",那么调用函数的时候就会将输入的关键字参数打包为字典,这样就可以实现同时传入位置函数和任意多个关键词函数。但是要注意,如果同时使用位置参数和关键字参数,在输入顺序上,位置参数必须在关键字参数之前。
def function(a,b,**kw):
print(f'Today is {a}, tomorrow is {b}.')
print(kw)
function("Monday","Sunday",year="2022",time="10:00")
运行结果如下:
在定义函数时,如果在参数之间加上"*",那么星号后面的参数就是命名关键字参数,正如下面例子中的参数c和d,在调用函数的时候必须传入参数名称与对应值,这就对特定参数进行了限制。举例如下:
def function(a,b,*,c,d):
print(a,b,c,d)
function("name", "age", c="gender", d="city")
运行结果如下:
不定长参数也称为可变参数,表示可以传入的参数个数是可变的,即允许传入任意数量的参数。定义不定长参数只需在形参的名字前面加上"*",实质上是进行了打包操作,将多个参数打包到一个元组里,这样就可以利用循环实现元组中每一个参数的计算。举例如下:
def function(*args):
sum= 0
for i in args:
sum = sum + i
print(sum)
function(1,2,3) #运行结果:6
function(4,5,6,7) #运行结果:22
注意:在定义函数时,如果在不定长参数的后面还需指定其他参数,那么在调用函数时其他参数就要作为关键字参数,输入名称与对应值。例如:
def function(*args,a,b):
print(args,a,b)
function(1,2,3,a=4,b=5)
运行结果如下:
以上就是这次分享的关于函数参数的全部内容啦!相信读过这篇文章之后,大家对这部分知识会有更清晰深入的了解。学习的过程中要勤于练习哦!
最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐 Stata爬豆瓣和烂番茄——国内外的观影口味果然大不同 邮箱附件太多?Python帮你批量下载! 正则表达式之多次匹配
爬虫君为你的数据自由操碎了心!cnborder重磅推出!
基于Python的假设检验实现 Stata与MySQL交互--基础操作 Jupyter Notebook中的魔术命令 《Stata正则表达式》由中国金融出版社出版发行 匿名函数lambda到底怎么用?Stata绘图系列—NBER Working paper仿图
Camelot:从PDF中提取表格数据 Stata之计算财务指标——融资约束Stata绘图系列——玩转绘图通用选项之坐标轴玩转地图的好帮手--pyecharts
爬虫俱乐部又又又输送了一位研究助理!!! 【数据分析】一文教你玩转DataFrame【数据分析-入门】一看就会!Numpy的创建、索引、切片与更新
带你玩转Stata编码 关于我们微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可
以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。