PYTHON 跨文件使用全局变量

文章讨论了Python中不同模块间如何正确共享和初始化全局变量的问题。vis.py可以直接修改f_ball,但在调用getval时出错,因为fBall未初始化。这表明init函数在import时可能被隐式执行,特定的代码结构是唯一能确保正确性的方法。
摘要由CSDN通过智能技术生成

文件功能描述:

f.py

def _init():
    global f_ball
    f_ball = 0

def getval():
    return f_ball

vis.py

import f

f._init()

def add():
    f.f_ball += 1

main.py

import f,vis

for i in range(10):
    vis.add()
    print (f.getval())

  有很奇怪的一点,vis.py文件可以直接对f_ball变量做修改,但如果使用了f.getval(),就会报错UnboundLocalError: local variable 'f_ball' referenced before assignment,很明显是跳过了init没有执行,但删掉getval之后就能运行,说明init在import时就被执行了。

现在只会这一种可以运行的布局,其他布局全是错的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值