在python中的打印格式中多次调用GUID函数

时间:2015-12-27 22:01:53

标签: python python-3.x

我有一个文字,我希望看起来像这样。

  

这是第一个指导:" fc52457d-42a5-4ad7-9619-c1513ce60a96"这是第二个:" f6df6054-c433-48a6-bc22-449b037f4fc9"

我想用.format()来实现它,但只能引用uuid函数一次并以某种方式调用它两次,如下所示: initWithCoder:

我不想使用{0}和{1}表示法,如果我只是放置,例如{0}而不是空括号我将获得两个实例的相同GUID。 有没有办法在.format中多次调用uuid函数?

2 个答案:

答案 0 :(得分:1)

这有效:

'This is a first guid: {} and this is a second one: {}'.format(*(uuid.uuid4()
                                                               for _ in range(2)))

打印:

'This is a first guid: c5842b59-795d-452f-b0cd-ba5c7369dde7 and this is a second one: 8c20f372-8044-4b82-bbbd-0e667fb14ed3'

您可以使用*将指定数量的参数传递给函数。例如:

def add(a, b):
    return a + b

>>> L = [10, 20

此:

>>> add(*L)
>>> 30

相当于:

>>> add(L[0], L[1])
30

这是生成器表达式:

>>>(uuid.uuid4for for _ in range(2))
<generator object <genexpr> at 0x10e4d1620>

将其转换为列表以查看其生成内容:

>>> list((uuid.uuid4() for  _ in range(2)))
[UUID('d45eaf67-5ba0-445f-adaa-318f989e2d60'),
 UUID('58fcaf7f-63af-4c7f-9f01-956db6923748')]

答案 1 :(得分:1)

除了像MikeMüller所示生成并将多个UUID传递给格式函数之外,您还可以创建自己的“UUID字符串生成器”类型,只要您在其上调用str(),就会创建一个新的UUID:

class UuidStringGenerator:
    def __str__ (self):
        return str(uuid.uuid4())

print('First: {uuid}\nSecond: {uuid}'.format(uuid=UuidStringGenerator()))
# First: dd38d750-301b-4dec-bf18-4554a96942d8
# Second: bcb27d9f-378d-401e-9746-043834bece09