我试图在funktion中设置一个全局变量。
全局变量设置为Kategorie = ''
在我的一个函数中,我想将它设置为另一个值:
elif methode=='show_select_dialog':
writeLog('Methode: show select dialog', level=xbmc.LOGDEBUG)
dialog = xbmcgui.Dialog()
cats = [__LS__(30120), __LS__(30121), __LS__(30122), __LS__(30123), __LS__(30116)]
ret = dialog.select(__LS__(30011), cats)
if ret == 6:
refreshWidget()
elif 0 <= ret <= 5:
writeLog('%s selected' % (cats[ret]), level=xbmc.LOGDEBUG)
global Kategorie
Kategorie = (cats[ret])
refreshWidget()
如果我在函数Kategorie
中记录变量refreshWidget
,则值正确(cats[ret]
),但在此之后如果再次调用函数refreshedWidget
,则值消失...
elif methode == 'get_item_serienplaner':
sp_items = refreshWidget()
将变量更改为cats[ret]
后,我需要将其作为cats[ret]
答案 0 :(得分:1)
你必须在你的函数之外声明你的var,并且每次你想在你需要指定global varName
的函数中使用它时。我在声明中看到您的全局var名称是 Kategory ,并且在您使用 Kategorie 之后。
答案 1 :(得分:0)
Python希望通过明确要求全局关键字确保您确实知道自己正在使用全局变量。
要在函数中使用全局变量,您必须明确地使用它。
这是一个小例子:
myGlobalVar= 0
def set_globvar():
global myGlobalVar # Needed to modify global copy of globvar
myGlobalVar = 5
def print_globvar():
print myGlobalVar # No need for global declaration to read value of myGlobalVar
set_globvar()
print_globvar() # Prints 5
在您的情况下,我发现您声明要访问global Kategorie
,但您未声明对global Kategory
的访问权限。我不知道这是一个简单的拼写错误还是它们是2个不同的变量。无论如何,你需要写global yourGlobalVariable
答案 2 :(得分:0)
python中真的有全局变量吗?是的,有一个全局关键字,允许您访问文件范围中的变量。访问变量的另一种方法是使用import语句。假设您有一个名为file.py的文件。为了写入变量,你可以。您可以轻松访问其他文件变量。
{{1}}