You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中函数以input为默认参数的作用及与普通参数的差异疑问

为什么def reverse(input='')和def reverse(string)功能相似但写法不同?

嘿,我完全懂你的困惑!一开始看到用input当参数名,很容易和Python里的input()函数搞混,以为这是让用户输入内容,但其实这只是个巧合的参数命名而已,和用户输入半毛钱关系都没有~

咱们拆解一下这两个写法的核心区别:

1. 参数默认值的差异

  • 第一种写法def reverse(input=''):这里给参数input设置了默认空字符串。意思是当你调用这个函数时,如果不传任何参数(比如reverse()),函数会自动用''作为参数值,返回空字符串;如果传参(比如reverse('hello')),就用你传入的值。
  • 第二种写法def reverse(string):这个参数没有默认值,调用时必须传入一个参数,不然Python会直接抛出TypeError,提示你缺少必要参数。

2. input只是个普通参数名

这里的input只是作者随便选的变量名,和Python内置的input()函数完全没关系!就像你可以用a、b、my_string当参数名一样,只是这个名字刚好和内置函数重名了,很容易误导人——其实这不是个好的命名习惯,换成string或者s会更清晰,比如def reverse(string=''),既保留了默认参数的功能,又不会让人混淆。

举个实际调用的例子

  • 传参调用时,两种写法效果完全一致:
    reverse('hello')  # 两种写法都返回 'olleh'
    
  • 不传参时,区别就出来了:
    reverse()  # 第一种写法返回 '';第二种写法直接报错
    

总结这么写的意义

作者这么写的核心目的是给函数添加默认参数,让函数在没有输入的情况下也能正常运行(返回空字符串),而不是必须强制调用者传参。只是参数名选得不太好,才让你产生了“和用户输入相关”的误解~

内容的提问来源于stack exchange,提问作者Red

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:33:58