【发布时间】:2019-08-18 22:58:42
【问题描述】:
我在 Python 中有一个函数,在同一个函数中我有多个 if 语句。可以说我想从我的函数中返回一个值。我创建了一个局部变量并在 if 语句中更改它。问题是我需要在函数中定义它,这样它才能在每个 if 语句中工作,但与 C 不同,我不能使用 int a, b, c; 而是我必须给它们一个值。问题是,如果没有一个 if 语句为真,则该值将被识别。
一个明确的解决方案是将全局值作为函数的参数,但我不想这样做,因为我不需要它们的值,我只想更改它。
velocity = 5
distance = 6
def calc(distance):
# i would need to say velocity = 5 here
distance + velocity # this does nothing but uses velocity so code cant run
if distance < 7 : # without defining velocity first (in first comment)
velocity = 6
elif distance < 10:
velocity = 7
return velocity
【问题讨论】:
-
如果没有一个 if 语句为真,预期的结果是什么?返回
None? -
这还不清楚。定义与局部变量同名的全局变量的动机是什么?如果函数需要一些关于
velocity当前值的信息,只需将其作为函数的参数即可。 -
@TomasFarias 第一条评论中的值。代码实际上是按照我第一次编写的方式运行的,所以我现在对其进行了编辑,对此感到抱歉
-
在 C 中,在函数体中声明
int a,b,c;是未定义的行为,而不是给a一个值,然后有类似return a;的东西。您似乎在问如何在 Python 中复制未定义的行为。听起来充其量是XY problem。 -
为什么不使用速度作为参数?如果你真的不希望它成为函数的参数,那么构建一个以velocity 作为成员变量并以calc 作为方法的对象。