[sample.py]

def f(name='Hello Guest'):
    print(name)


def A(name=None):    
    f(name)

A()

Erwartete Ausgabe: 'Hallo Gast'

Stromausgang: Keine

Ich erwarte die Antworten von ohne mit viel mehr Codes wie 'name = name if name is not None else some_default_value'

Danke im Voraus!

7
Jai K 18 Jän. 2019 im 09:34

4 Antworten

Beste Antwort

Geht das für dich?

def f(name):
    print(name or 'Hello Guest')

def A(name=None):    
    f(name)

A()
Out: "Hello Guest"

A("Hello World")
Out: "Hello World"

Wenn die Namensvariable in der Funktion mehrmals verwendet wird, können Sie sie einfach am Anfang der Funktion neu zuweisen. name = name or "Hello Guest"

2
najeem 18 Jän. 2019 im 07:52

Die Verwendung von inspect.signature zum Speichern von Standardwerten ist eine Möglichkeit:

def f(name='Hello Guest'):
    print(name or inspect.signature(f).parameters['name'].default)


def A(name=None):    
    f(name)

A()
# Hello Guest

Mit etwas Verlust der Allgemeinheit, aber einfacher (kürzer und keine andere Bibliothek):

def f(name='Hello Guest'):
    print(name or f.__default__[0])


def A(name=None):    
    f(name)

A()
# Hello Guest
0
Chris 18 Jän. 2019 im 07:00

Der beste Weg, dies zu tun, ist die Verwendung eines gemeinsamen Standards:

DEFAULT_NAME = "Hello Guest"

def f(name=DEFAULT_NAME):
    print(name)

def A(name=DEFAULT_NAME):
    f(name)
2
wim 18 Jän. 2019 im 06:46

Oder

def f(name):
    print(name)


def A(name = 'Hello Guest'):
    f(name)

A()
-1
Szczepan G 18 Jän. 2019 im 06:39