Python2和Python3中是否存在变量?

Python2和Python3中是否存在变量?,python,Python,实际上,我对以下代码片段有两个问题: 片段1: if a: return 1 else: return 0 片段2: try: a = input() except NameError: return 0 else: return 1 这两段代码用于检查Python中是否存在变量。第一个是在Python3中使用的 我的问题是: 为什么,当输入just Enter时,第一个代码段返回0,这意味着“不存在”,但在第二个代码段中则相反,它将“赋值 我使用的是Pyth

实际上,我对以下代码片段有两个问题:

片段1:

if a:
   return 1
else:
   return 0
片段2:

try:
    a = input()
except NameError:
   return 0
else:
   return 1
这两段代码用于检查Python中是否存在变量。第一个是在Python3中使用的

我的问题是:

  • 为什么,当输入just Enter时,第一个代码段返回
    0
    ,这意味着“不存在”,但在第二个代码段中则相反,它将
    赋值

  • 我使用的是Python2,所以对于这个问题,我能做些什么


  • 我认为你混淆了变量的存在和它的值

    这两段代码都不直接检查名为
    a
    的变量是否存在。第一个代码段检查其值。如果它不存在,将引发
    namererror
    异常

    代码段2中使用的内置
    input()
    函数在Python 2和3中有所不同

    在Python 2中,它将对用户输入的任何字符串隐式调用
    eval()

    Python3没有做到这一点。它所做的只是返回用户以字符串形式键入的任何内容(不带尾随的换行符,该换行符对应于最后在键盘上输入用户)

    下面说明了如何在Python 2和Python 3中检查变量的存在性(如果存在,则获取其值)。请注意,它假设变量
    a
    永远不会具有
    None
    的合法值

    def check_existence_of_a():
        try:
            return a
        except NameError:
            return None
    
    if check_existence_of_a() is None:
        print('variable "a" does not exist')
    else:
        print('variable "a" exists and its value is {}'.format(a))
    
    a = 42
    
    if check_existence_of_a() is None:
        print('variable "a" does not exist')
    else:
        print('variable "a" exists and its value is {}'.format(a))
    
    输出:

    变量“a”不存在
    变量“a”存在,其值为42
    
    更新

    使用Python 2,您的第二个代码段可以如下所示进行修改,以处理由于用户只输入Enter而不输入任何内容而导致的
    SyntaxError
    s,这种情况会发生,因为这会导致它调用
    eval(“”


    或者,您可以从使用
    input()
    切换到
    raw\u input()
    ,它不调用
    eval()
    ,而只返回(可能为空)
    string
    用户键入的。

    我甚至无法理解您的问题,无法尝试编辑它。请阅读并查看-a,重新创建该问题将非常有用。这些代码段都没有检查变量的存在性……您能解释一下这些是什么吗?!@Ali.J,只是一些可能错误的随机代码片段,没有什么Gspecial@Ali.J解释什么?对!我得到了python 2中输入函数和python 2中输入函数之间的区别。那么在python 2中如何处理这个问题呢?我需要一个条件,如果我们输入enter do somthing,如果我们输入number或…做其他事情:(((当我输入enter作为输入时,您的代码片段给了我这个错误:语法错误:解析时出现意外的EOF我认为这是因为python 2中的输入函数和python 2中的输入函数之间存在差异,正如我所说的,这是因为在python 2中,
    input()
    相当于
    eval(raw\u input())
    。当您只需按Enter键时,
    raw_input()
    部分返回一个空字符串
    eval
    部分将其视为一个
    SyntaxError
    。请尝试自己运行
    eval(“”
    ),然后查看。我将更新我的答案并向您展示如何处理它。SyntaxError。就是这样!
    def get_a():
        try:
            a = input('>')
        except SyntaxError:
            print('illegal input encountered')  # optional
            return None
        except NameError:
           return 0
        else:
           return 1
    
    get_a()