调用双引号内的变量值时遇到问题
下面是我的代码:
AccountID = ["1234567","5678912"]
for account in range(len(AccountID)):
response = sts.assume_role(RoleArn=(f"arn:aws:iam::{AccountID[account]}:role/Cloudbees_Jenkins"), RoleSessionName="learnaws-test-session")
print(response)
我有没有变量值的返回响应输出
File "test3.py", line 19
response = (RoleArn=(f"arn:aws:iam::{AccountID[account]}:role/Cloudbees_Jenkins"), RoleSessionName="learnaws-test-session")
^
SyntaxError: invalid syntax
如何返回预期结果,例如:
arn:aws:iam::1234567:role/Cloudbees_Jenkins
arn:aws:iam::5678912:role/Cloudbees_Jenkins
3条答案
按热度按时间oipij1gg1#
你可以使用f-string,这是在python中引用print语句中变量的一种非常方便的方式。
在您的情况下,它看起来像这样:
wrrgggsh2#
这里的问题与生成字符串无关。
问题在于,在Python中,
=
(赋值)操作符不产生输出值。所以表达式
RoleArn = ...a_bunch_of_stuff...
只将这些值赋给RoleArn
,它不会产生任何可以赋给response
的输出值。并且赋值
RoleSessionName="learnaws-test-session"
不会产生任何返回值,该返回值可以被赋值为被赋值给RoleArn
的元组的一部分。因此,只需将代码分成三行:
在最新的Python版本(Python 3.8及更新版本)中,可以使用“walrus operator”
:=
来赋值和返回表达式中使用的值,但在代码中不应该这样做,因为IMO会使代码变得不那么清晰。irtuqstp3#