NameError:未定义名称“useraction”

2024-10-02 18:27:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我确保在main()之前有一个全局变量,并为变量useraction赋值。为什么它仍然说它是未定义的

    import os.path
    from os import path     

    shoppinglist = []   
    global useraction   

    def main():
        Displaylist()     
        RunItemAction()   


    def Displaylist():
        i = 0
        if (len(shoppinglist)>0):
    while (i<=len(shoppinglist)):
        print(shoppinglist[i] +"\n")
        i+=1

        useraction = str(input("Do you want to add, remove, or search for an item? "))
        useraction = useraction.upper()

    def RunItemAction():
        if( useraction == "ADD"):     
            AddItem()

Tags: pathfromimportlenifosmaindef
2条回答

我想你应该这样使用它

    import os.path
    from os import path     

    shoppinglist = []   
    useraction=""  # or any default value you want to give   

    def main():
        Displaylist()     
        RunItemAction()   


    def Displaylist():
        global useraction
        i = 0
        if (len(shoppinglist)>0):
            while (i<=len(shoppinglist)):
                print(shoppinglist[i] +"\n")
                i+=1

        useraction = str(input("Do you want to add, remove, or search for an item? "))
        useraction = useraction.upper()

    def RunItemAction():
        global useraction
        if( useraction == "ADD"):     
            AddItem()

根据定义,在全局范围定义的任何名称都是全局的

global语句用于另一个范围中,以将一个名称标记为全局名称,否则该名称将是本地的

import os.path
from os import path     

shoppinglist = []   

def main():
    Displaylist()     
    RunItemAction()   


def Displaylist():
    global useraction
    i = 0
    if (len(shoppinglist)>0):
        while (i<=len(shoppinglist)):
            print(shoppinglist[i] +"\n")
            i+=1

    useraction = str(input("Do you want to add, remove, or search for an item? "))
    useraction = useraction.upper()

def RunItemAction():
    global useraction
    if( useraction == "ADD"):     
        AddItem()

也就是说,根本不要使用全局变量。将参数传递给函数,并使其返回值

相关问题 更多 >