调用从另一功能的可变
这是问题的类型的一个简单的例子中,我碰上:调用从另一功能的可变
def making_list(text):
list_ = []
i = 0
while i < int(len(text)):
list_.append(text[i])
i += 1
return list_
def calling_list(list_):
print list_
text = raw_input("text input")
making_list(text)
calling_list(list_)
可变list_,它来源于making_list,不是由功能识别calling_list。什么是解决这个问题的可能办法?
谢谢
你没有在任何地方存储变量。
mylist = making_list(text)
calling_list(mylist)
说明:变量名仅在函数的作用域中有效。如果你离开函数(返回一些局部变量),你只返回变量的'值',而不是它的名字,你需要将它赋值给外部的变量。
调用变量' list'是一个坏主意,你正在粉碎'list()'。 – 2013-04-22 11:47:20
@Lattyware,好点。 – nothrow 2013-04-22 11:48:31
您必须声明将输出making_list
作为其值的变量。 making_list
函数返回list_
;但如果您不将它分配给另一个变量,则无法达到它。
list_ = making_list(text)
将解决您的问题。
您的making_list
-功能不会返回任何内容。这将工作
list = making_list(text)
calling_list(list)
这将工作。
我不想改变或优化你的代码,我只是想给一个可能的解决方案:
1)如果你想list_
存储在内存中,更改最后两行代码一样的这个:
list_=making_list(text)
calling_list(list_)
现在你可以在你的代码中的任何地方访问list_。
2)如果您不希望存储list_
,你只是想打印出来,并忘掉它,删除你的代码的最后2行,写这行:
calling_list(making_list(text))
注意' making_list(text)'相当于'list(text)'。例如:'list(“abcd”)== ['a','b','c','d']' – 2013-04-22 11:56:38
确实,一般来说,通过索引循环是一个非常糟糕的主意Python – 2013-04-22 12:47:40