NameError:未定义名称“用户操作”
Posted
技术标签:
【中文标题】NameError:未定义名称“用户操作”【英文标题】:NameError: name 'useraction' is not defined 【发布时间】:2020-09-22 14:06:06 【问题描述】:我确保在 main() 之前有 global,并且我确实为变量 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()
【问题讨论】:
如果您在任何函数中使用名为useraction
的变量,它已经是全局变量。如果您想在任何函数中引用它,请使用 global 关键字在该函数中引用它。
您误解了global
的工作原理。
【参考方案1】:
我认为你应该这样使用它。
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()
【讨论】:
【参考方案2】:根据定义,在全局范围内定义的任何名称都是全局的。
global
语句在 another 范围内用于将原本本地的名称标记为全局名称。
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()
也就是说,根本不要使用全局变量。将参数传递给函数,并使它们返回值。
【讨论】:
以上是关于NameError:未定义名称“用户操作”的主要内容,如果未能解决你的问题,请参考以下文章