什么是模块初始化?

你好,
我在网上发现有一个叫做模块的东西
初始化.不幸的是,对此没有太多信息.
但是,我发现模块初始化的信息可能是
在我的项目中使用我.
我目前正在处理一个问题,我要保留我的全球
模块中的变量(或符号)和其他mdoules
这些全球变量项目.
但是,在某种情况下,模块更新一个这样的全局
变量,但该变量未在模块中更新
包含全局符号(变量).这只会在开始时发生
该计划以及该计划中的其余位置的全球
变量无法访问.
因此,我想到了使用此模块初始化
Intialize仅一次更新该变量.在
该计划的其余部分在进口该模块的情况下,我将能够
轻松访问变量的更新值.
有人可以为我提供模块Intialation的示例代码吗?和
如何确保仅完成一次模块初始化?
谢谢并恭祝安康,
拉贾特

# 回答1


在2008年9月2日星期二14:32:30 +0100,dudeja.rajat写道:
当您导入模块时,"模块初始化"是
第一次.在纯Python模块中执行模块级代码,并
在扩展模块中,可以调用特殊的初始化函数.
听起来不太可能 *真的 *更新模块的属性和
不仅重新绑定了"全局"中对象绑定的本地名称
模块之前.例子:
从垃圾邮件进口鸡蛋
egg = 42#这确实 *不 *更改``垃圾邮件''
模块初始化仅完成一次,没有什么可以确保的.
再见,
marc'blackjack'rintsch
# 回答2

du = dude =@gmail.com aécrit:
Python C API具有用于C编码模块的模块INIT函数.有
由于所有顶级,因此无需在纯Python模块中使用这种事情
加载模块时执行代码(作为主脚本或
第一次导入模块).
请记住,没有一个真实的全球名称空间
Python. "全局"确实是指"模块级别".
尽管这在技术上是合法的,但您应该限制自己
这样的事情,除非您 *真的 *知道自己在做什么以及为什么.
我怀疑您在导入时没有使用合格的名称.你所要做的
这样:
#myglobals.py:
答案= 42
#Question.py
导入myglobals
myglobals.answer =" wtf?"
模块时执行模块顶部的所有语句
已加载.这就是WRT/模块初始化所需的全部.
除非您使用__import__或IMP模块做奇怪的事情,否则
不必担心.导入做两件事:定位,加载 *和缓存 *
模块 *如果 *它尚未在缓存中,并将名称绑定到
导入名称空间.
# 回答3


尽管这在技术上是合法的,但您应该限制自己
我怀疑你没有使用qua 导入时已使用的名称.你必须这样做
这边走 :
#myglobals.py:
答案= 42
#Question.py
导入myglobals
myglobals.answer =" wtf?"
但是如果我这样做: -
#Question.py
从Myglobals Import *
myglobals.answer =" wtf?"
这个可以吗?
# 回答4


在周二,2008年9月2日15:32:07 +0100,dutexhydedeyde*****@gmail.com写道:
你为什么不尝试?在这种情况下,您应该收到名称.
- -
问候,
wojtek walczak,http://tosh.pl/gminick/(_@_ _)dude = dudebemdeyde therefloct@gmail.com写道:
但是如果我这样做: -
#Question.py
从Myglobals Import *
myglobals.answer =" wtf?"
这个可以吗?
具有上述myglobals的定义,没有. "来自狂热的进口"
不会将模块对象添加到导入模块的名称空间中.
您是否读过:http://effbot.org/zone/import-confusion.htm
?
# 回答5


在2008年9月2日下午6:22下午,Fredrik Lundh 但是,如果我这样做: - #问题.

具有上述myglobals的定义,没有. "从狂欢者导入"没有
将模块对象添加到导入模块的名称空间中.
您是否读过:http://effbot.org/zone/import-confusion.htm
?

-http://mail.python.org/mailman/listinfo/python-list
感谢您的帮助,我解决了我的问题.
问候,
拉贾特

标签: python

添加新评论