python如何在非创建全局变量的地方使用全局变量


本文摘自php中文网,作者silencement,侵删。

在Python中,当引用一个变量的时候,对这个变量的搜索是按找本地作用域(Local)、嵌套作用域(Enclosing function locals)、全局作用域(Global)、内置作用域(builtins模块)的顺序来进行的,即所谓的LEGB规则。 即python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量。

然而当在一个函数内部为一个变量赋值时,并不是按照上面所说LEGB规则来首先找到变量,之后为该变量赋值。在Python中,在函数中为一个变量赋值时,有下面这样一条规则:“当在函数中给一个变量名赋值是(而不是在一个表达式中对其进行引用),Python总是创建或改变本地作用域的变量名,除非它已经在那个函数中被声明为全局变量. ”

python中golbal全局变量和nonlocal局部变量

global关键字用来在函数或其他局部作用域中使用全局变量。

1

2

3

4

5

6

7

8

9

gcount = 0   #定义了一个全局变量,(可以省略global关键字)

  

def global_test():

    print (gcount)    #不修改,只是引用全局变量,不使用global关键字

     

def global_counter():

    global gcount   

    gcount +=1       #修改全局变量,需要使用global关键字

    return gcount

输出

1

2

3

nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

def make_counter():

    count = 0     #定义一个局部变量,该局部变量作用范围在make_counter()方法内

    def counter():

        nonlocal count   #在方法counter()中使用外层局部变量 count

        count += 1

        return count

    return counter

        

def make_counter_test():

  mc = make_counter()

  print(mc())

  print(mc())

  print(mc())

  

make_counter_test()

输出

3

以上就是python如何在非创建全局变量的地方使用全局变量的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

安装完Python怎么打开

分享Python snownlp的实例教程

Python中tornado下用户身份认证的实现方法

numpy是什么

Python开发工程师是做什么的

Python如何实现微信企业号文本消息推送功能的示例

Python中“//”表示什么意思

Python模块和包的区别

Python中可变对象和不可变对象详解

selenium之实现自动登录的实例代码

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...