zoukankan      html  css  js  c++  java
  • 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()
    若长生难求以命为注 方冥冥如悟因果殊途 --《长生》
  • 相关阅读:
    Java进阶之并发初探
    Java进阶之HashMap剖析
    Java进阶之反射
    Linux常用命令
    海量数据处理算法与面试题
    一些刷题时总结的重要知识点
    一些Java刷题时的小知识点
    九章算法知识点与题目总结(不定时更新...)
    c++设计模式之状态模式
    c++设计模式之抽象工厂模式
  • 原文地址:https://www.cnblogs.com/hc1hr2/p/10234755.html
Copyright © 2011-2022 走看看