菜鸟请教一个有关函数的默认参数的问题

2018-01-19 16:56:46 +08:00
 hjq98765

现在有一个函数 func,有两个参数 x,y,其中 x 是必选参数,y 是可选参数

我的想法是:当参数 y 没有传入值的时候,参数 y 的值默认等于参数 x 的值

有点类似于:

def add(x,y=x):
    pass

但是这么写肯定是不对的

所以应当怎么实现我的想法呢?

2247 次点击
所在节点    Python
10 条回复
crab
2018-01-19 17:00:06 +08:00
在函数内判断 Y 是否 None,再赋值是否可行?
Pythonerxiaobai
2018-01-19 17:00:40 +08:00
def add(x, y=None):
if not y:
y = x

return x + y
yujieyu7
2018-01-19 17:01:59 +08:00
不求优雅的话,函数内自己判断和赋值吧
mooncakejs
2018-01-19 17:07:02 +08:00
@Pythonerxiaobai add(1,0) 卒
hjq98765
2018-01-19 17:08:59 +08:00
@crab
@Pythonerxiaobai

我考虑过这种情况,但是如果我指定 x 不为 None,同时 y 为 None,这么写就会有问题
Pythonerxiaobai
2018-01-19 17:15:22 +08:00
@mooncakejs 那在加上判断为 0 的情况呗
bombless
2018-01-19 17:17:25 +08:00
不是 is None 么 233
tonic
2018-01-19 17:23:52 +08:00
```
missing = object()
def add(x, y=missing):
if y is missing:
y = x
```
grimpil
2018-01-20 10:18:59 +08:00
不知道这样可以不


def f(x, *arg):
if len(arg) == 0:
y = x
f(x,y)
elif len(arg) == 1:
y = arg[0]
pass
hjq98765
2018-01-21 12:44:39 +08:00
@grimpil 我觉得你这个是正解了,谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/424287

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX