• python3学习笔记12(变量作用域)


    变量作用域

    参考http://www.runoob.com/python3/python3-function.html

    Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。

    变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Python的作用域一共有4种,分别是:

    • L (Local) 局部作用域
    • E (Enclosing) 闭包函数外的函数中
    • G (Global) 全局作用域
    • B (Built-in) 内建作用域

    以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。

    Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,例如只定义在函数中,就是局部变量,外部就不能访问。

    其它的代码块(如 if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这些语句内定义的变量,外部也可以访问。

    全局变量与局部变量

    total = 0    #全局变量
    def sum(arg1,arg2):
    total = arg1 + arg2 #total在这里是局部变量
    print("函数内是局部变量: ",total)
    return total

    sum(10,20) #调用sum函数
    print("函数外是全局变量: ",total)

    global 和 nonlocal关键字

    #内部作用域想要修改外边作用域的变量,需要用到global和nonlocal关键字
    num = 1
    def fun1():
    global num #用global关键字声明
    print(num)
    num = 123
    print(num)
    fun1()
    print(num)

    def outer():
    num = 10
    def inner():
    nonlocal num
    num = 100
    print(num)
    inner()
    print(num)
    outer()
    若长生难求以命为注 方冥冥如悟因果殊途 --《长生》
  • 相关阅读:
    【转】【矩阵】坐标的矩阵变换
    cocos2d-x聊天气泡
    lua自用的函数收集
    lua错误收集
    cocos2d-x中CCEditbox导出到lua
    love2d杂记9--光照效果
    (转)love2d有用的辅助库--gamework
    XPath语法 在C#中使用XPath示例
    WCF的CommunicationObjectFaultedException异常问题
    WCF绑定(Binding)
  • 原文地址:https://www.cnblogs.com/hc1hr2/p/10234755.html
Copyright © 2020-2023  润新知