如果我有这个:
def oneFunction(lists):
category=random.choice(list(lists.keys()))
word=random.choice(lists[category])
def anotherFunction():
for letter in word: #problem is here
print("_",end=" ")
我以前定义过lists
,所以oneFunction(lists)
工作得很完美。
我的问题是在第6行调用word
。我曾尝试在第一个函数外部用相同的word=random.choice(lists[category])
定义word
,但这使得word
总是相同的,即使我调用oneFunction(lists)
。
我希望每次调用第一个函数,然后调用第二个函数时,都有一个不同的word
。
我可以在不定义oneFunction(lists)
之外的word
的情况下执行此操作吗?
7条答案
按热度按时间h7appiyu1#
一种方法是让
oneFunction
返回单词,这样就可以在anotherFunction
中使用oneFunction
而不是word
:另一种方法是使
anotherFunction
接受word
作为参数,您可以从调用oneFunction
的结果传递该参数:最后,可以在一个类中定义两个函数,并使
word
成为成员:一旦你创建了一个类,你必须示例化一个示例并访问成员函数:
0x6upsns2#
python中的所有东西都被认为是对象,所以函数也是对象,所以你也可以使用这个方法。
tuwxkamq3#
最简单的选择是使用一个全局变量,然后创建一个获取当前单词的函数。
这样做的好处是,您的函数可能位于不同的模块中,需要访问变量。
xcitsw884#
czq61nw15#
0g0grzrc6#
所以我继续尝试做我想到的事情你可以很容易地让第一个函数returnthe word然后在 another function 中使用这个函数同时在新函数中传入一个相同的对象,如下所示:
hjqgdpho7#
当我们想把一个函数的变量转换成另一个函数时,我们可以简单地使用'global'关键字。这只是一个简单的用法,但是如果你想在类环境中使用它,那么你可以参考上面的答案。