我有python变量,如下所示。
global a,b,c
我想在一个语句中用不同的值初始化所有这些变量。
有可能吗?
a=b=c=uuid.uuid1() //should return different values for a,b and c
答案 0 :(得分:5)
三次致电uuid.uuid1()
:
a, b, c = uuid.uuid1(), uuid.uuid1(), uuid.uuid1()
你可以把它作为一个循环,但是对于3个固定项目,为什么要这么麻烦?此外,对于像这样只有2或3个元素的解包赋值,CPython编译器optimizes the bytecode。
如果您仍然使用循环(如果您要分配更多目标),请使用生成器表达式并避免创建列表对象:
a, b, c, d, e, f, g, h = (uuid.uuid1() for _ in xrange(8))
答案 1 :(得分:1)
您可以使用生成器执行此操作:
a,b,c = (uuid.uuid1() for _ in range(3))
当您有批次变量来分配数据时,它会特别有用。
a,b,c = (randint(1,10) for _ in range(3))
>>> print a,b,c
7 2 9