2024-05-15 09:54:25 发布
网友
我想尽量压缩我的代码。 为什么Python中不允许以下内容?你知道吗
string = input() if string.isnumeric: pass else: if string == 'tesr': print('test') else: print('stop')
在grammar中,您正在寻找
if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
(我重新排列了这些)。所以一个if语句有一个suite,如果test是真的,它就是执行的部分。suite要么是单个简单语句,要么是简单语句的缩进块。你知道吗
if
suite
test
简单语句是一个带有可选分号的小语句或多个由分号分隔的小语句。所有的简单语句都以换行结束。你知道吗
如果你是在寻找设计意义上的原因,我只能猜测。这可能会使编写语法变得更简单,而且设计者可能会认为在您的示例中这样限制代码是一种好处。你知道吗
在这种特殊情况下,问题是Python使用缩进来确定块包含。查找“悬空的其他”问题。有些语言使用大括号或其他“可见”标点符号;Python在新行的开头使用空格。如果没有这些新行,就不可能在所有情况下都有合法的if。你知道吗
实际上,一行中可以有多个if语句。例如你的代码
可以写成一行字。你知道吗
if not string.isnumeric(): print('test') if (string == 'tesr') else print('stop')
或者如果你愿意的话
None if string.isnumeric() else print('test') if (string == 'tesr') else print('stop')
不过,我同意@timgeb在评论中的观点——可读性才是最重要的!你知道吗
编辑
既然你编辑了你的问题,从“为什么我不能把下面的代码写成一行代码”到“我想尽量压缩我的代码”。为什么Python中不允许以下内容?“。。。因为缩进对python很重要,所以您认为下面的代码会做什么:
if x == 1: print(1) if x == 3: print(2) else: print(3)
什么?你可以认为这段代码
或者
那你期望什么呢?这将是一个混乱的局面,因为没有人会知道一些东西是如何被解析的。你知道吗
在grammar中,您正在寻找
(我重新排列了这些)。所以一个
if
语句有一个suite
,如果test
是真的,它就是执行的部分。suite
要么是单个简单语句,要么是简单语句的缩进块。你知道吗简单语句是一个带有可选分号的小语句或多个由分号分隔的小语句。所有的简单语句都以换行结束。你知道吗
如果你是在寻找设计意义上的原因,我只能猜测。这可能会使编写语法变得更简单,而且设计者可能会认为在您的示例中这样限制代码是一种好处。你知道吗
在这种特殊情况下,问题是Python使用缩进来确定块包含。查找“悬空的其他”问题。有些语言使用大括号或其他“可见”标点符号;Python在新行的开头使用空格。如果没有这些新行,就不可能在所有情况下都有合法的
if
。你知道吗实际上,一行中可以有多个if语句。例如你的代码
可以写成一行字。你知道吗
或者如果你愿意的话
不过,我同意@timgeb在评论中的观点——可读性才是最重要的!你知道吗
编辑
既然你编辑了你的问题,从“为什么我不能把下面的代码写成一行代码”到“我想尽量压缩我的代码”。为什么Python中不允许以下内容?“。。。因为缩进对python很重要,所以您认为下面的代码会做什么:
什么?你可以认为这段代码
或者
那你期望什么呢?这将是一个混乱的局面,因为没有人会知道一些东西是如何被解析的。你知道吗
相关问题 更多 >
编程相关推荐