我有一个文字,我希望看起来像这样。
这是第一个指导:" fc52457d-42a5-4ad7-9619-c1513ce60a96"这是第二个:" f6df6054-c433-48a6-bc22-449b037f4fc9"
我想用.format()来实现它,但只能引用uuid函数一次并以某种方式调用它两次,如下所示:
initWithCoder:
我不想使用{0}和{1}表示法,如果我只是放置,例如{0}而不是空括号我将获得两个实例的相同GUID。 有没有办法在.format中多次调用uuid函数?
答案 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