Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python版的JS';sx=变量| |默认_变量?_Python - Fatal编程技术网

Python版的JS';sx=变量| |默认_变量?

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

我发现自己经常使用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)
这似乎很清楚:

当然,假设我的字典真的是一本字典。问题中的整个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知道他在找什么P
x=variable或DEFAULT\u variable
较短,并且可以在Python 1+中工作,从javascript判断,这与OP所寻找的类似。事实上,我相信OP知道他在找什么P