关于pycharm和Idle使用自定义函数时的不同
本帖最后由 Steven_AgN3 于 2021-12-25 12:39 编辑如题,我在学习小甲鱼的python课时,按照视频内容自定义了如下函数,该函数在PyCharm中调用时不会打印返回值,在函数执行完成之后直接退出;但是同样的函数在IDLE中执行却可以打印出返回值,请问为何会出现这样的区别,小白问题,请大神指教!{:5_111:} 本帖最后由 阿奇_o 于 2021-12-25 14:21 编辑
交互模式下(IDLE的shell,IPython,Jupyter等),对于类的对象实例,会自动调用 对象实例的 __repr__() 方法。(若没定义__repr__,则"回显"不太易读的代表该对象的"特殊字符形式")
对于函数(也是"对象"),则直接回显函数的返回值。这其实和调用类的实例的__repr__方法,并返回其结果,本质是一样的。
非交互模式下,通常需要通过打印其他绑定的变量,或借助其他函数,才能"打印"出对象的"回显信息",这时调用的是__str__方法。
如 借助print函数,print(obj) 实际打印的是obj.__str__() 的返回结果。
>>> class Test():
def __str__(self):
return "from __str__"
def __repr__(self):
return "from __repr__"
>>> t = Test()
>>> t
from __repr__
>>> print(t)
from __str__
>>> t.__str__()
'from __str__'
>>>
>>> class Test():
def __str__(self):
return "from __str__"
>>> t
<__main__.Test object at 0x000001D7BD6D5AC8>
>>>
shell特性,可以忽视,因为我们从来不在shell下编写正规代码 本帖最后由 傻眼貓咪 于 2021-12-25 13:51 编辑
print(div(4, 2)) 交互模式下,是一来一回的
你输入指令,它返回结果
文本模式下,只运行,不返回 wp231957 发表于 2021-12-25 12:40
shell特性,可以忽视,因为我们从来不在shell下编写正规代码
感谢老哥 阿奇_o 发表于 2021-12-25 13:58
交互模式下(IDLE的shell,IPython,Jupyter等),对于类的对象实例,会自动调用 对象实例的 __repr__() 方 ...
大神,跟你混{:9_228:} nb
逃兵 发表于 2021-12-25 13:09
交互模式下,是一来一回的
你输入指令,它返回结果
文本模式下,只运行,不返回
谢谢老哥
傻眼貓咪 发表于 2021-12-25 12:54
感谢,这个我知道{:7_123:}
页:
[1]