python - 在打印列表结束时获取 'none'

标签 python return-value

<分区>

这里是新手。有人可以向我解释为什么在此代码末尾打印“无”,但仅在函数内部调用时才打印吗?

背景: 我有一个包含一些列表的变量 (share_data):

share_data = 
[['Date', 'Ticker', 'Company', 'Mkt Cap', 'VM Rank', 'Value Rank', 'Momentum Rank'],  
['2016-08-27', 'BEZ', 'Beazley', '2,063', '89', '72', '76'], 
['2016-08-30', 'BEZ', 'Beazley', '2,063', '89', '72', '76'], 
['2016-08-31', 'BEZ', 'Beazley', '2,050', '89', '72', '75'], 
['2016-09-01', 'BEZ', 'Beazley', '2,039', '96', '73', '93'], 
['2016-09-02', 'BEZ', 'Beazley', '2,069', '90', '72', '77'], 
['2016-09-03', 'BEZ', 'Beazley', '2,120', '96', '70', '94'], 
['2016-09-06', 'BEZ', 'Beazley', '2,106', '90', '71', '77'], 
['2016-09-07', 'BEZ', 'Beazley', '2,085', '89', '71', '76'], 
['2016-09-08', 'BEZ', 'Beazley', '2,091', '89', '72', '77'], 
['2016-09-09', 'BEZ', 'Beazley', '2,114', '89', '71', '77'], 
['2016-09-10', 'BEZ', 'Beazley', '2,084', '94', '71', '89'], 
['2016-09-12', 'BEZ', 'Beazley', '2,084', '94', '71', '89']]

我有兴趣打印最后 5 行。

如果我在 main 程序中使用它:

for row in share_data[-5:]:
    print(row)

我得到了正确的数据:

['2016-09-07', 'BEZ', 'Beazley', '2,085', '89', '71', '76']
['2016-09-08', 'BEZ', 'Beazley', '2,091', '89', '72', '77']
['2016-09-09', 'BEZ', 'Beazley', '2,114', '89', '71', '77']
['2016-09-10', 'BEZ', 'Beazley', '2,084', '94', '71', '89']
['2016-09-12', 'BEZ', 'Beazley', '2,084', '94', '71', '89']

...但是当我创建一个函数来执行此操作时:

def share_details(share_data, n=5):
    ''' Prints the last n rows of a share's records'''
    for row in share_data[-n:]:
        print(row)
    return

并以这种方式调用函数:

print(share_details(share_data))

...我得到的是这个(注意末尾的“无”):

['2016-09-07', 'BEZ', 'Beazley', '2,085', '89', '71', '76']
['2016-09-08', 'BEZ', 'Beazley', '2,091', '89', '72', '77']
['2016-09-09', 'BEZ', 'Beazley', '2,114', '89', '71', '77']
['2016-09-10', 'BEZ', 'Beazley', '2,084', '94', '71', '89']
['2016-09-12', 'BEZ', 'Beazley', '2,084', '94', '71', '89']
None

我认为是触发它的函数末尾的“return”语句,但不知道如何/为什么。

编辑 - 现在很清楚我的错误是什么(即打印 inside 函数,然后在外面打印返回值)我可以跟进一个额外的问题吗? 将所有打印委托(delegate)给一个函数是好的做法吗?也许调用一个函数,以提高可读性:

print_share_details(share_data)

或者有更好的可读性/pythonic 的方法?

最佳答案

Python 中的每个函数都会返回一些东西,默认返回值为 None。所以

print(share_details(share_data))

调用 share_detailsshare_details 打印 share_data 的最后 5 行,share_details 返回 None(默认情况下),然后 print 打印该返回值。

关于python - 在打印列表结束时获取 'none',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39460671/

相关文章:

c# - 从 c# .net 代码返回 S_OK 或 E_FAIL 的值是什么?

python - 防止 ipython 笔记本中的单元格编辑

python - 仅在没有调试器的情况下发生的递归错误

python - Django:SQL 防注入(inject)管理器.py

C++。返回一个对象或传递一个要填充的引用?

c++ - 如何在 C++ 中返回 Null 作为引用?

Python递归函数不返回

python - 如何防止 shell 在运行 python 脚本时获取输入(键盘)?

java - 返回java中循环中存在的值

c - C 共享库中的函数重载(不同的返回类型,不同数量的参数)