如果在python中参数为None时如何打印默认值

时间:2019-01-18 06:34:59

标签: python

[sample.py]

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


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

A()

预期输出:“ Hello Guest”

当前输出:无

我希望使用<name = name if name is not None else some_default_value'

之类的更多代码进行的回答

谢谢!

4 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法是使用共享默认值:

DEFAULT_NAME = "Hello Guest"

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

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

答案 1 :(得分:2)

这对您有用吗?

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

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

A()
Out: "Hello Guest"

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

如果名称变量在函数中被多次使用,则可以在函数的开头重新分配它。 name = name or "Hello Guest"

答案 2 :(得分:0)

使用inspect.signature存储默认值是一种方法:

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


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

A()
# Hello Guest

有些失落,但更简单(更短,没有其他库):

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


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

A()
# Hello Guest

答案 3 :(得分:-1)

def f(name):
    print(name)


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

A()