我在python中创建字典有问题。 在我的主循环中,我调用函数1,该函数应创建一个空字典。 函数1调用函数2。 函数2自我调用(遍历游戏树) 但是我不能使用我在f1中创建的字典。 并且不可能通过它作为增值。 我想让dict全局访问
startMonth.start > endMonth.end
这是我的“真实”代码:) >> MinMaxComputerMove <<需要编辑字典。 但是在结束点之后,我无法通过它,因为for循环还在继续。
def f1(): # function 1
#test_dict = {} # this needs to be global scope
#test_dict["key"] = "value"
test_dict["key2"] = "value2"
print (test_dict)
f2()
def f2(): # function 2
# here starts a loop that calls f2 again and again -> global dict is needed
# dict needs to be created
print (test_dict)
test_dict = {} # only works without errors when i create it before calling f1
test_dict["key"] = "value"
f1()
答案 0 :(得分:0)
“返回值”的答案是:
def f1(test_dict): # function 1
#test_dict = {} # this needs to be global scope
#test_dict["key"] = "value"
test_dict["key2"] = "value2"
print ('In f1 {}'.format(test_dict))
f2(test_dict)
return test_dict
def f2(test_dict): # function 2
# here starts a loop that calls f2 again and again -> global dict is needed
# dict needs to be created
print ('In f2 {}'.format(test_dict))
return test_dict
test_dict = {} # only works without errors when i create it before calling f1
test_dict["key"] = "value"
test_dict = f1(test_dict)
其输出为:
In f1 {'key2': 'value2', 'key': 'value'}
In f2 {'key2': 'value2', 'key': 'value'}
但是在某种程度上,您可能希望将其中的一些放入类中,然后将test_dict
作为类中的变量。这样一来,f1
和f2
(假设它们是类方法)就可以访问类变量,而无需将其作为参数传递给这两个方法。
class Example:
def __init__(self):
self._test_dict = {}
self._test_dict["key"] = "value"
def f1(self): # function 1
self._test_dict["key2"] = "value2"
print ('In f1 {}'.format(self._test_dict))
self.f2()
def f2(self): # function 2
print ('In f2 {}'.format(self._test_dict))
example = Example()
example.f1()
答案 1 :(得分:0)
下面是脚本尝试的非常简单的版本。您需要考虑函数参数应该是什么(传递给函数的参数),以及函数在执行结束时应提供的内容(通过return语句提供给您)。这样,您可以操作对象而不必将所有内容保持在全局范围内,并且可以避免在例程开始时不必初始化每个可能的变量。
def f1():
f1_dict = {}
f1_dict = f2(f1_dict)
return f1_dict
def f2(dict_arg):
f2_dict = {}
for i in range(0,5):
f2_dict[str(i)] = i**i
return f2_dict
dictionary = f1()
print(dictionary)