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

如何在Processing.py的模块之间共享全局变量?

解决Processing.py中的变量共享问题

嘿,我太懂你这种挫败感了——Python里常用的变量共享手段在Processing.py里确实不好使,尤其是主.pyde文件没法直接被当作模块导入这个坑,简直让人摸不着头脑!别着急,我给你分享两个靠谱的解决方案:

方案一:用独立的共享变量模块

这是最稳妥的方式,专门创建一个用来存共享变量的模块,让主文件和其他模块都通过这个模块来读写变量。

  1. 新建一个globals.py文件,用来初始化共享变量:
# 初始化共享变量,先设为None,等主文件加载后再赋值
thing = None
  1. 修改你的main.pyde,把变量存在这个共享模块里:
import globals

def setup():
    size(600, 600)
    globals.thing = loadShape("param.svg")
    # 你的其他初始化代码

def draw():
    background(255)
    if globals.thing is not None:
        shape(globals.thing, 0, 0)
    # 你的其他绘制逻辑
  1. 在control.py里导入这个共享模块,就能访问变量了:
import globals

# 举个例子,写个操作共享变量的函数
def scale_thing(scale_factor):
    if globals.thing is not None:
        globals.thing.scale(scale_factor)

方案二:直接访问主脚本的命名空间

Processing.py运行时,主.pyde文件会作为__main__模块执行,所以其他模块可以通过导入__main__来访问主文件里的全局变量。

修改你的control.py:

import __main__

# 访问主文件里的thing变量,记得先判断是否存在
def use_main_thing():
    if hasattr(__main__, 'thing'):
        target_shape = __main__.thing
        # 在这里对shape做你需要的操作
        print("Shape loaded successfully!")

注意事项

  • 不管用哪种方式,都要确保共享变量已经在setup()里完成初始化了——毕竟setup()是Processing.py里最早执行的初始化函数,在这之前变量可能还是None。
  • 如果你的control模块里有需要频繁调用的函数,尽量避免在draw循环外直接修改绘制相关的变量,防止出现画面异常。

内容的提问来源于stack exchange,提问作者A.V. Arno

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:31:44