JSON(或 YAML 或其他)序列化可能更好,但如果您已经将字典写入 python 语法的文本文件,并完成了变量名绑定,则可以将其写入 .py 文件。然后该 python 文件将可以按原样导入和使用。不需要“返回字典的函数”方法,因为您可以直接将其用作该文件中的全局变量。例如
# generated.py
please_dont_use_dict_as_a_variable_name = {'Adam': 'Room 430', 'Bob': 'Room 404'}
而不是:
# manually_copied.py
def get_dict():
return {'Adam': 'Room 430', 'Bob': 'Room 404'}
唯一的区别是manually_copied.get_dict
每次都为您提供字典的新副本,而generated.please_dont_use_dict_as_a_variable_name
[1] 是单个共享对象。如果您在检索字典后在程序中修改字典,这可能很重要,但如果您需要独立修改一个字典,您始终可以使用copy.copy
或copy.deepcopy
创建一个新副本。
[1] dict
, list
, str
, int
,map
等通常被视为错误的变量名。原因是这些已经被定义为内置,并且非常常用。因此,如果你给某个东西起这样的名字,至少它会导致阅读你的代码的人(包括你离开一段时间后的你)产生认知失调,因为他们必须记住“dict
不是意思是它通常在这里做的事情”。也很有可能在某些时候你会得到一个令人恼火的解决错误报告dict
对象不可调用(或其他东西),因为一些代码正在尝试使用type dict
,但正在获取你的字典对象dict
而是绑定到名称。