最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python怎么设置默认参数

    正文概述    2020-07-21   393

    python怎么设置默认参数

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

    (推荐教程:python基础教程)

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

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

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

    例如,如下程序为 name、message 形参指定了默认值:

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

    运行结果为

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

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

    say_hi("欢迎学习Python")

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

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

    say_hi(name="白骨精", "欢迎学习Python")

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

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

    say_hi("欢迎学习Python" , name="白骨精")

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

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

    say_hi("白骨精", message="欢迎学习Python")
    say_hi(name="白骨精", message="欢迎学习Python")

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

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

    # 定义一个打印三角形的函数,有默认值的参数必须放在后面
    def printTriangle(char, height = 5) :
        for i in range(1, height + 1) :
            # 先打印一排空格
            for j in range(height - i) :
                print(' ', end = '')
            # 再打印一排特殊字符
            for j in range(2 * i - 1) :
                print(char, end = '')
            print()
    printTriangle('@', 6)
    printTriangle('#', height=7)
    printTriangle(char = '*')

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

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

    相关教程推荐:python爬虫视频教程


    起源地下载网 » python怎么设置默认参数

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元