码迷,mamicode.com
首页 > 编程语言 > 详细

28、python基础学习-函数作用域

时间:2019-06-02 01:33:19      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:使用外部   基础学习   font   error:   四种   efi   bin   div   函数作用域   

 1 #!/usr/bin/env python
 2 #__author: hlc
 3 #date: 2019/6/1
 4 
 5 # if True :
 6 #     x = 3
 7 # print(x) # 3
 8 
 9 # def f() :
10 #     x = 3
11 # print(x) # NameError: name ‘x‘ is not defined
12 """
13 作用域介绍:python中的作用域分四种情况
14 L:local,局部作用域,即函数中定义的变量;
15 E:enclosing,嵌套的父级函数局部作用域,既包含此函数的上级函数的局部作用域,但不是全局的;
16 G:globa,全局变量,就是模块级别定义的变量;
17 B:built-in,系统固定模块里面的变量,比如,int,bytearray等。
18 搜索变量的优先级顺序依次是:局部作用域》外部作用域》当前模块中的全局》python内置作用域,作用域的优先级是“LEGB”
19 """
20 # x = int(2.9) # built-in
21 #
22 # g_count = 0 # globa
23 #
24 # def outer() :
25 #     o_count = 1 # enclosing
26 #     def inner() :
27 #         i_count = 2 # local
28 #         print(o_count)
29 #     print(i_count) # 找不到
30 #     inner()
31 # outer()
32 #
33 # print(o_count) # 找不到
34 
35 # count = 10
36 # def outer() :
37 #     global count
38 #     print(count)
39 #     count = 5
40 #     print(count)
41 # outer()
42 
43 # count = 0
44 # def outer() :
45 #     count = 10
46 #     def inter() :
47 #         nonlocal count
48 #         print(count)
49 #         count = 5
50 #         print(count)
51 #     inter()
52 #     print(count)
53 # outer()
54 
55 """
56 作用域小结:
57 1、变量的查找的顺序是:LEGB,作用域局部》外部作用域》当前模块中的全局》python内置作用域;
58 2、只有模块、类、函数才能引入新作用域;
59 3、对于一个变量,内部作用域先声明就会覆盖外部环境变量,不声明直接使用,就会使用外部作用域的变量;
60 4、内部作用域要修改外部作用域变量时,全局变量要使用global关键字,嵌套作用域变量要使用nonlocal关键字。nonlocal是python3新增的关键字,有了这个关键字就能完美实现闭包了。
61 """

 

28、python基础学习-函数作用域

标签:使用外部   基础学习   font   error:   四种   efi   bin   div   函数作用域   

原文地址:https://www.cnblogs.com/hlc-123/p/10961428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!