下面是我尝试的功能:
def function(x):
list1 = []
if("word" in x):
print("Option 1: XXX, Option 2: YYY ...")
list1.extend(input("Enter a word: "))
我在这里尝试做的是将值 X 与我选择的字符串(向用户提出的问题)放在一起,然后让用户输入他们的答案。然后我想将该答案添加到一个不是全局变量的列表中(因为这是我要避免的要点),而不是每次调用此函数时都删除该列表;因为我想针对几个问题多次调用 function(x)。完成此操作后,我还需要能够提取此列表并将其传递给另一个函数,以便可以对用户答案进行数学运算等。
有什么建议吗?如果您也能解释发生了什么,我将非常感激,因为我正在努力了解这里实际发生的事情。有人告诉我,将列表放在函数参数中是有效的(确实如此),但这不允许我稍后获取列表并对它做一些事情(这显然是 python 中的一个错误)。为此运行一个循环也无济于事。
编辑:我会在几个小时后回来,然后标记答案;还没有通读所有内容,但到目前为止,我认为我已经掌握了它。
最佳答案
我想你要找的东西在像 C 这样的语言中被称为 static
。Python 不需要这样的关键字,因为它非常灵活。实现它的一种方法是使用保持封装的闭包。您会注意到 setupf
函数返回两个内部函数,它们的名称可以是任何合法的名称。
def setupf():
list1 = [] # This is the "static" variable
def internal(x):
if ("word" in x):
print("Option 1: XXX, Option 2: YYY ...")
list1.append(input("Enter a word: "))
def getit():
return list1
return internal, getit
function, getlist = setupf()
function("word")
function("word")
function("word")
function("word")
print(getlist())
给予:
Option 1: XXX, Option 2: YYY ...
Enter a word: hello
Option 1: XXX, Option 2: YYY ...
Enter a word: goodbye
Option 1: XXX, Option 2: YYY ...
Enter a word: stuff
Option 1: XXX, Option 2: YYY ...
Enter a word: another
['hello', 'goodbye', 'stuff', 'another']
您可能会注意到我将 .extend
替换为 .append
- 在 Python 的 C 实现中使用 .append
效率更高,因为列表的实现方式。
我对“单词”的测试感到困惑,也许你能解释一下。
关于python - 在不使用全局变量的情况下保存函数的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43016772/