为什么这一段程序会出错

这应该是默认值参数吧。不是应该可以实参小于形参吗?为什么只能f(1,2,3)不会报错 我知道改,但不懂为什么

img

  在python函数体中没用 return 返回值,默认返回空 None ,不显式写 return (函数体中没有return语句),就相当于 return None 或者 return 显式写出返回语句。

  这样 f(1)、f(2)、f(1, 3)、f((2,4, 5)调用函数 f() 都不会报错,因为后两个形参都有缺省的默认值0,没有给出就启用缺省参数0。如——

  • 代码运行效果截屏图片

    img

  • 代码

#!/sur/bin/nve python
# coding: utf-8

def f(x, y=0, z=0):
    print(f"\nX: {x}\nY: {y}\nZ: {z}\n")


if __name__ == '__main__':
    f(1)
    f(2)
    f(3, 5)
    f(6, 7, 8)
    f(7, 0, 9)


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7553246
  • 这篇博客你也可以参考下:第十五届研究生数学建模F题(机场新增卫星厅对中转旅客影响的评估方法)——飞机登机口优化分配问题
  • 除此之外, 这篇博客: 爬虫项目二:简单的半自动化的爬虫抖音评论,你还不会吗?中的 1.工具准备 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    所需工具:1.pycharm 2.appium 3.mitmdump 4.fiddler 5.夜神模拟器

    关于fiddler和手机模拟器配置情况请参考上篇爬取抖音无水印视频文章

    appium下载地址:Release 1.20.2 · appium/appium-desktop,选择版本正常下载安装
    在这里插入图片描述

  • 以下回答来自chatgpt:

    当默认值参数被使用时,实参和形参的关系是:如果调用函数时给出实参值,那么这些值会代替参数列表中对应位置上的默认值。如果没有给出实参值,那么参数列表中对应位置上的默认值会被使用。当使用f(1,2,3)时不会出错是因为在这个调用中给出了三个实参值,这些值分别代替了参数列表中的a、b、c参数。

    默认值参数的使用可以让函数调用更加简单,避免了不必要的繁琐,但是需要注意以下几点细节:

    1. 默认值参数只能出现在列表的末尾。
    2. 如果一个默认值参数在列表中被指定了值,那么它之后的所有参数都必须被指定值。
    3. 如果一个默认值参数没有被指定值,它会使用默认值。

    以下是一个简单的示例代码,用于演示默认值参数的使用:

    def example(a, b=1, c=2):
        print("a =", a)
        print("b =", b)
        print("c =", c)
    
    # 不指定任何参数,使用默认值
    example(0)
    # 输出:a = 0, b = 1, c = 2
    
    # 指定一个参数,使用默认值
    example(0, b=3)
    # 输出:a = 0, b = 3, c = 2
    
    # 指定所有参数,覆盖默认值
    example(0, 4, 5)
    # 输出:a = 0, b = 4, c = 5
    

    需要注意的是,如果想要在使用默认值参数时不出错,需要严格遵守以上规则,否则可能会出现语义错误或者代码异常。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^