Python - return 使用元组的多个值(AWS lambda 函数)
Python - return multiple values using tuple (AWS lambda function)
这是我当前的代码:
def handler():
ec2 = boto3.resource("ec2", region_name="ap-southeast-2")
instances = ec2.instances.filter(Filters=[{'Name':'iam-instance-profile.arn', 'Values': ['arn:aws:iam::123456789012:instance-profile/TestRole']}])
for instance in instances:
return (instance.private_ip_address)
我正在尝试 return 所有 private_ip_addresses。此代码仅 return 给我 1 个 IP 地址,但我应该取回 3 个地址。如果我改为 print
,它 return 是正确的 3 个值
我做了一些研究,发现使用 tuple 是一个好方法,但到目前为止它对我不起作用。这是我正在尝试使用元组的示例代码(如果正确,它应该适用于我的代码)
myList=[1,2,3,4,5,6]
def handler():
tup=()
for element in myList:
tup+= (element,)
return tup
这目前 return 是一个空值。但是,如果我 print tup
,它 return 就是 (1, 2, 3, 4, 5, 6)
任何人都可以让我知道我在使用元组时哪里出错了。或者是否有更好的方法(与 lambda 函数的工作方式相对应)?
语句“return (instance.private_ip_address)
” returns 一个由单个值组成的元组。事实上,它是从循环中调用的,这没有任何区别 - 只要 return
语句在第一次迭代期间执行,循环就会终止。
以下应该有效:
def handler():
ec2 = boto3.resource("ec2", region_name="ap-southeast-2")
instances = ec2.instances.filter(Filters=[{'Name':'iam-instance-profile.arn', 'Values': ['arn:aws:iam::123456789012:instance-profile/TestRole']}])
return tuple([instance.private_ip_address for instance in instances])
在您的处理程序代码中,当您使用 print
而不是 return
时,它工作正常,因为它不会中断循环或函数。但是当 Python 遇到 return 时,它 return 就是我们要求它 return 的值,并得出函数结束的结论。它不会继续循环和 return 一次又一次的值。
为了更正您的代码,请使用 python 中可以包含多个值的任何数据结构,例如元组或列表,并将您需要的任何值附加到 return循环,一旦循环完成,return 数据结构。
这是我当前的代码:
def handler():
ec2 = boto3.resource("ec2", region_name="ap-southeast-2")
instances = ec2.instances.filter(Filters=[{'Name':'iam-instance-profile.arn', 'Values': ['arn:aws:iam::123456789012:instance-profile/TestRole']}])
for instance in instances:
return (instance.private_ip_address)
我正在尝试 return 所有 private_ip_addresses。此代码仅 return 给我 1 个 IP 地址,但我应该取回 3 个地址。如果我改为 print
,它 return 是正确的 3 个值
我做了一些研究,发现使用 tuple 是一个好方法,但到目前为止它对我不起作用。这是我正在尝试使用元组的示例代码(如果正确,它应该适用于我的代码)
myList=[1,2,3,4,5,6]
def handler():
tup=()
for element in myList:
tup+= (element,)
return tup
这目前 return 是一个空值。但是,如果我 print tup
,它 return 就是 (1, 2, 3, 4, 5, 6)
任何人都可以让我知道我在使用元组时哪里出错了。或者是否有更好的方法(与 lambda 函数的工作方式相对应)?
语句“return (instance.private_ip_address)
” returns 一个由单个值组成的元组。事实上,它是从循环中调用的,这没有任何区别 - 只要 return
语句在第一次迭代期间执行,循环就会终止。
以下应该有效:
def handler():
ec2 = boto3.resource("ec2", region_name="ap-southeast-2")
instances = ec2.instances.filter(Filters=[{'Name':'iam-instance-profile.arn', 'Values': ['arn:aws:iam::123456789012:instance-profile/TestRole']}])
return tuple([instance.private_ip_address for instance in instances])
在您的处理程序代码中,当您使用 print
而不是 return
时,它工作正常,因为它不会中断循环或函数。但是当 Python 遇到 return 时,它 return 就是我们要求它 return 的值,并得出函数结束的结论。它不会继续循环和 return 一次又一次的值。
为了更正您的代码,请使用 python 中可以包含多个值的任何数据结构,例如元组或列表,并将您需要的任何值附加到 return循环,一旦循环完成,return 数据结构。