【问题标题】:Python function - if input variable doesn't exist then use default valuePython 函数 - 如果输入变量不存在,则使用默认值
【发布时间】:2019-12-18 14:07:52
【问题描述】:
def funcname(var1, var2 = "1234"):

    output = int(var2)

    return output

有没有办法在var2不存在的情况下捕获错误,即函数定义了一个默认值(如上)并被调用:

result = funcname(var1, var2 = cs) 

但是cs 不存在所以如果cs 变量不存在我希望var2 继承默认值而不是cs 未定义的错误。

【问题讨论】:

  • 您无法在函数中捕获错误,因为错误(引用未定义变量)发生在函数调用之前
  • 如果cs 不存在就尝试使用它是一个需要修复的错误,而不是在运行时捕获的错误。
  • 您只能将funcname(var1, var2 = cs) 放入try/exceptexcept 中运行此函数而不使用cs
  • 我宁愿在程序的开头设置cs = None(所以它会一直存在)和function里面我会检查var2 is None`并设置var2 = "1234"
  • try: result = function(var1, cs) except NameError: result = function(var1)

标签: python function exception default


【解决方案1】:

在您的情况下,您可以使用try/except

try: 
    result = function(var1, cs) 
except NameError: 
    result = function(var1)

但我宁愿在默认值开始时创建变量cs

cs = "1234"

不存在变量也没有问题。

最终我会使用None

cs = None

并且函数将使用None 来识别它是否应该使用默认值

#def funcname(var1, var2=None):
def funcname(var1, var2="1234"):
    if var2 is None:
        var2 = "1234"
    return int(var2)

在一些教程/书籍中,我还看到var2=objectNone 是不应该被替换的正确值或者它应该被替换为不同于默认值的值时。

我必须为此使用object,所以我不确定在这个示例中是否正确使用它。

cs = None

def func(var1, var2=object):
    if var2 == object:
        var2 = "1234"
    elif var2 is None:
        var2 = "0"
    return int(var2)

print(func(1))       # 1234
print(func(1, 2))    # 2
print(func(1, None)) # 0
print(func(1, cs))   # 0

但我认为最好的方法是在开始时创建变量 cs

【讨论】:

    猜你喜欢
    • 2022-11-14
    • 1970-01-01
    • 2017-12-25
    • 2012-03-22
    • 1970-01-01
    • 2016-05-08
    • 2020-04-22
    • 2011-07-06
    • 2023-02-07
    相关资源
    最近更新 更多