Function python 3.3在交互和程序模式下的结果不一致
如果运行代码Function python 3.3在交互和程序模式下的结果不一致,function,python-3.3,Function,Python 3.3,如果运行代码python function2.py,则 # File function2.py def f(): print("I am f") return("return f") if __name__ == "__main__": print("print(f) gives", end=": "); print(f) print("f gives", end=": "); f print("f() gives", end=": "); f()
python function2.py
,则
# File function2.py
def f():
print("I am f")
return("return f")
if __name__ == "__main__":
print("print(f) gives", end=": "); print(f)
print("f gives", end=": "); f
print("f() gives", end=": "); f()
print(f)给出:
f给出:f()给出:我是f
但是,如果以交互方式键入并执行代码,您将有:
print(f) gives: <function f at 0x026CD6F0>
f gives: f() gives: I am f
>>def():
... 打印(“我是f”)
... 返回(“返回f”)
...
>>>如果名称=“\uuuuu main\uuuuuuuu”:
... 打印(“打印(f)给出”,end=“:”;印刷品(f)
... 打印(“f给出”,end=“:”);F
... 打印(“f()给出”,end=“:”;f()
...
印刷品(f)给出:
f给出:
我是f
“返回f”
>>>
这是一个错误吗?@DSM是正确的。
背后的东西
是一个新语句
你写的是
>>> def f():
... print("I am f")
... return("return f")
...
>>> if __name__ == "__main__":
... print("print(f) gives", end=": "); print(f)
... print("f gives", end=": "); f
... print("f() gives", end=": "); f()
...
print(f) gives: <function f at 0x025BD6F0>
f gives: <function f at 0x025BD6F0>
f() gives: I am f
'Return f'
>>>
REPL=读取评估打印循环=交互式解释器=>>
你也是
print("print(f) gives", end=": ")
print(f)
print("f gives", end=": ")
f # this causes the program to just go over it and do nothing but in the REPL this is printing f
print("f() gives", end=": ")
f()
>>f#在REPL中打印(f)
>>>f()#print(f())in REPL#=print(“我是f”);打印(“返回f”)
我是f
“返回f”
因此,REPL在键入的程序的每一行周围都放置了一个print()
这就是为什么会有输出。如果您想使其一致,请使用
打印
我不确定不一致是什么。如果在控制台上键入3
,您会看到3
打印出来。但是如果你只是在程序3
中有一行,你就看不到任何打印的内容。这里您刚刚用f
替换了3
。让您困惑的是Python REPL本身的工作方式吗?谢谢您的回答。但是,在第一个实例中,f()没有返回字符串,但第二个实例返回了字符串。f()在交互模式和程序模式之间有什么区别吗?
>>> f # print(f) in REPL
<function f at 0x025BD6F0>
>>> f() # print(f()) in REPL # = print("I am f"); print("return f")
I am f
'return f'