设置python默认参数的方法

  介绍

小编给大家分享一下设置python默认参数的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

我们知道,在调用函数时,如果不指定某个参数,解释器会抛出异常。为了解决这个问题,python允许为参数设置默认值,即在定义函数时,直接给形式参数指定一个默认值,这样的话,即便调用函数时没有给拥有默认值的形参传递参数,该参数可以直接使用定义函数时设置的默认值。

定义带有默认值参数的函数,其语法格式如下:

def 函数名(…,形参名=默认值):   ,,,代码块

注意,在使用此格式定义函数时,指定有默认值的形式参数必须在所有没默认值参数的最后,否则会产生语法错误。

例如,如下程序为名称、消息形参指定了默认值:

#,为两个参数指定默认值   def  say_hi (name =,“孙悟空“,,message =,“欢迎来到python学习网“):   ,,,print(名字,,,,,您好“)   ,,,print(“消息是:“,,消息)   #,全部使用默认参数   say_hi ()   #,只有消息参数使用默认值   say_hi(“白骨精“)   #,两个参数都不使用默认值   say_hi(“白骨精,,,“欢迎学习Python")   #,只有名字参数使用默认值   say_hi (message =,“欢迎学习Python")

运行结果为

孙悟空,,,您的好   消息是:欢迎来到python学习网   白骨精,,,您的好   消息是:欢迎来到python学习网   白骨精,,,您的好   消息是:欢迎学习Python   孙悟空,,,您的好   消息是:欢迎学习Python

从上面程序可以看的出,如果只传入一个位置参数,由于该参数位于第一位,系统会将该参数值传给名字参数,因此,不能按如下方式调用say_hi()函数:

say_hi(“欢迎学习Python")

上面调用时传入的“欢迎学习Python”字符串将传给名字参数,而不是消息参数。

更不能按如下方式来调用say_hi()函数:

say_hi (name=鞍坠蔷?,,“欢迎学习Python")

因为Python规定,关键字参数必须位于位置参数的后面。因此提示错误:位置参数是关键字参数。

那么,能不能单纯地将上面两个参数交换位置呢?

say_hi(“欢迎学习Python",,, name=鞍坠蔷?

上面调用依然是错误的,因为第一个字符串没有指定关键字参数,因此将使用位置参数为名字参数传入参数值,第二个参数使用关键字参数的形式再次为名字参数传入参数值,这意味着两个参数值其实都会传给名字参数,程序为名字参数传入了多个参数值。因此提示错误:say_hi()有多个值参数& # 39;名字# 39;。

将函数调用改为如下两种形式是正确的:

say_hi(“白骨精,,,消息=盎队癙ython")   say_hi (name=鞍坠蔷?,,消息=盎队癙ython")

上面第一行代码先使用位置参数为名字参数传入参数值,再使用关键字参数为消息参数传入参数值;第二行代码中的名字,消息参数都使用关键字参数传入参数值。

再次强调,由于Python要求在调用函数时关键字参数必须位于位置参数的后面,因此在定义函数时指定了默认值的参数(关键字参数)必须在没有默认值的参数之后,例如如下代码:

#,定义一个打印三角形的函数,有默认值的参数必须放在后面   def  printTriangle (char, height =, 5),:   ,,,for 小姐:拷贝范围(1,height  +, 1),:   ,,,,,,,#,先打印一排空格   ,,,,,,,for  j 拷贝(height 神;我),范围:   ,,,,,,,,,,,印刷(& # 39;,& # 39;,,最终获得=,& # 39;& # 39;)   ,,,,,,,#,再打印一排特殊字符   ,,,,,,,for  j 拷贝范围(2,*,小姐:安康;1),:   ,,,,,,,,,,,印刷(char,最终获得=,& # 39;& # 39;)   ,,,,,,,print ()   printTriangle (& # 39; @ # 39;,, 6)   printTriangle(& # 39; # & # 39;,,身高=7)   printTriangle (=char  & # 39; * & # 39;)

上面程序定义了printTriangle()函数,其中,有默认值的高度形参,必须放在char形参的后面;反之,将会造成语法错误。

在Python中,可以使用“函数名。__defaults__”查看函数的默认值参数的当前值,其返回值是一个元组,例如,显示上面定义的printTriangle函数的默认值参数的当前值,可以使用printTriangle。__defaults__,其结果为(5)只

设置python默认参数的方法