出于某种原因,当我尝试使用函数中的列表时,在函数外部调用它不起作用。任何人都可以在这里找出问题并希望能够解决它吗?
import itertools
from itertools import izip_longest
def go():
first = [1,2,3,4,5,1]
return first
go()
second = [6,7,8,9,10]
print map(sum, izip_longest(go().first, second, fillvalue=0))
答案 0 :(得分:1)
只需调用该函数,即可返回函数中的列表,只需调用它即可获得列表:
print map(sum, izip_longest(go(), second, fillvalue=0))
In [4]: def go():
...: first = [1,2,3,4,5,1]
...: return first
...:
In [5]: go()
Out[5]: [1, 2, 3, 4, 5, 1]
要做你想做的事情实际上可以做到这只会有很多不同而且不是真的推荐:
def go():
go.first = [1,2,3,4,5,1]
return go
second = [6,7,8,9,10]
print map(sum, izip_longest(go().first, second, fillvalue=0))
答案 1 :(得分:0)
go()
是一个函数,而不是一个类。 Go没有像类这样的属性,只需要输入一些内容,然后返回其他内容,其间的所有内容都是"黑盒子"。
所以
print map(sum, izip_longest(go(), second, fillvalue)
另一个更好的选择是你实际上在某处分配你的功能的结果。
first = go()
second = [1,2,3,4]
print first, second
答案 2 :(得分:0)
函数返回一个值(或改变一个对象,或两者兼有)并且它就是它。虽然他们确实有成员可以访问(感谢@Jon Clements),但与其他对象一样,它不是他们使用的典型方式,而first
不是其中之一,所以{{ 1}}无法正常工作。
此外,go().first
将为您提供函数的返回值,而不是functinos本身。所以你实际上在打电话:
go()
这也毫无意义。
因此, [1,2,3,4,5,1].first
会在函数的上下文中返回名为go()
的值(列表为first
)。您可以在调用函数后为其指定名称来使用该值:
[1, 2, 3, 4, 5, 1]
您也可以立即使用它:
# give `go`'s result a name
lst = go()
# now use it via that name ...
print map(sum, izip_longest(lst, second, fillvalue=0)