我有一个似乎很基本的问题,但我似乎在任何地方都找不到任何帮助。
file_a.py >>
from xyz import XYZ
class A:
.
.
.
file_b.py >>
import file_a
from file_a import A
class B(A):
def __init__(self):
A.__init__(self)
def someMethod(self):
XYZ.doSomething()
XYZ.doSomething()无法说出NameError:未定义名称“ XYZ”即使从file_a完成的标准导入(如“ import
sys”)似乎也无法使其在file_b中可用。我以为应该工作。我的理解错了吗?如果是,那么是否有办法在文件之间具有通用的导入和全局变量?(如果没有帮助,我曾经是C
++和Java程序员,现在开始使用html" target="_blank">python。)
我的理解错了吗?
是的,因为该行from file_a import A
仅将类A
导入的名称空间file_b
。的名称空间file_a
不予处理。如果不是这样,则两种语法都没有意义:
import modulename
from modulename import something
好像您的想法是正确的,那么在第二种形式之后,您将始终可以使用modulename.someotherthing
。
如果是,那么是否有办法在文件之间具有通用的导入和全局变量?
是的,使用星号*
运算符:
from modulename import *
但这带来了名称空间污染的问题,例如from file_a import *
还将导入在中file_b
完成的所有导入file_a
。您最终 将
失去对进口的控制,这会在某些时候刺伤您……请相信我!
当出于某些原因from module import *
需要时,解决方法是在变量中定义名称空间污染,module
该变量__all__
将应使用star运算符导入的内容列入白名单。
HTH!
问题内容: 我遇到了一些在Python脚本中导入模块的问题。我将尽力描述错误,为什么会遇到错误以及为什么要使用这种特殊方法来解决我的问题(我将在稍后描述): 假设我有一个模块,其中定义了一些实用程序函数/类,这些函数/类引用在此辅助模块将导入到的命名空间中定义的实体(让“ a”成为这样的实体): 模块1: 然后,我有了主程序,其中定义了“ a”,我要将这些实用程序导入其中: 执行该程序将触发以下错
问题内容: 我想做的只是显示来自一个API的firstevent。该变量称为“ firstevent”,其值应显示在网页上。但是firstevent在def内部,因此我将其更改为全局变量,希望可以在不同的函数中使用。但是它显示“ NameError:未定义全局名称’firstevent’”。这就是我在做什么: 定义一个全局变量 发送此变量一个随机值,应该是 在网站上显示firstevent的价值。
主要内容:Python局部变量,Python全局变量,获取指定作用域范围中的变量所谓 作用域(Scope),就是变量的有效范围,就是变量可以在哪个范围以内使用。有些变量可以在整段代码的任意位置使用,有些变量只能在函数内部使用,有些变量只能在 for 循环内部使用。 变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的。本节我们只讲解两种变量, 局部变量和 全局变量。 Python局部变量 在函数内部定义的变量,它的作用域也仅限于函数内部,出了函数就不能
问题内容: 我正在尝试使用exec运行一段python代码。 这导致以下输出 但是,如果我将代码更改为此- 然后工作正常-提供以下输出- 显然,A存在并且可以访问-在第一段代码中出了什么问题?我正在使用2.6.5,欢呼声, 科林 更新1 如果我检查类中的locals()- 然后很明显,locals()在两个地方都不相同- 但是,如果我这样做,就没有问题- 更新2 好的,所以这里的文档-http:
主要内容:局部变量,全局变量,局部变量和全局变量的综合示例在《 C语言形参和实参的区别》中提到,形参变量要等到函数被调用时才分配内存,调用结束后立即释放内存。这说明形参变量的作用域非常有限,只能在函数内部使用,离开该函数就无效了。 所谓 作用域( Scope ) ,就是变量的有效范围。 不仅对于形参变量,C语言中所有的变量都有自己的作用域。决定变量作用域的是变量的定义位置。 局部变量 定义在函数内部的变量称为 局部变量(Local Variable) ,
问题内容: 我了解Python中局部变量和全局变量的概念,但是我只是有一个问题,为什么下面的代码中会出现错误?Python逐行执行代码,因此在读取第5行之前,它不知道a是局部变量。Python尝试执行第5行后,会回退一行并将其标记为错误吗? 问题答案: 设置和测试 为了分析您的问题,让我们创建两个独立的测试函数来复制您的问题: 版画。因此,调用此函数不是问题,而是在下一个函数上: 我们收到一个错误