Python函数返回值与打印

时间:2019-05-29 00:34:11

标签: python printing return

我对编程非常陌生,所以请放轻松。我使用Visual Studio Code作为编辑器,在其中使用一些python文件。当我运行代码时,例如说一个pandas.dataframe.head()函数,它在终端中不返回任何内容。但是,当我打印相同的返回值时,我正在按预期从csv文件中看到数据。

  • 有人可以解释发生了什么吗?
  • 是否在运行函数时存储了数据但未必显示?
  • 如果是这样,在调试时,print是显示函数值的唯一方法吗?

尝试使用谷歌搜索答案,但还不清楚。

import pandas as pd

df = pd.read_csv('sample.csv')
df.head()
# print(df.head())

期望某些数据显示在终端中

3 个答案:

答案 0 :(得分:1)

我相信您已经学会使用Jupyter或python控制台。 VS Code是一个IDE;它基本上是一款美化的文本编辑器,具有可帮助开发人员的功能。您必须习惯在控制台中使用python,在该控制台中它会自动打印每行/命令的结果,而现在您可能正在创建脚本并期望发生相同的事情。我不认为“回报与您的要求有任何关系,因为它的作用方式相同。

编辑 (我找到了实际的文档)

在交互式控制台中,python每次执行后都会调用sys.displayhook。这是实际的文档:

  

如果value不为None,则此函数将repr(value)打印到sys.stdout,   并将值保存在Builtins._中。如果repr(value)不可编码   sys.stdout.encoding与sys.stdout.errors错误处理程序(这是   可能是“严格”),将其编码为sys.stdout.encoding   'backslashreplace'错误处理程序。

     在对表达式求值的结果上调用

sys.displayhook   在交互式Python会话中输入这些值的显示   可以通过分配另一个单参数函数来定制   sys.displayhook。

这是我非常基本的解释 我希望我解释得足够清楚

在python控制台中,每行/命令的结果在执行后打印(即:当您按下Enter键时)。 (对于上下文,如果没有返回任何其他内容(因此未打印),则每个函数/操作都会隐式返回None

运行python脚本时,除非明确打印(其他情况是未捕获的错误回溯,日志记录或写入stdout等),否则控制台中不会显示任何内容 < / p>

基本上就是那行

df.head()

在脚本中,对head执行df函数,并返回结果,但是结果没有任何变化,除非您将其分配给变量或打印出来。就像写一样:

"This will only print in a console"

如果该行在交互式控制台中执行,它将使用该值调用sys.displayhook并打印结果:

'This will only print in a console'

但是,如果在脚本中运行,则除非分配了变量,否则基本上是不需要的代码行。

基本上,控制台假定您希望在编写代码时看到结果。 (基本上在不打印print且显式运行None时不会被调用的每一行调用特殊的print它仅在明确要求或其他特殊情况下才会打印到控制台。

答案 1 :(得分:0)

您的“ sample.csv”文件的前5行是否每次出现空白?如果未选择,则df.head()返回(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.head.html)的前5行。所以:

import pandas as pd
df = pd.DataFrame({'animal':['alligator', 'bee', 'falcon', 'lion', 'monkey', 'parrot', 'shark', 'whale', 'zebra']})

print(df.head())

      animal
0  alligator
1        bee
2     falcon
3       lion
4     monkey

答案 2 :(得分:0)

如果要从函数中获取值并在其他地方使用它,则应在函数定义的末尾返回该值。这样,当您在代码中的某个位置调用函数时,可以将其分配给一个变量,该变量将存储函数的输出

例如

#test.py
def square(i):
   return i*i

def main():
   eight_square = square(8)
   print(eight_square)

只有打印输出,您才能在运行python3 test.py时在终端上实际看到它。还有其他方法可以检查变量中的值,例如使用调试器。如果未设置Visual Studio,则可以使用调试器对其进行配置。  将在必须找到变量值并必须启动调试器的位置设置一个断点。

参考:Microsoft visual studio docs

相关问题