千家信息网

python作用域怎么用

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,小编给大家分享一下python作用域怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!作用域变量的作用域决定了在哪一部分
千家信息网最后更新 2024年11月30日python作用域怎么用

小编给大家分享一下python作用域怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

作用域

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

  • L (Local) 局部作用域

  • E (Enclosing) 闭包函数外的函数中

  • G (Global) 全局作用域

  • B (Built-in) 内建作用域

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

x = int(2.9)  # 内建作用域 g_count = 0  # 全局作用域def outer():    o_count = 1  # 闭包函数外的函数中    def inner():        i_count = 2  # 局部作用域

Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,其它的代码块(如 if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这这些语句内定义的变量,外部也可以访问

  • 全局变量和局部变量

    • 定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

    • 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。

  • global 和 nonlocal关键字

    当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。

    • global

      num = 1def fun1():    global num  # 需要使用 global 关键字声明    print(num)    num = 123    print(num)fun1() 以上实例输出结果:1123
    • nonlocal

      如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了。

      def outer():    num = 10    def inner():        nonlocal num  # nonlocal关键字声明        num = 100        print(num)    inner()    print(num)outer() 以上实例输出结果:100100

以上是"python作用域怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0