【发布时间】:2018-12-04 08:47:14
【问题描述】:
在python2中,可以使用print 123和print(123),以及assert True和assert(True)。
在python3中,为什么我不能使用print 123而可以使用assert True?
【问题讨论】:
标签: python python-3.x language-lawyer
在python2中,可以使用print 123和print(123),以及assert True和assert(True)。
在python3中,为什么我不能使用print 123而可以使用assert True?
【问题讨论】:
标签: python python-3.x language-lawyer
简答:assert 不是函数。
长答案:
当 python3 出现时,它改变(或删除)print sth 语法,因为print 变成了一个内置的函数,所以它应该被称为。。 p>
虽然assert 可以用作函数(assert(True)),但它不是函数——它实际上是python3 grammar 中的语法,就像python2 中的打印was .
与print不同,当你执行type(print)时类型为class 'builtin_function_or_method',当你尝试type(assert)或type(if)时你会得到这个:
SyntaxError: invalid syntax
所以你不能在使用assert True的同时使用print 123,因为这两个是不同的。
【讨论】:
在 Python 2 中,print 和 assert 都是语句(如 if、while、def 等)。在这种情况下,括号不会被解释为函数调用运算符,而只是作为普通括号,强制评估其内容,在这种情况下,这是一个空操作,实际上被认为是非 Python 的。
在 Python 3 中,print() 变成了一个函数,因此您必须调用它。 assert 仍然是一个语句,所以它就像在 Python 2 中一样工作。
【讨论】: