2017-02-18 8 views
2

Ist eine Eingabe als Standardwert für eine Funktion möglich?Eingabe als Standardwert für eine Funktion

Zum Beispiel

f(x=input('>')): 
    print(x) 

Das Problem ist, es macht mich zu einem Werteingabe, auch wenn ich einen x Wert liefern. Wie würde ich das richtig machen?

Antwort

4

Python wird die Standardargumente bewerten Sie für eine Funktion definieren, müssen Sie die Eingabeaufforderung während der Definition erhalten entweder es Ihnen gefällt oder nicht. Der an der Eingabeaufforderung eingegebene Wert wird dann als Standard für x zugewiesen.

Wenn Sie einen Standardwert mögen, die input, wenn kein anderer sinnvoller Wert angegeben wird, verwenden Sie die gemeinsame Idiom Beteiligung None und fällt input im Körper der Funktion, stattdessen verwenden:

def f(x=None): 
    if x is None: 
     x = input('> ') 
    print(x) 

Nun, wenn Sie denken, ich will noch irgendwie diese Argumente mit Standard tun, dann werden Sie eine Funktion, die neu erstellt Ihre Funktion mit jedem Aufruf erstellen müssen:

def f(): 
    def _(x = input('> ')): 
     print(x) 
    return _() 

ich sehe nicht, was diese profitieren würde bringen anders als beschwichtigen Sie Ihre Neugier, obwohl :-)

1

Vielleicht ist dies das, was Sie wollen.

def f(x=None): 
    if not x: 
    x = input('>') 
    print(x) 
Verwandte Themen