python灵活,内联变量赋值

时间:2014-07-15 06:36:56

标签: python

我想在python中灵活地为变量赋值,无论我的代码在哪里变量。

例如,在If语句中给出变量x ...

if(x == 5):
    print "that's odd."
else:
    print "Woot."

我希望能够在if语句中分配x,如下所示:

if((x=3) == 5):
    print "that's odd."
else:
    print "Woot."

这可能吗?这是另一个例子。让我们说我有一句话:

y = x + 10

我想在那里分配x:

y = (x=3) + 10

所以我正在寻找一种在我的代码中的任何地方找到变量并为其赋值的方法。是否有pythonic语法?

4 个答案:

答案 0 :(得分:6)

"在Python中,赋值是一个语句,而不是表达式,因此不能在任意表达式中使用。这意味着常见的C语言如:

while (line = readline(file)) {
    ...do something with line...
}

if (match = search(target)) {
    ...do something with match...
}

不能像Python一样使用。 "

http://effbot.org/pyfaq/why-can-t-i-use-an-assignment-in-an-expression.htm

答案 1 :(得分:5)

在Python 3.8中,您可以使用assignment expressions(运算符:=):

if (x := 3) == 5:
    print("that's odd")

y = (x := 3) + 10

答案 2 :(得分:1)

globals()。 setitem (' a',1)或

这有点hacky, 但有两件事是可能的, 通过locals()或globals()函数声明/赋值变量。 使用or链接一个inplace函数(返回None)。

我怀疑使用其中任何一种都是一种好的做法,但它们是可用的

答案 3 :(得分:0)

Python不支持内联分配。为什么?因为一切都是对象,对象应该是可调用的。例如:

这是不可能的python if ((x=10) > 20):

这里我们将x指定为Int类的实例,并在if表达式中执行它。

虽然这样的声明在C / C ++中是可行的,因为它是以不同的心态构建的。