Discuss / Python / 全局变量和局部变量的概念不清楚,最开始直接n=1之后直接在内函数引用发现并不能运行出结果。

全局变量和局部变量的概念不清楚,最开始直接n=1之后直接在内函数引用发现并不能运行出结果。

Topic source

#利用闭包返回一个计数器函数,每次调用它返回递增整数:

#闭包即为外函数return内函数,调用外函数每次都只返回内函数而不会直接运算内函数结果。

#内外函数变量调用的时候一定要注意全局变量和局部变量的概念。

def createCounter():

    n=0

    def counter():

        nonlocal n

        n+=1

        return n

    return counter

# 测试:

counterA = createCounter()

print(counterA(), counterA(), counterA(), counterA(), counterA()) # 1 2 3 4 5

counterB = createCounter()

if [counterB(), counterB(), counterB(), counterB()] == [1, 2, 3, 4]:

    print('测试通过!')

else:

    print('测试失败!')


  • 1

Reply