Python版的JS';sx=变量| |默认_变量?
我发现自己经常使用hasattr,希望写得更简洁 在JS中,我经常使用以下模式:Python版的JS';sx=变量| |默认_变量?,python,Python,我发现自己经常使用hasattr,希望写得更简洁 在JS中,我经常使用以下模式: var x = variable || DEFAULT_VARIABLE; Python中的等价物是什么 比这更好的东西 if hasattr(my_obj, 'my_key'): x = my_obj.my_key else: x = 3 编辑:修复了一个混合对象和命令的错误 x = my_dict.get('my_key', 3) 这似乎很清楚: 当然,假设我的字典真的是一本字典。问题中的整个ha
var x = variable || DEFAULT_VARIABLE;
Python中的等价物是什么
比这更好的东西
if hasattr(my_obj, 'my_key'):
x = my_obj.my_key
else:
x = 3
编辑:修复了一个混合对象和命令的错误
x = my_dict.get('my_key', 3)
这似乎很清楚:
当然,假设我的字典真的是一本字典。问题中的整个hasattr是令人困惑的
x=variable if variable else DEFAULT_VARIABLE
这似乎很清楚:
当然,假设我的字典真的是一本字典。问题中的整个hasattr是令人困惑的
x=variable if variable else DEFAULT_VARIABLE
不记得这是否适用于所有python版本
不记得这是否适用于所有python版本…因为您正在讨论javascript和
hasattr
,我猜这是一种未定义变量的情况。在Python中,hasattr
不测试字典键的存在,它只测试对象属性的存在。此外,在Python中,没有比测试对象是否具有属性更简单的方法了,因为与javascript不同,必须定义要使用的变量名。因此,要引用可能定义或可能未定义的变量名,必须使用字符串
也就是说,您可以使用三元运算符+hasattr
在一行中编写测试:
>>> class F(object):
... pass
...
>>> f = F()
>>> f.foo = 5
>>> f.bar if hasattr(f, 'bar') else 10
10
>>> f.foo if hasattr(f, 'foo') else 10
5
这是因为如果hasattr
返回False
,则甚至不会计算f.foo
您还可以定义f.foo=None
,并按照他的评论中的建议使用或
要测试一个键是否在字典中,如果d中的k:
,则说,如果k
不在字典中,则得到一个默认值,如果这是您想要的,请参见。因为您谈论的是javascript和hasattr
,我猜这是变量
未定义的情况。在Python中,hasattr
不测试字典键的存在,它只测试对象属性的存在。此外,在Python中,没有比测试对象是否具有属性更简单的方法了,因为与javascript不同,必须定义要使用的变量名。因此,要引用可能定义或可能未定义的变量名,必须使用字符串
也就是说,您可以使用三元运算符+hasattr
在一行中编写测试:
>>> class F(object):
... pass
...
>>> f = F()
>>> f.foo = 5
>>> f.bar if hasattr(f, 'bar') else 10
10
>>> f.foo if hasattr(f, 'foo') else 10
5
这是因为如果hasattr
返回False
,则甚至不会计算f.foo
您还可以定义f.foo=None
,并按照他的评论中的建议使用或
若要测试某个键是否在字典中,请在d:
中输入k,若k
不在字典中,则输入一个默认值,若这是您想要的,请参见。我认为示例代码的工作方式与您期望的不符<代码>d['a']=5;hasattr(d,'a')=>False
。您的JS和python示例不是同一种类型的东西,而且您的python不会工作,因为您正在检查属性,然后获取字典键。我认为您的示例代码的工作方式与您期望的不同<代码>d['a']=5;hasattr(d,'a')=>False
。您的JS和python示例不是同一类型的东西,而且您的python不会工作,因为您正在检查一个属性,然后获取一个字典键。x=variable或DEFAULT\u variable
较短,根据javascript判断,在python 1+中工作,这看起来像是OP想要的。事实上,我相信OP知道他在找什么Px=variable或DEFAULT\u variable
较短,并且可以在Python 1+中工作,从javascript判断,这与OP所寻找的类似。事实上,我相信OP知道他在找什么P