从函数中进行多次赋值

时间:2015-12-01 12:44:35

标签: python python-3.x

在Python中,是否可以通过以下方式进行多项任务(或者更确切地说,是否有简写):

SET autocommit=0;

5 个答案:

答案 0 :(得分:2)

是否要为从随机函数的两个不同调用分配不同的返回值,或者将单个值分配给由单个函数调用生成的两个变量。

对于前者,使用元组解包

t = (2,5)
a,b = t #valid!

def random_int():
    return random.randint(1, 100)
#valid: unpack a 2-tuple to a 2-tuple of variables
a, b = random_int(), random_int()
#invalid: tries to unpack an int as a 2-tuple
a, b = random_int()

#valid: you can also use comprehensions
a, b = (random_int() for i in range(2))

对于第二个,您可以链分配以将相同的值分配给多个变量。

#valid, "normal" way
a = random_int()
b = a

#the same, shorthand
b = a = random_int()

答案 1 :(得分:0)

字典是一种很好的方法,否则你可以在python中使用集合中的namedtuples,试试这样的东西,你会在单个变量中收到多个调用结果说一个

num = namedtuple("num", "b c d")
a = num(random_int(),random_int(),random_int())
print a.b,a.c,a.d

进口:

from collections import namedtuple

答案 2 :(得分:0)

您可以返回任何对象,包括可能在分配时被打包的列表和元组:

import random

def random_ints():
    return random.randint(1, 100), random.randint(1, 100)

a, b = random_ints()
print(b, a)

实际上这个a, b也是元组的快捷方式,当你做多个赋值时,左边的逗号分隔变量列表也是元组,可以写成:

(a,b)=范围(2)

答案 3 :(得分:0)

我个人最喜欢的是将您的功能转换为生成器(前提是它适合您的程序)。

示例:

>>> import random
>>>
>>> def rnd_numbers(how_many=1):  # assuming how_many is positive
...     for _ in range(how_many):  # use xrange() in Python2.x
...         yield random.randint(1, 100)
... 
>>> x, y, z = rnd_numbers(3)
>>> x
98
>>> y
69
>>> z
16
>>> a,b = rnd_numbers(2)
>>> a
52
>>> b
33

答案 4 :(得分:-1)

在我的测试中,如果你的回报中的项目与变量一样多,那么它就可以了。

[undefined, undefined, undefined]