Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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 | |备份语句_Python_Variables - Fatal编程技术网

python | |备份语句

python | |备份语句,python,variables,Python,Variables,在Javascript中,我可以指定如下值: var i=p | | 4 显然,如果p没有定义,它将求助于4。Python中是否有比try:/更优雅的操作版本,除了:组合 try: i = p except: i = 4 您可以使用i=locals().get('p',4),但我强烈建议不要使用它。构造代码,这样就不需要引用可能存在或不存在的变量 我在Javascript中使用此模式的唯一实例是,当我不想依赖于脚本文件以正确的顺序包含时,用全局对象伪造名称空间。由于Python

在Javascript中,我可以指定如下值:

var i=p | | 4

显然,如果p没有定义,它将求助于4。Python中是否有比try:/
更优雅的操作版本,除了:
组合

try:
    i = p
except:
    i = 4

您可以使用
i=locals().get('p',4)
,但我强烈建议不要使用它。构造代码,这样就不需要引用可能存在或不存在的变量


我在Javascript中使用此模式的唯一实例是,当我不想依赖于脚本文件以正确的顺序包含时,用全局对象伪造名称空间。由于Python有一个合适的模块系统,我无法想象在什么地方需要这样做。

人们有时会使用Python来实现这一目的:

def f(p=None):
    i = p or 4
    ...
依赖于or运算符的“Python特有”方面来返回使表达式为真的值(而不仅仅是返回true或False)

提供更多灵活性的另一个选项是使用:

如果您只想检查变量是否已定义,则try/except是最干净的方法:

try:
    i = p
except NameError:
    pass
这就是说,这对于Python来说是不典型的,并且可能暗示程序设计有问题


最好只是将变量初始化为一个占位符值,例如None。在这方面,Python的风格与Javascript有些不同。

您可以确保将
p
初始化为sentinel值(通常
None
),然后测试其存在性:

p = None
...
i = p if p is not None else 4
这是必要的,因为Python无法定义变量而不首先分配给它们。在Javascript中,变量可以用
var p并将其计算为特殊值
未定义
,直到分配给


因此,使用Javascript,可以隐式创建sentinel值,而使用Python,它必须始终显式创建。

正如Inerdia和Ignacio Vazquez Abrams指出的那样,在访问变量时,始终应该初始化变量。如果变量不总是获取值,则可以将其初始化为
None
,然后使用与Javascript类似的以下代码:

i = p or 4

请注意,只有在布尔上下文中
p
的有效值始终计算为
True
时,才应使用此选项。根据。

问题和初始断言具有误导性

假设没有
window.p
属性,并且
p
不是变量(并且没有有效的
),则这将在运行时导致JavaScript中出现错误:

var i = p || 4
Python的工作方式与本例相同,使用try/except是多余的。JavaScript略有不同,因为
var
被提升到函数的顶部,这也意味着
var i=i | | 2
将在JavaScript中工作(因为它相当于
var i;;i=i | | 2
)。然而,一般来说,在使用变量之前,它必须存在

因此,正如所指出的,
(Python)是
|
(JavaScript)的“等价物”,撇开
变量的差异不谈(或缺少)。请注意,Python的概念与JavaScript稍有不同


快乐编码。

为什么你永远不会让变量存在?它可能在过程中被定义,也可能没有被定义,因为过程被多次运行。这是一个反问。就像“你为什么要吃5公升果冻,然后把它吐出来?”和“你为什么要把你的火箭车开到悬崖上?”一样对待它。谢谢你屈尊的废话。我正在使用
linecache
读取csv文件最后一行的第一个字段,当我将其包装到int()中时。如果csv文件尚未添加行,则最后一行是标题为“ID”的行,这将显示一个错误。这并不是说它不存在,只是与我所做的不相容。即使这不是很好的编码,我也在学习,如果你不想帮助我,你应该把你的反问句留给自己不需要导师,只需要对两种语言进行具体的比较。这是可行的,但它是脆弱的,不符合python。惯用的方法是使用or运算符或条件表达式。@RaymondHettinger:如果我理解OP,他不想检查p是否为
None
,他想检查局部(或全局)变量是否已经定义。如果是这样,那么try/except可能是最好的选择(或者至少这是一种更具python风格的方法). 此外,我还质疑用例——Python程序通常不需要检查变量是否已经定义,因此想要进行这样的检查可能暗示程序设计需要改进。@RaymondHettinger:是的,我的答案只是说,如果你真的想/需要的话,除了
之外,如何在不尝试的情况下做到这一点。其他答案涵盖了没有这种丑陋的可能的替代品。
i=p或4
会更整洁。你会认为,我已经多次落入这个陷阱,我会记住它!一般来说,您的方法更健壮,但是如果默认值为零,或者输入不允许为零,那么简洁的方法也可以工作。视情况而定。
var i = p || 4