首页 > 解决方案 > 我收到一个错误,即未定义函数内的变量

问题描述

在我的以下代码中,我的代码中重复了以下代码行,因此我尝试将它们插入函数中并在需要时调用它们,但是发生了错误,我不知道为什么:

list1=[1000,2000,3000,4000,5000]
i=0
c=0.5
n=1000
def func(list1,i,c,n):
    x=list1[i]/2
    y=x*c
    z=n-y
    if z<=0:
        list1.pop(i)
func(list1,i,c,n)
print('x=',x,'y=',y,'z=',z)

当我尝试执行代码时,出现未定义 x 或 y 或 z 的错误。

标签: python-3.xfunction

解决方案


在函数内部创建的变量只存在于函数结束之前。如果您希望x,yz在全局范围内可用,则需要声明您喜欢这种行为。您可以通过在函数开头添加以下行来指示变量将是全局变量:

def func(new_x):
    global x
    x = new_x

func(5)
print('x=', x)

例如,这将打印 5。您可以global使用逗号一次声明多个变量,如下所示:

def func(new_x):
    global x, y
    x = new_x
    y = new_x+1

func(5)
print(f'x={x} y={y}')

这将打印x=5 y=6. 注意我用来格式化字符串的方式。它被称为 f-string,你可以在这里阅读它


推荐阅读