python中,为什么必须在函数内部定义变量,而不能在函数外定义变量?

这是定义的一个指数函数

def rtp(base,pow):
    result = 1
    for i in range(pow):
        result=result*base
    return result
print(rtp(2,4))

其结果是2的4次方,输出结果为16(这是正确的)

但是为什么,将result=1定义在函数外部就不行了呢?
如下:

result = 1
def rtp(base,pow):
    for i in range(pow):
        result=result*base
    return result
print(rtp(2,4))

输出结果就会报错

将函数内部的result声明为global即可

result = 1


def rtp(base, pow):
    global result
    for i in range(pow):

        result = result*base
    return result


print(rtp(2, 4))

Python 变量作用域 - 简书 变量作用域(scope)在Python中是一个容易掉坑的地方。Python的作用域一共有4中,分别是: L (Local) 局部作用域E (Enclosing) 闭包函数... https://www.jianshu.com/p/3bb277c2935c
有帮助望采纳