#编程语言#
第八十八节:关键字参数和为参数设置默认值
因为各方面的原因,有好几周时间没有学习和更新了,非常抱歉,眼看着离自己的目标又远了一大截,为此我决定再次投入,奋起直追,希望各位朋友可以继续支持我,谢谢!
关于Python函数中的位置参数接着前面的内容,今天学习的有两项:关键字参数和为参数设置默认值。
首先来看关键字参数。
关键字参数是指使用形式参数的名字来确定输入的参数值。
这句话可以这样理解:在执行函数的时候,使用创建函数时使用的形式参数名字来直接指定参数的值。
继续使用身高体重BMI指数实例来看一下关键字参数的使用方法和效果,先改一下代码,在执行函数时使用关键字参数,详见下图:
指定关键字参数值
然后看一下执行结果,详见下图:
指定关键字执行结果
从执行结果中可以发现,使用关键字参数之后,无论参数值的位置如何改变,最终的执行结果还是正确的,不会受到定义函数时参数顺序的影响。这就是关键字参数的最大作用。了解Python函数中的形式参数和实际参数
接下来看看如何为参数设置默认值。
前面已经学过了部分函数和方法在不指定参数值的情况下,执行时会调用默认参数值,四个关于序列应用的模拟实例那么在自定义函数中,也可以自主设定参数的默认值。具体格式参照下图:
为参数设置默认值格式
如上面的格式所示,设定参数默认值的时候,只需要在创建函数的时候,将形式参数等于一个默认值就可以了,这样在执行的时候,不指定这个形式参数的值的情况下,就会执行默认值,并且设定默认值的形式参数位置必须排在所有参数的最末位。
还是使用BMI指数的例子,将其中的的一个参数name设定默认值等于“路人甲”,下图就是修改后的代码,只有一点点不同:
为参数设置默认值实例代码
执行的结果,就是在执行函数的时候不指定name参数的情况下,结果都会默认为“路人甲”,详见下图:
为参数设置默认值实例执行结果
那么既不在创建函数时设定参数默认值,又不在执行函数时指定参数值,会发生什么情况呢?请看下图:
不设置默认值又不指定参数值就会出现异
以上指定参数默认值都是在默认值为不可变对象的情况下,那么默认值是可变对象的话会出现什么情况呢?使用一个实例来说明一下:
可变对象为默认值实例
上图的参数默认值是一个可变对象--一个空列表“[]”,在多次执行函数时,每次的结果都是不一样的,逐渐的在空列表中加入了元素,这就代表参数的默认值在逐渐的变化。
这样显然是不对的,既然是默认值,就应该是唯一指定的不变的值,变来变去还叫什么默认值啊。
所以为了避免这种情况的发生,可以将参数的默认值设定为一个None值,同时在函数主体中判断当参数等于None值,参数默认值等于一个空列表,这个时候,函数在执行时不指定参数并多次执行,参数的默认值也不会改变。下图就是这样修改后执行的实例:
可变对象设置默认值限制变化实例
以上实例的内容阐述了一个定理:在创建函数的时候,为形式参数指定默认值必须指向一个不可变的对象!
最后介绍一下在Python中如何查询参数默认值的方法。
在Python中,可以使用defaults方法直接输出参数的默认值,它的具体格式是这样的:输出函数print+小括号“(”+函数名+一个点“.”+双下划线“_ _”+方法名“defaults”+双下划线“_ _”+小括号“)”。
使用这个方法,随手查询一下上面的None值实例中设定的参数默认值,得到的结果就是用元组的形式输出了参数的默认值。如下图所示:
查询参数默认值方法实例
感谢您的关注、分享、收藏和点赞!
明天奉上的将是“可变参数”,敬请拭目以待。
为自己加油,我是“学海无涯自学不惜!”