Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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中只能使用{}而不能使用pass?_Python - Fatal编程技术网

在python中只能使用{}而不能使用pass?

在python中只能使用{}而不能使用pass?,python,Python,当我学习python时,我知道python不需要像java那样使用{} 如果无事可做,我需要使用pass,例如: if 1>0: pass else: print('no') if 1>0: print() #Or assignment statement,like a=1 else: print('no') if 1>0: {} else: print('no') 但是如果我不想使用pass,我会得到一个错误,我需要使用其

当我学习python时,我知道python不需要像java那样使用
{}

如果无事可做,我需要使用
pass
,例如:

if 1>0:
    pass
else:
    print('no')
if 1>0:
    print() #Or assignment statement,like a=1
else:
    print('no')
if 1>0:
    {}
else:
    print('no')
但是如果我不想使用pass,我会得到一个错误,我需要使用其他语句,例如:

if 1>0:
    pass
else:
    print('no')
if 1>0:
    print() #Or assignment statement,like a=1
else:
    print('no')
if 1>0:
    {}
else:
    print('no')
但是写这样的句子只是为了语法正确

如果我不想这样做,我只能使用
{}
,例如:

if 1>0:
    pass
else:
    print('no')
if 1>0:
    print() #Or assignment statement,like a=1
else:
    print('no')
if 1>0:
    {}
else:
    print('no')
好的,我终于在python中看到了
{}
,所以
{}
的含义似乎只是替换
传递


除了
pass
的情况外,我不知道在哪里需要它
{}
{}
是一个空字典,像
{'foo':1,'bar':2}
没有元素。

不仅
{}
有效。像
[]
()
这样的其他东西,或者像
0
1
这样的数字都可以

之所以使用它,是因为它只处理一个空字典。并且不分配给任何其他变量:

>>> type({})
<class 'dict'>
>>> 

这会引起一个错误。因此,我们必须通过做一些不必要的事情(如
{}
)来占用空间。

使用{}这意味着空的dict不是好的做法,如果您不想使用pass,您可以使用。。。在python3中被称为省略号

if 1>0:
    ...
else:
    print('no')

在python中,必须在
if表达式之后有一个
块(参见)。块可以是简单语句(冒号后的单个表达式),也可以是一个或多个
语句的缩进序列

这基本上可以归结为:“什么是有效声明?”如果你遵循有效声明可以是什么的链条;即使只是一个
atom
也是有效的语句。这就是你作为一个原子所体验到的,它包含了大多数文本,比如一个空字符串、一个数字、一个空字典、各种单例
None
True
False
省略号
,等等

该语言中包含关键字“pass”的确切目的是在语法要求有块的地方不做任何事情。所提出的所有其他建议和选择都可能有效,但没有为此目的列入语文。这仅仅是其他事情如何运作的副作用。大多数示例都会导致额外的(即使很小)处理和内存开销,其中“pass”被解释器正确地优化为不做任何事情

您可能会发现有人说“您不应该使用pass”或“在代码中使用pass是不好的”。这是因为你不应该什么都不做,因为这是浪费计算。例如,如果只需要
if
语句的
else
块,则最好将其更改为
if not
。查找传入
try:except:
块也是一种常见的模式,通常不建议在捕获错误时什么都不做


这并不意味着pass没有完全合法的用例。在布置尚未编写的类和函数时,我一直特别使用pass。这使我能够在实现所有内容之前勾勒出一个类,同时仍然能够在没有语法错误的情况下运行快速测试。当你认为你已经完成了你的代码的时候,快速的按一下ctrl-f键就可以找到任何剩余的
pass
语句了,这些语句可能是我刚开始说的“我以后再做”的。有人甚至可能会说这有点松懈,因为如果你碰到一个未完成的区域,实际上提出一个
NotImplemented
错误会更好一些,我一直在尝试切换,但这几乎是击键次数的3倍;)

{}
并不意味着
pass
,实际上您创建了一个空字典。如果您创建了
{print(1)}
,它当然是一个集合。但是如果你不使用任何值而使用
{}
,它将是一个
字典
类型({print(1)})
给出
类型({})
将给出
dict
两个集都可以使用花括号,字典都是
{/code>。这取决于如果你做了
{'a':1}
,它就会成为一个字典,如果你做了
{1,2,3}
,它就会是一个集合。如果你把
键:值
对存储在方括号(
{}
)中,它就是字典,但如果你存储单个元素,它就是它的
集合
print(1)
的计算结果为
None
,因此本质上类似于
{None}
,这是一个
集合
“不要使用
pass
…坏习惯”我强烈反对
pass
是在需要语句时不执行任何操作的正确且唯一正确的方法。这通常是一个迹象,表明您有一个不好的模式,即您在该实例中不需要做任何事情,但是如果您不需要做任何事情
pass
,则是执行此操作的标准方法。