缺省是什么意思

上个星期的推文《python定义函数知识大讲堂<1>》简单的向大家介绍了在python中定义函数return语句的基础用法,今天将着重介绍定义函数时的各种参数,参数包含了我们想要传递给函数的信息,定义函数的时候,只要把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,调用者无需了解函数内部的结构。

首先我们需要区分形参和实参的区别。在上篇推文最开始我们定义了一个函数greet,其中username就是形参,而值“ChrisWu”则是实参:

defgreet(username):

print( "Hello~"+username.title()+ "!")

greet( "ChrisWu")

函数定义中有多少种形参,那么在函数调用中就有多少种实参,向函数传递实参的方式主要有以下几种:

1.位置参数/必备参数;

2.缺省参数/默认参数;

3.关键字参数;

4.可变参数/不定长参数

在正文开始前,笔者有几句话要说:可能读者在看文字描述各类参数时会有些许的迷惑,笔者在刚开始学习的时候也总是拘泥于晦涩的文字,但实际上只要结合例子再自己动手操作一遍,就能很好的理解各类参数的含义~还请各位往下看~

一、位置参数

位置参数(又称必备参数)须以正确的顺序传入函数,调用时的数量必须和声明时的一样,函数调用时每一个实参都关联到函数定义中的一个参数,下面我们通过一个例子来更好的理解位置参数:

defindex(m,n):

s = 1

whilen> 0:

n = n -1

s = s*m

returns

index( 5, 3)

index( 3, 5)

结果如图:

缺省是什么意思

缺省是什么意思

在这里我们定义了函数index,用来计算任意数的n次方,参数m和n都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋给参数m和n。比如计算53次方,必须是index(5,3)而不是index(3,5)。

二、默认参数

在上例中,如果我们的代码是:

index(5)

那么将会有如下的运行错误提示:

缺省是什么意思

程序截图显示我们调用函数时遗漏了一个位置参数n,这个时候默认参数(也称为缺省参数)就派上用场了,由于日常计算平方项的次数比较多,我们可以把第二个位置参数n的默认值设置为2,具体程序如下:

defindex(m,n=2):

s = 1

whi原由网len> 0:

n = n -1

s = s*m

returns

index( 5)

结果如图:

缺省是什么意思

在定义函数时,我们在第二个位置参数后面加了个=2,这表示n的默认值为2XHcaEKOTq,那么我们在调用函数时,即使只输入一个参数也不会报错,它默认表示的是计算n=2XHcaEKOTq即m的平方项的值。默认参数简化了函数的调用,在这里需要注意的是,定义函数时,默认参数要放在位置参数的后面。

三、关键字参数

关键字参数是传递给函数的名称-值对,它允许我们传入0个任意个包含参数名的参数,它直接将参数中形参的名称和实参的值关联起来了,因原由网此允许函数调用时参数的顺序与定义时不一致,下面的例子将帮助我们理解关键字参数:

definfo(name,age):

print( "nMy name is "+ name.title())

print( "I'm "+ age.title() + " years old")

info(name = 'Chenshuo',age = '25')

info(age = '25',name //www.58yuanyou.com= 'Chenshuo')

结果如图:

缺省是什么意思

缺省是什么意思

当然你可以使用位置参数的方式直接来调用函数,结果也是一样的:

info( 'chenshuo', '25')

缺省是什么意思

以上只是关键字参数的基础用法,前面曾经提到过关键字参数允许我们传入任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个字典,请看下例:

definfo(name,age,**kw):

print( "nMy name is "+ name.title())

print( "I'm "+ age.title() + " years old")

print(kw)

info( "Chenshuo", "25")

info( "Chenshuo", "25",city= "Hefei",sex= "male")

定义函数时在参数kw前加上两个**,表示kw为关键字参数,这样一来我们不仅可以只传入位置参数,还可以传入任意个数的关键字参数,结果如图:

缺省是什么意思

缺省是什么意思

可以看到传入的关键字参数是以字典的形式作为结果展示的,关键字参数最大的功能就是扩展了函数的功能,在上面定义的函数info中,我们不仅可以得到关于名字和年龄的基础信息,还允许函数的调用者传递更多的其他的信息。

我们还可以限制接受哪些特定的关键字参数,这叫做命名关键字参数,程序如下:

definfo(name,age,*,city,sex):

print(name,age,city,sex)

info( "Chenshuo", "25",city= "Hefei",sex= "male")

和关键字参数前加**不同,命名关键字参数使用的是*,*后面的参数被视为命名关键字参数。结果如图:

缺省是什么意思

如果你试图传入非命名关键字参数,调用时则会报错:

缺省是什么意思

四、可变参数

有时我们可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做可变参数或者叫不定长参数,顾名思义,可变参数就是传入的参数个数是可变的,可以是任意个,包括0个。和上述3种参数不同,声明时不会命名。

我们以这样一个数学题目为例,我们要计算……的值,在这里传入的参数个数是不确定的,那么如何定义函数来实现这个计算呢,程序如下:

defsquare(*nums):

sum = 0

fori innums:

sum = sum + i*i

returnsum

square( 1, 2, 3)

在函数名称nums前加*即可用来表示可变参数,由于传入的可变参数的个数是不确定的,在函数内部接收到的是由参数组成的元祖,所以在函数定义时,用for循环来遍历元祖中的每一个参数进行计算。结果如图:

缺省是什么意思

技术总编:刘贝贝

关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

投稿要求:

1)必须原创,禁止抄袭;

2)必须准确,详细,有例子,有截图;

注意事项:

1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。

3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

内容版权声明:除非注明原创否则皆为转载,再次转载请注明出处。

文章标题: 缺省是什么意思

文章地址: www.58yuanyou.com/baike/92719.html

相关推荐