为什么python使用'assert test'而不是'assert(test)'?

时间:2018-12-04 08:47:15

标签: python python-3.x language-lawyer

在python2中,可以使用 print 123 print(123),同时使用 assert True assert(True )

在python3中,为什么我不能在使用 assert True 的同时使用 print 123

2 个答案:

答案 0 :(得分:0)

简短的回答:assert不是函数。

长答案:

当python3出现时,它更改(或删除了)print sth语法,因为print成为内置的函数,因此应调用 >。

尽管assert可以像函数一样使用(assert(True)),但它不是函数-实际上,它是python3 grammar中的语法,例如在python2 was中打印。

print不同,在执行class 'builtin_function_or_method'时类型为type(print),而当您尝试type(assert)type(if)时,会得到以下信息:

SyntaxError: invalid syntax

因此,在使用print 123时不能使用assert True,因为两者是不同的。

答案 1 :(得分:0)

在Python 2中,printassert都是语句(例如ifwhiledef等)。在这种情况下,paren不会被解释为函数调用运算符,而将被解释为普通的parens,从而迫使对其内容进行评估,在这种情况下,这是空操作,实际上被认为是非Python的。

在Python 3中,print()成为一个函数,因此您必须 对其进行调用。 assert仍然是一条语句,因此它的工作原理与Python 2中的工作一样。