Python2和Python3中是否存在变量?
实际上,我对以下代码片段有两个问题: 片段1: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
if a:
return 1
else:
return 0
片段2:
try:
a = input()
except NameError:
return 0
else:
return 1
这两段代码用于检查Python中是否存在变量。第一个是在Python3中使用的
我的问题是:
0
,这意味着“不存在”,但在第二个代码段中则相反,它将“
赋值我认为你混淆了变量的存在和它的值 这两段代码都不直接检查名为
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()