I ran into something different today. Consider this simple function:
def hi():
return 'hi'
If I call it in a Python shell,
>>> hi()
'hi'
>>> print hi()
hi
It prints out the 'returned' value, even if it's just the repr
. This felt odd to me, how could returning be printing to stdout? So I changed it to a script to be run:
def hi():
return 'hi'
hi()
I ran this from terminal:
Last login: Mon Jun 1 23:21:25 on ttys000
imac:~ zinedine$ cd documents
imac:documents zinedine$ python hello.py
imac:documents zinedine$
Seemingly, there's no output. Then, I started thinking this is an Idle thing, so I tried this:
Last login: Tue Jun 2 13:07:19 on ttys000
imac:~ zinedine$ cd documents
imac:documents zinedine$ idle -r hello.py
And here is what shows in Idle:
Python 2.7.6 (v2.7.6:3a1db0d2747e, Nov 10 2013, 00:42:54)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>>
>>>
So returning prints only in an interactive python shell. Is this a feature? Is this supposed to happen? What are the benefits of this?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…