Steven_AgN3 发表于 2021-12-25 12:37:56

关于pycharm和Idle使用自定义函数时的不同

本帖最后由 Steven_AgN3 于 2021-12-25 12:39 编辑

如题,我在学习小甲鱼的python课时,按照视频内容自定义了如下函数,该函数在PyCharm中调用时不会打印返回值,在函数执行完成之后直接退出;但是同样的函数在IDLE中执行却可以打印出返回值,请问为何会出现这样的区别,小白问题,请大神指教!{:5_111:}

阿奇_o 发表于 2021-12-25 12:37:57

本帖最后由 阿奇_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>
>>>

wp231957 发表于 2021-12-25 12:40:09

shell特性,可以忽视,因为我们从来不在shell下编写正规代码

傻眼貓咪 发表于 2021-12-25 12:54:28

本帖最后由 傻眼貓咪 于 2021-12-25 13:51 编辑

print(div(4, 2))

逃兵 发表于 2021-12-25 13:09:14

交互模式下,是一来一回的
你输入指令,它返回结果
文本模式下,只运行,不返回

Steven_AgN3 发表于 2021-12-25 21:48:07

wp231957 发表于 2021-12-25 12:40
shell特性,可以忽视,因为我们从来不在shell下编写正规代码

感谢老哥

Steven_AgN3 发表于 2021-12-25 21:48:59

阿奇_o 发表于 2021-12-25 13:58
交互模式下(IDLE的shell,IPython,Jupyter等),对于类的对象实例,会自动调用 对象实例的 __repr__() 方 ...

大神,跟你混{:9_228:}

何世昭 发表于 2021-12-25 21:49:10

nb

Steven_AgN3 发表于 2021-12-25 21:49:39

逃兵 发表于 2021-12-25 13:09
交互模式下,是一来一回的
你输入指令,它返回结果
文本模式下,只运行,不返回

谢谢老哥

Steven_AgN3 发表于 2021-12-25 21:50:40

傻眼貓咪 发表于 2021-12-25 12:54


感谢,这个我知道{:7_123:}
页: [1]
查看完整版本: 关于pycharm和Idle使用自定义函数时的不同