簡體   English   中英

如何從python函數返回整個列表

[英]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']

這段代碼可以正常工作並打印來自ALL區域的所有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),並且沒有將整個列表返回給調用者 ,我從__main__調用上述函數,如下所示:

       net_range =  gather_public_ip()
       r = s.run(net_range)
       s.save()   # save

基本上我想將返回的IP列表傳遞給run() 有人能幫我嗎 ?

您在嵌套的for循環的第一個迭代中返回all_EIP 縮進返回值,以便它在外部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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM