• 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()
    若长生难求以命为注 方冥冥如悟因果殊途 --《长生》
  • 相关阅读:
    回顾Oracle几个用到的基本语句
    JDBC连接数据库中CallableStatement执行有参存储过程及注解其他
    JDBC连接数据库步骤及Class.forName()(转)
    Web开发的编码解决中文乱码
    Filter,Listener(转)
    web.xml 中的listener、 filter、servlet 加载顺序及其详解(转)
    算法训练 比赛安排
    算法训练 字符串编辑
    算法训练 最大值与最小值的计算
    算法训练 判定数字
  • 原文地址:https://www.cnblogs.com/hc1hr2/p/10234755.html
Copyright © 2020-2023  润新知