python - Python 函数 - 如果输入变量不存在,则使用默认值
问题描述
def funcname(var1, var2 = "1234"):
output = int(var2)
return output
var2
有没有办法在不存在的情况下捕获错误,即函数定义了一个默认值(如上)并被调用:
result = funcname(var1, var2 = cs)
但cs
不存在所以如果cs
变量不存在我想var2
继承默认值而cs
不是未定义的错误。
解决方案
在您的情况下,您可以使用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=object
什么时候None
是不应该替换的正确值,或者应该用与默认值不同的值替换。
我必须使用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
在开始时创建一些值的变量。
推荐阅读
- javascript - 如何检测包含的关系是否正在加载
- javascript - 如何从嵌套在数组 JAVASCRIPT 内的对象中提取值
- javascript - 如何为 JSON 文件中的每个项目创建新条目?
- javascript - 如何在数组对象中添加新属性
- c++ - Visual Studio C++ - 无法引用要解析的项目中的文件
- javascript - 预测类未显示在应用程序中(警告:列表中的每个孩子都应该有一个唯一的“关键”道具。)
- c - 将内存分配给函数指针
- c++ - 如何检查单位是否与类模板相同?
- azure - 将节点 js 套接字 io 应用程序部署到 azure
- python - 空白 3D Plotly 散点图