为什么此方法没有按预期分配变量?
Why isn't this method assigning the variable as expected?
我有一种方法可以从文件中读取并将内容分配给变量。
def recall_data(self, file, d):
try:
with open(file) as f:
d = json.load(f)
print(d)
except FileNotFoundError:
print('No File!')
我调用了方法,知道d的值赋给了文件(一个字典)的内容。但是,代码没有将 d 的值存储在我作为 d.
传递的变量中
self.recall_data(self.file_name, self.data)
这是我的方法调用。 self.data 是一个空字典。我不明白为什么它没有将 self.file_name.
的内容分配给 self.data
您没有传递参数以供参考。
Python:
中 value 的参数段落是这样工作的
var = 'hey'
def foo(arg):
arg = 'yay'
print(arg)
foo(var) # 'yay'
print(var) # 'hey'
对于你的情况,你可以这样做:
def recall_data(self, file, d: list): # d is a list with one element
try:
with open(file) as f:
d[0] = json.load(f) # This way you are really editing the variable in the global scope
print(d[0])
except FileNotFoundError:
print('No File!')
请注意,本例中的 d
参数必须是 list
类型,因此 self.data
也必须是
如果您想了解更多关于此方法的信息,可以阅读this question
的答案。
否则你可以这样做:
def recall_data(self, file, d):
try:
with open(file) as f:
d = json.load(f)
print(d)
return d
except FileNotFoundError:
print('No File!')
self.data = self.recall_data(self.file_name, self.data) # The returned value will be stored into self.data
请注意,您永远不应该使用我上面建议的第一种方法,它只是为了解决问题而无需更改您的代码。
我有一种方法可以从文件中读取并将内容分配给变量。
def recall_data(self, file, d):
try:
with open(file) as f:
d = json.load(f)
print(d)
except FileNotFoundError:
print('No File!')
我调用了方法,知道d的值赋给了文件(一个字典)的内容。但是,代码没有将 d 的值存储在我作为 d.
传递的变量中self.recall_data(self.file_name, self.data)
这是我的方法调用。 self.data 是一个空字典。我不明白为什么它没有将 self.file_name.
的内容分配给 self.data您没有传递参数以供参考。
Python:
中 value 的参数段落是这样工作的var = 'hey'
def foo(arg):
arg = 'yay'
print(arg)
foo(var) # 'yay'
print(var) # 'hey'
对于你的情况,你可以这样做:
def recall_data(self, file, d: list): # d is a list with one element
try:
with open(file) as f:
d[0] = json.load(f) # This way you are really editing the variable in the global scope
print(d[0])
except FileNotFoundError:
print('No File!')
请注意,本例中的 d
参数必须是 list
类型,因此 self.data
也必须是
如果您想了解更多关于此方法的信息,可以阅读this question
的答案。
否则你可以这样做:
def recall_data(self, file, d):
try:
with open(file) as f:
d = json.load(f)
print(d)
return d
except FileNotFoundError:
print('No File!')
self.data = self.recall_data(self.file_name, self.data) # The returned value will be stored into self.data
请注意,您永远不应该使用我上面建议的第一种方法,它只是为了解决问题而无需更改您的代码。