You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python字典调用函数未更新,能否让程序修改源代码求助

帮你理清这两个Python字典的问题~

首先得明确两个核心点:为什么调用函数后你看不到代码里的变化,以及到底该怎么持久化你的字典数据。

一、为什么调用函数后,代码里的字典没变化?

你得先搞懂Python代码运行的逻辑:

  • 当你运行程序时,my_dict = {'a': [(1,2,3), (4,5,6)]}这行代码会把这个初始字典加载到电脑的内存里,你后续调用adding_new()修改的是内存里的字典副本,而不是你写在.py文件里的静态源代码。
  • 你打开代码文件看到的始终是初始状态,是因为源代码是静态的文本,程序不会自动把内存中修改后的内容写回源代码文件里——这是正常现象,所有编程语言基本都是这样的。

怎么验证字典确实被修改了?你可以在调用函数后打印字典看看:

my_dict = {'a': [(1,2,3), (4,5,6)]}

def adding_new():
    my_dict['new_key'] = [(7,8,9)]

# 调用函数修改字典
adding_new()
# 打印内存里的字典
print(my_dict)

运行这段代码,控制台会输出:{'a': [(1, 2, 3), (4, 5, 6)], 'new_key': [(7, 8, 9)]},这说明内存里的字典已经更新了,只是源代码文件没被改动而已。

二、有没有办法让程序修改现有代码?

首先:非常不推荐这么做!

直接修改源代码是一种风险极高的操作——万一程序写错了内容,下次运行代码直接就会报错,而且这种方式完全不符合常规的编程逻辑。

正确的做法:把数据持久化到外部文件

如果你的需求是让字典修改后的数据,在下次运行程序时还能用上,应该把字典保存到外部文件里,比如JSON文件(最常用的方式)、文本文件或者Pickle文件。

举个简单的JSON保存/读取例子:

1. 保存修改后的字典

import json

# 初始字典
my_dict = {'a': [(1,2,3), (4,5,6)]}

def adding_new():
    my_dict['new_key'] = [(7,8,9)]

# 修改字典
adding_new()

# 把字典保存到data.json文件里
with open('data.json', 'w') as f:
    json.dump(my_dict, f)

2. 下次运行时读取保存的数据

import json

try:
    # 优先读取之前保存的字典
    with open('data.json', 'r') as f:
        my_dict = json.load(f)
except FileNotFoundError:
    # 如果文件不存在,就用初始字典
    my_dict = {'a': [(1,2,3), (4,5,6)]}

print(my_dict)  # 这里会输出上次保存的更新后字典

如果你非要修改源代码(再次提醒:不建议)

可以通过文件操作来改写.py文件里的字典定义,但这种方式只适合非常简单的场景,而且很容易出错。比如你可以读取代码文件的内容,替换掉字典的行,再写回去——但一旦字典结构变复杂,这种方法基本就失效了,所以真的不推荐这么干。

内容的提问来源于stack exchange,提问作者Omer Efron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 06:42:51