[英]How can I reference a global variable from within a function?
嗨,我是一名初学者。 我不知道如何从函数中调用变量。 我有两个高清calcular()
和guardar()
我从calcular()
获得了一些变量,稍后将调用它们,但是当我在guardar()
调用变量时,它告诉我variable is not defined
。 我尝试制作global var
,但是它不起作用。 希望你能帮我
这是我的一些代码...
def calcular():
if nClient == "":
texto = ("Inserta Numero de cliente")
ventanaMensaje(texto)
else:
if cl1=="":
texto = ("Inserta Clave")
ventanaMensaje(texto)
else:
if aB1 == "":
texto = ("Inserta Cantidad")
ventanaMensaje(texto)
else:
try:
clt = open("preciosEsp.txt","r+")
lClt = clt.readlines()
rClt = lClt[0]
sClt = rClt.split("'")
nRClt = sClt[0]
if nClient == nRClt:
cReg=sClt[1]
if cl1== cReg:
prc=sClt[2]
else:
k=1
while cl1 != cReg:
cReg=sClt[k]
k=k+2
if cl1== cReg:
ñ=k-1
prc=sClt[ñ]
else:
x = 0
while nClient != nRClt:
rClt = lClt[x]
sClt = rClt.split("'")
nRClt = sClt[0]
x=x+1
if nClient == nRClt:
cReg=sClt[1]
if cl1==cReg:
prc=sClt[2]
else:
k=1
while cl1 != cReg:
cReg=sClt[k]
k=k+2
if cl1== cReg:
ñ=k-1
prc=sClt[ñ]
indice=int(prc)+3
pdcts = open("productos.txt","r+")
lPdcts = pdcts.readlines()
rPdcts = lPdcts[0]
sPdcts= rPdcts.split("'")
nPdcts = sPdcts[0]
t = 0
if cl1 == nPdcts:
precio1=sPdcts[indice]
global txtD1################## MAKE A GLOBAL VAR
txtD1=sPdcts[1] #### THIS IS THE VARIABLE ########
def guardar():
guardarDatos = (n+txtD1) ################# I CALL HERE, BUT TELL ME THAT VARIABLE IS NOT DEFINED
如果您确实需要全局变量,则可以在任何函数之外定义它
txtD1 = None
def calcular():
...
然后它将存在于模块级别。 但是,全局变量很少(永远不会读)应使用的解决方案,而应该从函数return
信息,而不是修改全局状态。 然后,您需要将该信息传递给另一个函数使用。
python中的global
关键字表示您正在引用一个全局变量,而不是创建一个新变量。 但是,在您的代码中不存在这样的名称,因此您实际上并没有引用任何东西。
首先在全球某个地方创建“数据库”
clt = dict(map(lambda x:x.split(" ",1),open("preciosEsp.txt","r+"))
现在您可以在任何地方访问它
clt.get(nClient)
下一个calcular应该返回您想要的值
def calcular():
...
precio = clt.get(nClient)
return [precio,nClient,...]
那么您将存储返回的值(或在返回值后立即对其进行处理)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.