分配给打印功能
Assignment to print function
我的一个朋友正在学习 Python 辅导课程并寻求帮助,因为她的代码没有按预期工作。
我能够立即确定问题并帮助她自己推断出问题。代码是沿着这些线。
myValue = 575.0
print=(myValue)
显然,打印失败了。但是当我说它失败时,我只是说它没有打印任何东西。解释器仍然毫无问题地执行了该行。所以,我的问题是,为什么赋值运算符没有引发语法错误?
它不会引发错误,因为在 Python 3 中,print
是一个常规函数。并且函数对象绑定到名称,因此 print
是指代特定函数对象的名称("variable")。
由于函数与变量没有区别,您可以根据需要重新分配它们:
def add(a, b):
return a + b
add = "ha-ha, I'm a string"
=
符号后的括号是您在数学中使用的那种括号:
print = (1 + 2) # print == 3
紧接在名称后的括号表示函数调用。
但是现在 print
坏了,您将永远无法打印任何东西!不是真的 - __builtins__.print
:
中有一个副本
print = __builtins__.print
但是,您也可以很容易地把它搞砸:
__builtins__.print = 5
在Python2中,然而,print
是一个语句,不是一个常规函数,所以这个失败了:
Python 2.7.16 (default, Dec 3 2019, 07:02:07)
>>> print = 5
File "<stdin>", line 1
print = 5
^
SyntaxError: invalid syntax
通过这样做进行实验:
my_value = 575.0
print = (my_value)
print(print)
请注意您收到以下错误:
Traceback (most recent call last):
File "C:/Users/jchca/PycharmProjects/Josepe_project/Josepe/Practice10.py", line 4, in <module>
print(print)
TypeError: 'float' object is not callable
本质上,她重写了打印函数,所以 print
现在充当浮点值(这在 Python 3.x 中)
我的一个朋友正在学习 Python 辅导课程并寻求帮助,因为她的代码没有按预期工作。
我能够立即确定问题并帮助她自己推断出问题。代码是沿着这些线。
myValue = 575.0
print=(myValue)
显然,打印失败了。但是当我说它失败时,我只是说它没有打印任何东西。解释器仍然毫无问题地执行了该行。所以,我的问题是,为什么赋值运算符没有引发语法错误?
它不会引发错误,因为在 Python 3 中,print
是一个常规函数。并且函数对象绑定到名称,因此 print
是指代特定函数对象的名称("variable")。
由于函数与变量没有区别,您可以根据需要重新分配它们:
def add(a, b):
return a + b
add = "ha-ha, I'm a string"
=
符号后的括号是您在数学中使用的那种括号:
print = (1 + 2) # print == 3
紧接在名称后的括号表示函数调用。
但是现在 print
坏了,您将永远无法打印任何东西!不是真的 - __builtins__.print
:
print = __builtins__.print
但是,您也可以很容易地把它搞砸:
__builtins__.print = 5
在Python2中,然而,print
是一个语句,不是一个常规函数,所以这个失败了:
Python 2.7.16 (default, Dec 3 2019, 07:02:07)
>>> print = 5
File "<stdin>", line 1
print = 5
^
SyntaxError: invalid syntax
通过这样做进行实验:
my_value = 575.0
print = (my_value)
print(print)
请注意您收到以下错误:
Traceback (most recent call last):
File "C:/Users/jchca/PycharmProjects/Josepe_project/Josepe/Practice10.py", line 4, in <module>
print(print)
TypeError: 'float' object is not callable
本质上,她重写了打印函数,所以 print
现在充当浮点值(这在 Python 3.x 中)