Python全栈之路----函数进阶----名称空间

又名name space,顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的=地方

名称空间共3种,分别如下

  • locals:是函数内的名称空间,包括局部变量和形参
  • globals:全局变量,函数定义所在模块的名称空间
  • builtins:内置模块的名称空间(Python解释器自带的内置模块)
>>> x = 1
>>> locals() #处在该区域,打印该区域所有变量
{‘__name__‘: ‘__main__‘, ‘__doc__‘: None, ‘__package__‘: None, ‘__loader__‘: <class ‘_frozen_importlib.BuiltinImporter‘>, ‘__spec__‘: None, ‘__annotations__‘: {}, ‘__builtins__‘: <module ‘builtins‘ (built-in)>, ‘x‘: 1}
>>> globals()
{‘__name__‘: ‘__main__‘, ‘__doc__‘: None, ‘__package__‘: None, ‘__loader__‘: <class ‘_frozen_importlib.BuiltinImporter‘>, ‘__spec__‘: None, ‘__annotations__‘: {}, ‘__builtins__‘: <module ‘builtins‘ (built-in)>, ‘x‘: 1}
>>> _builtins_
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name ‘_builtins_‘ is not defined
>>> dir(_builtins_)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name ‘_builtins_‘ is not defined

不同变量的作用域不同就是由这个变量所在的命名空间决定的。

作用域即范围

  • 全局范围:全局存活,全局有效
  • 局部范围:拘捕存活,局部有效

查看作用域方法:locals()  globals()

原文地址:https://www.cnblogs.com/Moxiaoyu666/p/10386197.html

时间: 2024-10-29 04:59:28

Python全栈之路----函数进阶----名称空间的相关文章

Python全栈之路----函数进阶----作用域的查找空间

n = 10 def func(): n = 20 print('func:',n) def func2(): n = 30 print('func2:',n) def func3(): print('func3:',n) func3() func2() func() 问题:在func3()里打印的n的值是多少?   30 LEGB代表名字查找顺序:locals -> enclosing function -> globals -> _builtins_ locals 是函数内的名字空间

Python全栈之路----函数进阶----闭包

关于闭包,即函数定义和函数表达式位于另一个函数的函数体内(嵌套函数).而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量.参数.当其中一个这样的内部函数在包含它们之外被调用时,就会形成闭包.也就是说,内部函数会在外部函数返回后被执行.而当这个内部函数执行时,它仍然必须访问其外部函数的局部变量.参数以及其他内部函数.这些局部变量.参数和函数声明(最初时)的值是外部函数的返回时的值,但也会受到内部函数的影响. def func(): n = 10 def func2(): print(

Python全栈之路----函数----返回值

函数外部的代码想要获取函数的执行结果,就可以在函数里用return语句,把结果返回. def stu_register(name,age,course='PY',country='CN'): print('----注册学生信息----') print('姓名:',name) print('年龄:',age) print('国籍:',country) print('课程:',course) if age > 22: return False else: return True registriat

Python全栈__动态参数、名称空间、作用域、作用域链、加载顺序、函数的嵌套、global、nonlocal

1.动态参数 当实参数量与形参数量相等时,参数传递正常. def func1(a, b, c): pass func1(1, 2, 3) 当实参数量与形参数量不相等时,则会报错. def func1(a, b, c): pass func1(1, 2, 3, 4, 5, 6, 6) 用户传入到函数中的实参数量不确定时,或者为了以后扩展,此时要用到动态参数 *args  **kwargs(万能参数). 顺序: 位置参数,*args,默认参数,**kwargs 1.*args *args是接收的是所

10、python全栈之路-面向对象进阶

十.面向对象进阶 http://www.cnblogs.com/Eva-J/articles/7351812.html 1.isinstance和issubclass 1.1 isinstance(obj,cls) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1.2 issubclass(sub, super) issubclass(sub, super)检查sub类是否是 super 类的派生类 2.反射 #把一个字符串数据类型的变量变成一个真实存在在这个程序

Python全栈之路----函数

基本介绍 定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可. 编程中的函数在英文中有很多不同的叫法:在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java中叫做method. 特性: (1)减少重复代码 (2)使程序变的可扩展 (3)使程序变得易维护 原文地址:https://www.cnblogs.com/Moxiaoyu666/p/1

Python全栈之路----函数----参数

参数可以让你的函数更灵活,不只能做死的动作,还可以根据调用时传参的不同决定函数内部的执行流程. 形参:只有在被调用时才分配内存单元,在调用结束时,即可释放所分配的内存单元.因此形参只在函数内部有效.函数调用结束返回主调用函数后则不能再使用该形参变量. 实参:可以是常量.变量.表达式.函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参.因此应预先用赋值.输入等办法使参数获得确定值. 原文地址:https://www.cnblogs.com/Moxiaoy

Python全栈之路----函数----局部变量

全局变量是定义在函数外部以及代码的变量,全局能用. 局部变量就是定义在函数里的变量,只能在局部生效. 在函数内部,可以引用全局变量. 如果全局和局部都有一个名字相同的变量,在函数内会优先调用函数内的局部变量. 程序运行结束,所有的局部变量都会被清空. name = 'black girl' def change_name(): name = '黑色的姑娘' #局部变量 print('在',name,'里面...') change_name() print(name) 在函数内部修改全局变量 na

Python全栈之路----函数----嵌套函数

函数内部可以再次定义函数 要执行函数,必须调用 def func1(): print('alex') def func2(): print('eric') func2() #如果没有这一句,不会print('eric'),只print('alex') func1() 下面在两个不同位置对age赋值,输入结果一致,均为  73 age = 19 def func1(): age = 73 def func2(): print(age) # age = 73? func2() func1() 下面,