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)