如何从另一个函数内的一个函数调用变量?

问题描述:

我有一个功能load如何从另一个函数内的一个函数调用变量?

def load(): 
     file = open((input("File name: ")), "r") 
     movies_list = file.readlines() 
     movies_list = [movie.strip() for movie in movies_list] 
     file.close() 

而且我想使用其他功能randomSelection

def randomSelection(): 
     print(random.choice(movies_list)) 

我怎样才能解决这个获取列表movies_list?有没有办法将movies_list声明为全局变量?

+2

定义'movie_list'全球。 – EbraHim

+3

为什么不把'movies_list'从'load'返回并传递给'randomSelection'? –

+0

https://en.wikipedia.org/wiki/Return_statement – khelwood

返回movies_list并将其作为参数传递给randomSelection

def load(): 
    with open((input("File name: ")), "r") as file: 
     movies_list = file.readlines() 
     movies_list = [movie.strip() for movie in movies_list] 
    return movies_list 

def randomSelection(movies_list): 
    print(random.choice(movies_list)) 

movies_list = load() 
randomSelection(movies_list) 
+0

这会在load()函数执行时返回一个错误。检查代码 – Mani

+0

哪个错误?你什么意思? – 2016-04-25 08:58:16

+1

在执行load()函数时删除冒号(:) – Mani

您可以返回movies_list和ARG传递给另一个函数(或者)使用全局变量

您可以定义一个movie_list作为一个全局变量如下:

def load(): 
     file = open((input("File name: ")), "r") 
     global movies_list 
     movies_list = file.readlines() 
     movies_list = [movie.strip() for movie in movies_list] 
     file.close() 

然后您可以在执行load()函数后使用movies_list

load() 
def randomSelection(): 
     print(random.choice(movies_list)) 

其他答案没关系。另一种选择是定义你的方法一类中,并使用实例变量他们之间共享数据:

class Test(): 
    def __init__(self): 
     self.movie_list = "Empty" 

    def f1(self): 
     self.movie_list = "God_Father" 

    def f2(self): 
     print self.movie_list 


test = Test() 
test.f2() 
test.f1() 
test.f2() 

输出:

>>> ================================ RESTART ================================ 
>>> 
Empty 
God_Father 
>>> 
+0

听起来像矫枉过正。 – 2016-04-25 08:58:31

+0

@DisplayName OOP是我的首选。没有? – EbraHim

+0

你为什么这么认为? Python是一个多范型语言:程序,functionla,OO。 – 2016-04-25 09:00:26