如何从 python 函数 return 整个列表
How to return the whole list from a python function
我有一个小脚本如下:
import boto3
ACCESS_KEY= "XXXXXXXXXXXXX"
SECRET_KEY= "XXXXXXXXXXXX"
regions = ['us-east-1','us-west-1','us-west-2','eu-west-1','sa-east-1','ap-southeast-1','ap-southeast-2','ap-northeast-1']
for region in regions:
client = boto3.client('ec2',aws_access_key_id=ACCESS_KEY,aws_secret_access_key=SECRET_KEY,region_name=region,)
addresses_dict = client.describe_addresses()
for eip_dict in addresses_dict['Addresses']:
print eip_dict['PublicIp']
这段代码工作正常并打印出来自所有区域的所有 EIP 的列表,现在我正在尝试在我的另一个脚本中使用上面的代码,使用的函数如下:
def gather_public_ip():
ACCESS_KEY = config.get('aws','access_key')
SECRET_KEY = config.get('aws','secret_key')
regions = ['us-east-1','us-west-1','us-west-2','eu-west-1','sa-east-1','ap-southeast-1','ap-southeast-2','ap-northeast-1']
all_EIP = []
for region in regions:
client = boto3.client('ec2',aws_access_key_id=ACCESS_KEY,aws_secret_access_key=SECRET_KEY,region_name=region,)
addresses_dict = client.describe_addresses()
for eip_dict in addresses_dict['Addresses']:
print eip_dict['PublicIp']
all_EIP.append(eip_dict['PublicIp'])
return all_EIP
但这仅在第一次迭代后中断(它只打印一个 IP)并且不会 return 整个列表给调用者 ,我正在调用上面的函数来自 __main__
如下:
net_range = gather_public_ip()
r = s.run(net_range)
s.save() # save
基本上我想将 return 的 ip 列表传递给 run()
。有人能帮我吗 ?
你 return 你 all_EIP
在嵌套 for 循环的第一次迭代中。缩进 return 以便它在外部 for 之后执行,您应该拥有所有应该附加的内容。
def gather_public_ip():
ACCESS_KEY = config.get('aws','access_key')
SECRET_KEY = config.get('aws','secret_key')
regions = ['us-east-1','us-west-1','us-west-2','eu-west-1','sa-east-1','ap-southeast-1','ap-southeast-2','ap-northeast-1']
all_EIP = []
for region in regions:
client = boto3.client('ec2',aws_access_key_id=ACCESS_KEY,aws_secret_access_key=SECRET_KEY,region_name=region,)
addresses_dict = client.describe_addresses()
for eip_dict in addresses_dict['Addresses']:
print eip_dict['PublicIp']
all_EIP.append(eip_dict['PublicIp'])
return all_EIP
我有一个小脚本如下:
import boto3
ACCESS_KEY= "XXXXXXXXXXXXX"
SECRET_KEY= "XXXXXXXXXXXX"
regions = ['us-east-1','us-west-1','us-west-2','eu-west-1','sa-east-1','ap-southeast-1','ap-southeast-2','ap-northeast-1']
for region in regions:
client = boto3.client('ec2',aws_access_key_id=ACCESS_KEY,aws_secret_access_key=SECRET_KEY,region_name=region,)
addresses_dict = client.describe_addresses()
for eip_dict in addresses_dict['Addresses']:
print eip_dict['PublicIp']
这段代码工作正常并打印出来自所有区域的所有 EIP 的列表,现在我正在尝试在我的另一个脚本中使用上面的代码,使用的函数如下:
def gather_public_ip():
ACCESS_KEY = config.get('aws','access_key')
SECRET_KEY = config.get('aws','secret_key')
regions = ['us-east-1','us-west-1','us-west-2','eu-west-1','sa-east-1','ap-southeast-1','ap-southeast-2','ap-northeast-1']
all_EIP = []
for region in regions:
client = boto3.client('ec2',aws_access_key_id=ACCESS_KEY,aws_secret_access_key=SECRET_KEY,region_name=region,)
addresses_dict = client.describe_addresses()
for eip_dict in addresses_dict['Addresses']:
print eip_dict['PublicIp']
all_EIP.append(eip_dict['PublicIp'])
return all_EIP
但这仅在第一次迭代后中断(它只打印一个 IP)并且不会 return 整个列表给调用者 ,我正在调用上面的函数来自 __main__
如下:
net_range = gather_public_ip()
r = s.run(net_range)
s.save() # save
基本上我想将 return 的 ip 列表传递给 run()
。有人能帮我吗 ?
你 return 你 all_EIP
在嵌套 for 循环的第一次迭代中。缩进 return 以便它在外部 for 之后执行,您应该拥有所有应该附加的内容。
def gather_public_ip():
ACCESS_KEY = config.get('aws','access_key')
SECRET_KEY = config.get('aws','secret_key')
regions = ['us-east-1','us-west-1','us-west-2','eu-west-1','sa-east-1','ap-southeast-1','ap-southeast-2','ap-northeast-1']
all_EIP = []
for region in regions:
client = boto3.client('ec2',aws_access_key_id=ACCESS_KEY,aws_secret_access_key=SECRET_KEY,region_name=region,)
addresses_dict = client.describe_addresses()
for eip_dict in addresses_dict['Addresses']:
print eip_dict['PublicIp']
all_EIP.append(eip_dict['PublicIp'])
return all_EIP