【问题标题】:Why does python use 'assert test' instead of 'assert(test)'?为什么python使用'assert test'而不是'assert(test)'?
【发布时间】:2018-12-04 08:47:14
【问题描述】:

在python2中,可以使用print 123print(123),以及assert Trueassert(True)

在python3中,为什么我不能使用print 123而可以使用assert True

【问题讨论】:

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


    【解决方案1】:

    简答: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,因为这两个是不同的。

    【讨论】:

      【解决方案2】:

      在 Python 2 中,printassert 都是语句(如 ifwhiledef 等)。在这种情况下,括号不会被解释为函数调用运算符,而只是作为普通括号,强制评估其内容,在这种情况下,这是一个空操作,实际上被认为是非 Python 的。

      在 Python 3 中,print() 变成了一个函数,因此您必须调用它。 assert 仍然是一个语句,所以它就像在 Python 2 中一样工作。

      【讨论】:

        猜你喜欢
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-19
        • 2013-12-03
        • 1970-01-01
        • 2021-11-08
        • 2016-09-04
        相关资源
        最近更新 更多