Python函数默认参数设置(超级详细)

这篇具有很好参考价值的文章主要介绍了Python函数默认参数设置(超级详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

        注意,在使用此格式定义函数时,指定有默认值的形式参数必须在所有没默认值参数的最后,否则会产生语法错误。
下面程序演示了如何定义和调用有默认参数的函数:

#str1没有默认参数,str2有默认参数
def dis_str(str1,str2 = "http://c.biancheng.net/python/"):
print("str1:",str1)
print("str2:",str2)

dis_str("http://c.biancheng.net/shell/")
dis_str("http://c.biancheng.net/java/","http://c.biancheng.net/golang/")

运行结果为:

str1: http://c.biancheng.net/shell/
str2: http://c.biancheng.net/python/
str1: http://c.biancheng.net/java/
str2: http://c.biancheng.net/golang/

        上面程序中,dis_str() 函数有 2 个参数,其中第 2 个设有默认参数。这意味着,在调用 dis_str() 函数时,我们可以仅传入 1 个参数,此时该参数会传给 str1 参数,而 str2 会使用默认的参数,如程序中第 6 行代码所示。
        当然在调用 dis_str() 函数时,也可以给所有的参数传值(如第 7 行代码所示),这时即便 str2 有默认值,它也会优先使用传递给它的新值。
同时,结合关键字参数,以下 3 种调用 dis_str() 函数的方式也是可以的:

dis_str(str1 = "http://c.biancheng.net/shell/")
dis_str("http://c.biancheng.net/java/",str2 = "http://c.biancheng.net/golang/")
dis_str(str1 = "http://c.biancheng.net/java/",str2 = "http://c.biancheng.net/golang/")

        再次强调,当定义一个有默认值参数的函数时,有默认值的参数必须位于所有没默认值参数的后面。因此,下面例子中定义的函数是不正确的:

#语法错误
def dis_str(str1="http://c.biancheng.net/python/",str2,str3):
pass

        显然,str1 设有默认值,而 str2 和 str3 没有默认值,因此 str1 必须位于 str2 和 str3 之后。
        有读者可能会问,对于自己自定义的函数,可以轻易知道哪个参数有默认值,但如果使用 Python 提供的内置函数,又或者其它第三方提供的函数,怎么知道哪些参数有默认值呢?
        Pyhton 中,可以使用“函数名.__defaults__”查看函数的默认值参数的当前值,其返回值是一个元组。以本节中的 dis_str() 函数为例,在其基础上,执行如下代码:

print(dis_str.__defaults__)

程序执行结果为:文章来源地址https://www.toymoban.com/news/detail-404427.html

('http://c.biancheng.net/python/',)

到了这里,关于Python函数默认参数设置(超级详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++漂流记】函数的高级应用——函数默认参数、占位参数、重载

    函数的高级应用,侧重介绍函数的默认参数、函数的占位参数、函数重载定义解释及使用。 函数默认参数是指在函数声明时为参数提供一个默认值,这样在调用函数时如果没有传入相应的参数,就会使用默认值代替。函数默认参数可以简化函数的调用,使得函数更加灵活。

    2024年02月09日
    浏览(35)
  • 【ES】笔记-函数参数默认值

    ES6 允许给函数参数赋值初始值 1. 形参初始值 具有默认值的参数,一般放到最后 2. 与解构赋值结合 如果对象属性host 没有传,就走默认值。反之对象属性中的值

    2024年02月13日
    浏览(30)
  • 在Python中matplotlib函数的plt.plot()函数的颜色参数设置,以及可以直接运行的程序代码!

    在matplotlib中, plt.plot()函数可以接受颜色参数 ,可以设置为 字符串颜色(如\\\'red\\\') ,也可以设置为 十六进制颜色 (如’#FF0000’表示红色),也可以设置为 RGB元组(如(1,0,0)表示红色) 。 如果想要用数值(如0,1)来设置颜色,可以使用 颜色映射(Colormap) 。 在matplotlib中

    2024年02月04日
    浏览(48)
  • 超级详细Git操作 之git log 命令的参数详解

    git log 命令主要用于查看Git版本演变历史(也就是提交历史),同时根据追加的参数和选项不同,也会有不同的展示效果。 但默认 git log 命令显示出的x效果实在太丑,不好好打扮一下根本没法见人,打扮好了用 alias 命令拍个照片,就正式出道了! 1、 git log 命令说明 git log

    2024年02月02日
    浏览(36)
  • MyBatis中在Mapper中如何传递多个参数?(4种方法,超级详细)

    1、若Dao层函数有多个参数,那么其对应的xml中, #{0} 代表接收的是Dao层中的第一个参数, #{1} 代表Dao中的第二个参数,以此类推。 假设Dao层函数有两个参数,分别是int类型的id和String类型的name: 2、使用@Param注解,在Dao层函数的参数前面添加@Param注解来显式指定每个参数的名

    2024年02月05日
    浏览(44)
  • c++常用库函数(超级详细版)

    min函数用于比较得到较小数 max函数用于比较得到较大数 Algorithm 中的排序函数是基于快速排序算法实现的,时间复杂度为 O(N*logN) 基本思想:通过一趟排序将待排序的数据分割成独立的两部分,左边部分的所有数据比右边部分的所有数据都要 小 ,然后再按此方法对这两部分数

    2024年02月04日
    浏览(47)
  • 【Python从入门到人工智能】16个必会的Python内置函数(5)——数据转换与计算(详细语法参考 + 参数说明 + 具体示例)

      你的思绪就像这池水,朋友,稍有外界触动就很难清澈明朗,可如果让它静下来,答案顿时变得清晰了。   🎯 作者主页 : 追光者♂ 🔥          🌸 个人简介 : 计算机专业硕士研究生 💖、 2022年CSDN博客之星人工智能领域TOP4 🌟、 阿里云社区特邀专家博主 🏅、 C

    2023年04月13日
    浏览(52)
  • C++ 构造函数实战指南:默认构造、带参数构造、拷贝构造与移动构造

    构造函数是 C++ 中一种特殊的成员函数,当创建类对象时自动调用。它用于初始化对象的状态,例如为属性分配初始值。构造函数与类同名,且没有返回值类型。 C++ 支持多种类型的构造函数,用于满足不同的初始化需求: 默认构造函数: 不带参数的构造函数,通常用于初始化

    2024年04月22日
    浏览(45)
  • JavaScript全解析——ES6函数中参数的默认值和解构赋值

    本文为千锋资深前端教学老师带来的【JavaScript全解析】系列,文章内含丰富的代码案例及配图,从0到1讲解JavaScript相关知识点,致力于教会每一个人学会JS! 文末有本文重点总结,可以收藏慢慢看~ 更多技术类内容,主页关注一波! 给函数的形参设置一个默认值, 当你没有传

    2024年02月05日
    浏览(39)
  • im2col函数实现超级详细解释

    阅读《深度学习入门:基于python的理论与实现》,其中在实现CNN的章节中,提到为了CNN的快速计算需要将输入数据展开是以适合滤波器(权重),对于输入数据,将应用滤波器的区域(3维方块)横向展开为1列(如下图)。im2col会在所有应用滤波器的地方进行这个展开处理。

    2023年04月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包