Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.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_Maya - Fatal编程技术网

Python中的变量作用域

Python中的变量作用域,python,maya,Python,Maya,关于Python变量的作用域,我有一个问题。这里是我用pymel在Maya中编写的脚本。此readyButton函数位于classA中 import pymel as pm def readyButton(self,*args): previewMode = pm.button('previewBttn',q=True,bgc=True) if previewMode == [0,0,0] : pm.button('previewBttn',e=True,bgc

关于Python变量的作用域,我有一个问题。这里是我用pymel在Maya中编写的脚本。此readyButton函数位于classA中

import pymel as pm

def readyButton(self,*args):
    previewMode = pm.button('previewBttn',q=True,bgc=True)
    if previewMode == [0,0,0] :
        pm.button('previewBttn',e=True,bgc =[.608,0,.157],l='On used')
        if (globals().has_key('objList') == False):
            exec('objList = {}') in globals()
当我检查它时,使用相同的

globals().has_key('objList')
它在类外返回假值,在类内返回真值。我还需要这个变量来处理classB,那么如何在全局中声明它呢

感谢注意
has_key()
在Python2.7中被弃用,取而代之的是d中的
k


globals()中的
'A'和globals()中的
'B'返回的值是什么

你为什么要这样做?classA和classB应该是什么?
globals()['objList']={}
比exec工作得更好。或者您可以使用
global objList
,并在模块级别将其定义为
objList=None
。您实际上需要更改逻辑。您要寻找的第一个改进似乎是在全局范围内声明
objList=None
,然后在
readyButton
内声明
global objList
,而不是检查是否存在此类变量,你检查它是否是
None
,然后将它改为一个空字典。这意味着我必须在类外创建它:D无论如何,只要将它视为一个我无法解决的案例。你能给我解释一下为什么这是错误的吗?我同意罗斯曼的观点。你没有真正描述你想做什么。因此,很难给出令人满意的答案。实际上,在B类中使用它并不需要全局性。因此,所有的答案都是纯粹的猜测。在课堂上是真的,在课堂外是假的Class@illunara对不起,我的问题不完整。首先,我们必须知道哪些模块被声明为类A和B。它们在同一个模块中吗?@illunara对象对象列表应该是什么,也就是说它应该定义在哪里,在哪个代码块(模块、函数或类)中声明?A是UI类,B是另一个存储对象属性的类(如高度、大小、数量……)。脚本将objList声明为global中的dict变量,它在调用类a中的函数时创建(仅一次),您可以看到我在帖子顶部发布的脚本。@joojaa我有同样的疑问:我想知道他的问题是否有意义,他是否正确描述了问题。我想澄清这一点,如果真的有一个代码产生了他描述的结果,我想了解是什么决定了这个结果。但就目前而言,他的解释就像一团烟雾