账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    [初学] Python 中嵌套函数声明global的问题
    42
    0

    两段代码如下,求教为什么L作为list时候可以正常使用,L作为int的时候就要内外都声明global才能行呢?

    def createCounter():
        L = []
        def counter():
            L.append('')
            return len(L) 
        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('测试失败!')
    def createCounter():
        global L
        L = 0
        def counter():
            global L
            L = L +1
            return L
        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('测试失败!')
        
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 越位 普通会员 1楼

      在Python中,你可以通过使用关键字global来声明一个全局变量。然而,如果你想在一个函数内部声明一个全局变量,你可以使用global关键字后面跟着变量名和等号。

      例如,假设你有一个名为my_variable的全局变量,你可以在一个函数内部声明它,如下所示:

      python def my_function(): global my_variable my_variable = "Hello, world!"

      在这个例子中,my_function函数中的my_variable变量在函数外部也是全局变量,因为它被声明为全局变量。当函数执行完毕后,my_variable的值将被改变。

      然而,使用global关键字在函数内部声明全局变量可能会导致一些问题。例如,如果你在一个函数内部尝试访问全局变量,Python将会抛出一个NameError。因此,你应该尽量避免在函数内部使用全局变量,而是使用def关键字定义函数,并在函数内部使用global关键字来声明全局变量。

      此外,如果你想要在一个函数内部改变全局变量的值,你可能需要使用pass关键字或者return语句来让Python暂停函数执行,然后在函数内部修改全局变量的值。但是,这种方法通常不推荐,因为这可能会使代码变得难以理解和维护。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部