2017-04-01 3 views
1

Gibt es eine bessere Möglichkeit, redundanten Code zu vermeiden? Wie in diesem Fall, wenn storage 0 ist, dann möchte ich es nicht an die Funktion übergeben und Code sauber halten, aber ich musste ein Wenn-sonst machen.So überspringen Sie leere Schlüsselwortargumente

if storage == 0: 
    response_lc = asg_client.create_launch_configuration(
     ImageId=ami, 
     InstanceType=instance_type, 
     KeyName=keypair 
    ) 
else: 
    response_lc = asg_client.create_launch_configuration(
     VolumeSize=storage, 
     ImageId=ami, 
     InstanceType=instance_type, 
     KeyName=keypair 
    ) 
+1

Wie ist das besser, als einen Nullwert zu übergeben? Warum behandelt create_launch_configuration diesen Wert nicht? Könnten Sie z.B. 'Lagerung oder None'? – jonrsharpe

+0

Dies ist ein Anbieter API und schlägt fehl, wenn kein Wert übergeben, lassen Sie mich versuchen, die "keine" – user1619524

+0

Kein Typ ist nicht gültig: -/ – user1619524

Antwort

1

Wenn es keinen Ausweg gibt, können Sie dies tun:

kwargs = { 
    "ImageId": ami, 
    "InstanceType": instance_type, 
    "KeyName": keypair 
} 
if storage: 
    kwargs["VolumeSize"] = storage 

response_lc = asg_client.create_launch_configuration(**kwargs) 

Aber ich werde beraten Sie in die asg_client.create_launch_configuration Methode zu graben und sehen, ob alle vier Parameter können in allen übergeben werden Fälle.

+0

Vielen Dank, @ishan. es hat gut geklappt, wir haben einen guten Tag vor uns. – user1619524

Verwandte Themen