python未定义_处理未定义的全局模块(python)

这篇博客讨论了在Python模块中全局变量的使用问题,特别是关于如何正确地在函数间传递和设置全局变量。文章建议避免使用全局变量,推荐通过参数传递或者使用类来管理状态。给出了从模块级全局变量转换为类方法的例子,以提高代码的可维护性和可读性。
摘要由CSDN通过智能技术生成

每个模块都有自己的全局命名空间。您已将sum_global添加到错误的模块中,但它并未存在于mymodule中。

将sum_global放入mymodule或将其作为参数传递给需要它的函数。

听起来好像你想推迟计算sum_global值,直到你有一个文件名;你可以让populateGlobalList()在这里设置全局;这完全在mymodule:

sum_global = None

def populateGlobalList(filename):

global sum_global

if sum_global is None:

sum_global = "result of your population work"

此函数不返回数据,它在模块中设置全局变量(假设它尚未设置)。

但是,你应该尝试避免创建像这样的全局变量。由于模块的用户必须提供文件名,如果用户代码跟踪populateGlobalList()调用的结果并且显式将其传递给usefulFunction()`call:< / p>import mymodule

sum_global = mymodule.populateGlobalList("bigdict.txt")

result = mymodule.usefulFunction(arg1, arg2, sum_global)

和retool usefulFunction()需要这样的论证。

下一步将是您的模块使用类:

class MyClass(object):

def __init__(self, filename):

self._populate()

def _populate(self):

self.sum = "result of your population work"

def useful_function(self, arg1, arg2):

# do work with self.sum

然后到处使用该课程:

interesting_object = mymodule.MyClass('bigdict.txt')

result = interesting_object.useful_function(arg1, arg2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值