Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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:当请求中没有值时,如何将变量设置为“None”或“0”之类的值_Python_Python 2.7 - Fatal编程技术网

Python:当请求中没有值时,如何将变量设置为“None”或“0”之类的值

Python:当请求中没有值时,如何将变量设置为“None”或“0”之类的值,python,python-2.7,Python,Python 2.7,假设你有这样的东西 a = b 但也许b不存在 a的值是否可以自动声明为0或。。可能没有或什么?您可以使用try-and-except子句来捕获b not existing的NameError。请参见Python文档中的 try: a = b except NameError: a = None 根据b的来源,你可以这样做 a = locals().get('b', 0) 或 尝试这样做:调用b,如果b不存在则出现错误,则b=0 try: b except: b =

假设你有这样的东西

a = b
但也许b不存在


a的值是否可以自动声明为0或。。可能没有或什么?

您可以使用try-and-except子句来捕获b not existing的NameError。请参见Python文档中的

try:
    a = b
except NameError:
    a = None
根据b的来源,你可以这样做

a = locals().get('b', 0)


尝试这样做:调用b,如果b不存在则出现错误,则b=0

try:
  b
except:
  b = 0
a = b
解决方案1 注意:您可以使用静态代码检查器来查找此错误。示例:

文件: Eclipse PyDev 解决方案2 在python中,可以使用空合并运算符:

a = b if b is not None else "default value"
如果你懒惰,那么这可以简化为

a = b or "some default value"
范例

42    or "something"    # returns 42
0     or "something"    # returns "something"
None  or "something"    # returns "something"
False or "something"    # returns "something"
""    or "something"    # returns "something"
另一种方法是检查上下文中是否存在变量:

if 'b' in locals():
  # local variable b exists.
if 'b' in globals():
  # local variable b exists.
例如,这将导致如下结果:

a = if 'b' in locals() b else 0
a = if 'b' in globals() b else 0
试试这个

a =vars().get('b', None)

但这太多了。。我本可以用if做b=0的statement@Margus为什么不呢?这是非常有效的语法,并且是Python中常见的编码样式。@Margus不会无意识地将Cargo Cult规则应用于每个应用程序Situation@Ffisegydd是的,与大多数编译语言不同,EAFP在Python中是完全可行的。try-catch的问题是,即使您应该删除它们,您也永远不会删除它们——在这种情况下,您应该建议永久解决临时问题。我的观点是,如果他使用pylint或某个IDE Eclipse来进行静态代码分析,那么问题就永远不会发生。我理解try方法,但try方法的效率可能不如使用if b:语句。我认为,当您对意图进行解释时,try方法对OP和其他访问者更有帮助。
a =vars().get('b', None)