Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何避免在python中从模块加载特定变量_Python_Python 2.7_Python 3.x - Fatal编程技术网

如何避免在python中从模块加载特定变量

如何避免在python中从模块加载特定变量,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,(我已经签出了——它询问的是类而不是模块。因此,那里的答案不包括我感兴趣的import。) 考虑一下,有一个名为X的模块,带有变量y。如果任何其他模块尝试导入模块X,如何避免在Python中加载变量y 例如: # x.py y=10 然后,我们在其他模块中使用此选项: import x print x.y 如何避免从模块x.py访问x.y 正常使用时导入foo只导入模块一次;所有其他导入都会看到它已导入,并且不会再次加载它 引述: 导入期间,将在sys.modules中查找模块名称,如果

(我已经签出了——它询问的是类而不是模块。因此,那里的答案不包括我感兴趣的
import
。)

考虑一下,有一个名为
X
的模块,带有变量
y
。如果任何其他模块尝试导入模块
X
,如何避免在Python中加载变量
y

例如:

# x.py
y=10
然后,我们在其他模块中使用此选项:

import x 
print x.y

如何避免从模块x.py访问x.y

正常使用时
导入foo
只导入模块一次;所有其他导入都会看到它已导入,并且不会再次加载它

引述:

导入期间,将在sys.modules中查找模块名称,如果 当前,关联的值是满足导入的模块,并且 这个过程完成了。但是,如果该值为“无”,则 恐怖情绪高涨。如果模块名丢失,Python将 继续搜索模块

长期以来,这一直是口译员的一个特点,而且可能更早



说到您的具体问题,没有变量
y
,有
x.y
,因为这是您导入的。如果您从模块导入中执行高度未推荐的
*
,您可能会得到一个
y
,但您不应该这样做。

如果您执行
导入模块
,则无法隐藏任何全局成员,这是故意的:,与模块成员使用的相同

一种方法是用前导下划线标记“内部”实体,以提示用户它们不打算用于外部。对于您导入的其他模块的引用,这是不必要的,因为指南明确禁止外部使用它们(唯一的例外是,如果引用的模块无法正常访问)


但是,执行此操作时,您不会获得模块引用,而是直接将其导入到当前命名空间中。默认情况下,将导入除以下划线开头的名称以外的所有内容。您可以通过定义模块属性来覆盖它。

加载变量
y
时是否有任何副作用?你知道
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。目前还不清楚确切的需求是什么。这个问题的主持人将其标记为“Python类中是否有‘私有’变量?”的副本,显然他们不了解Python。这个问题不是那个问题的重复。主持人显然对Python一无所知,他们不知道“类”和“模块”之间的区别。如果你问我的话,这种情况是相当令人难过的。顺便说一句,下面是伊万·波兹代夫提供的正确答案。