2016-05-12 11 views
0

gesetzt Ich bin ein Terminal-Emulator in Python machen 3. Die Befehle in Funktionen gespeichert werden, wie:Wie eine Funktion mit weniger Argumente nennen, die (Python 3)

def rd(os_vartmp, os_vartmp2): 
    if os_vartmp == None: 
     print('rd [path] [-S]') 
     print('Delete a folder') 
    else: 
     if os.path.isfile(os_vartmp) == True: 
      if os_vartmp2 == '-S': print('a') 
      else: 
       print(ERR5) 

a = input('Command: ') 

Das Terminal funktioniert wie folgt :

  1. fordert Benutzer zur Eingabe
  2. Splits der Eingang
  3. Eingangs Verwendet den ersten Teil einer Funktion in Einheimischen suchen
  4. Wenn es einen gibt, benutzt den Rest Teil der Eingabe als Argument
  5. die Funktionsaufrufe

Die Sache hier ist, wenn ich die Funktion ‚rd‘ nennen mit zum Beispiel ‚rd„boot.py "-S" es funktioniert gut. Aber wenn ich es so nennen muss: rd "boot.py", wirft es mir einen Fehler über 1 Argument, wenn 2 benötigt werden. Gibt es dafür eine Lösung?

+0

Lassen Sie die Funktion eine beliebige Anzahl von Parametern akzeptieren mit ['def rd (os_vartmp, * args)]] (http://stackoverflow.com/questions/36901/what-does-double-star-and-star- do-for-python-Parameter) – TessellatingHeckler

Antwort

0

Haben Sie das versucht?

def rd(os_vartmp, os_vartmp2="-S"): 

Anstatt zu versuchen, Null-Wert zu erhalten, die rd erfordern würde ("boot.py", null) können Sie ser Standardwert und dann können Sie tun rd ("boot.py").

Ich hoffe, es funktioniert.

+0

Aber manchmal brauche ich nicht '-S' – HackerGamerLV

+0

Gibt es eine andere Sache, die Sie als Standardwert setzen können? Vielleicht def (os_vartmp, os_vartmp2 = ""): Gedanke, nicht sicher, ob es funktioniert, – mhyst

+0

Ja, ich habe es versucht, aber es scheint, dass ich os_vartmp2 Wert nicht ändern kann. Wenn ich es mit '-S' anrufe, setzt es os_vartmp2 als "" – HackerGamerLV

1

Sie können ein Argument optional machen, indem Sie in der Methodendefinition einen Wert zuweisen. Zum Beispiel:

def Add(x=0, y=0): 
    return x+y 

Bei Eingabe nur einen Wert, wird y auf 0 Default Wenn ich y einen Wert geben wollte aber haben x fallen zurück auf dem Standardwert ist I Add(y=10) tun könnte. Ich hoffe das hat geholfen!

+0

Das hat nicht für mich funktioniert, weil es scheint, dass ich den Wert von os_vartmp2 nicht ändern kann – HackerGamerLV