This article mainly introduces the function scope in Python, which has certain reference value. Now I share it with everyone. Friends in need can refer to it
In Python, a function is an effect area. This article focuses on introducing the function scope in python. Friends who are interested should take a look.
In python, a function is a scope
name = 'xiaoyafei' def change_name(): name = '肖亚飞' print('在change_name里的name:',name) change_name() # 调用函数 print("在外面的name:",name)
The running results are as follows:
The name in change_name: Xiao Yafei
The name outside: xiaoyafei
Let’s try again how to search in the nested function ?
age = 15 def func(): print('第一层age:',age) # 第一层age: 15 def func2(): age = 73 print("func2中的age:",age) # func2中的age: 73 def func3(): age = 84 print("func3中的age:",age) # func3中的age: 84 func3() # 调用func3函数 func2() # 调用func2函数 func()
In the above nested functions, it can be well explained that a function is a scope, so let’s change the code a little now to see the situation?
age = 15 def func(): print('第一层age:',age) # 第一层age: 15 def func2(): print("func2中的age:",age) # func2中的age: 15 # 看到没有,如果当前作用域里没有age变量,那么它就会往上找 def func3(): age = 84 print("func3中的age:",age) # func3中的age: 84 func3() # 调用func3函数 func2() # 调用func2函数 func()
So, at this time Someone said that a lot of nonsense turned out to be local variables and global variables. So I want to ask: In the above nested function, there is no age variable in func2, so how does it find the global variable age = 15? ?
At this point we need to look at the search order of the scope:
Variable scope LEGB
L: locals The name space within the function, including local variables and actual parameters
E: enclosing The name space of the external nested function, that is, the adjacent previous one Layer, for example: if there is no age variable in func2, it will go to func to find this
G: globals global variable
B: Builtins The name space of built-in modules
Ahem, let’s first understand what a name space is?
Name space, also known as name space, as the name implies, is where names are stored. Where, what name is stored? For example, x = 1, 1 is stored in the memory, then where is the variable name x stored? The name space is the place where the binding relationship between the name x and 1 is stored
>>> x = 1 >>> id(1) 1576430608
Name Spaces are divided into the following three types:
locals: is the name space within the function, including local variables and formal parameters
globals: global variables , the name space of the module where the function definition is located
builtins: the name space of the built-in module
The scope of different variables is different because this variable is located Determined by the namespace.
The scope is the scope
Global scope: global survival, global validity
Local scope :Temporary inventory, partially valid
Let us take an example to see
level = 'L0' n = 22 def func(): level = 'L1' n = 33 print(locals()) # {'n': 33, 'level': 'L1'} 在之前说过在python中,一个函数就是一个作用域,这就很完美的体现了 def outer(): n = 44 level = 'L2' print(locals(),n) # {'level': 'L2', 'n': 44} 44 def inner(): level = 'L3' print(locals(),n) # {'level': 'L3', 'n': 44} 44 inner() outer() func()
L --> E --> G -->B rule Search, that is: if it is not found locally, it will be searched locally (such as closures). If it cannot be found, it will be searched globally, and then it will be searched in built-in functions.
Related recommendations:
Introduction to functions in python
The above is the detailed content of Function scope in Python. For more information, please follow other related articles on the PHP Chinese website!