首页 > 编程语言 >python基础之名称空间

python基础之名称空间

时间:2022-10-10 19:12:42浏览次数:45  
标签:python money 名称 空间 全局 变量名 def

python基础之名称空间

目录

名称空间

1.名称空间分类


# 引入概念的例子
name = 'jason'
1 在内存空间内申请一块地方 存放'jason'
2 将'jason'绑定一个变量名name
3 后续通过变量名name就可以访问到'jason'所在的内存地址
del name表示清除该绑定关系

名称空间:用来存储变量名与数据值绑定关系的地方(我们也可以简单理解为就是存储变量名的地方)del name
变量名(name)则是存放在名称空间

1.内置名称空间 # py解释器中的名字

	解释器运行自动产生,里面包含了很多名字
	系统自带的空间,已经提前准备好了很多关键字和变量名
  	#如: len print
<built-in function len> #built-in内建

2.全局名称空间 # 运行py文件产生的空间
	py文件运行产生,里面存放文件级别的名字()
  	模块名、变量名、函数名、类名
    
 # 如 
import sys #模块名sys
 
x=1 #变量名x
 
if x == 1:
    y=2 #变量名y
 
def foo(x): #函数名foo
    y=1
    def bar():
        pass
 
Class Bar: #类名Bar
	pass    
  
3.局部名称空间 # 运行函数时产生的空间
	函数体代码运行、类体代码 产生的空间 

2.名称空间存活周期及作用范围(域)

名称空间的加载顺序是:
 	内置名称空间->全局名称空间->局部名称空间

1.存活周期
    内置名称空间
  	python解释器启动则创建,关闭则销毁
    全局名称空间
    	py文件执行则创建,运行结束则销毁
    局部名称空间
    	函数体代码、(类体代码)运行则创建,函数体代码结束则销毁
 2.作用域
    内置名称空间
  	解释器级别的全局有效
    全局名称空间
    	py文件级别的全局有效
    局部名称空间
    	函数体代码内有效

3.名字的查找顺序

# 大前提: 涉及到名字的查找,一定要搞明白自己在哪个空间
查找顺序:
    局部名称空间->全局名称空间->内置名称空间	
  
-> 先在各个空间查找这个名字
  1当我们在局部名称空间中的时候
    局部名称空间>>> 全局名称空间>>> 内置名称空间
  2当我们在全局名称空间中的时候
    全局名称空间>>> 内置名称空间

# 其实名字的查找顺序是可以打破的    
image-20221010184030445
  • 查找顺序的案例
1.相互独立的的局部名称空间默认不能相互访问
def func1():
    name = 'jason'
    print(age)
    
def func2():
    age = 12
    print(name)    

相互独立的的局部名称空间默认不能相互访问

image-20221010172521230
2.局部名称空间嵌套  
		先从自己的局部名称空间查找,然后由内而外依次查找
  
# 举例:
x = 'tes居然输了'
def func1():
    x = 1
    def func2():
        x = 2
        def func3():
            print(x)
            x = 3
        func3()
    func2()
func1()

案例中代码运行的顺序
image-20221010183013656

image-20221010183235705

嵌套函数内部的逻辑错误

作业

1.判断下列money的值是多少并说明理由 思考如何修改而不是新增绑定关系
money = 100
def index():
    money = 666	
print(money)
  # 值为100,因为print 打印的变量名money 在当前的全局空间名称空间能找到,如果找不到接着是去内置名称空间中寻找,而不是在函数内的局部名称空间
   

money = 100
def func1():
    money = 666
    def func2():
        money = 888
    func2()
print(money)
  # 值为100,因为print 打印的变量名money 在当前的全局空间名称空间中能找到  money=100

标签:python,money,名称,空间,全局,变量名,def
From: https://www.cnblogs.com/DuoDuosg/p/16776846.html

相关文章

  • 函数参数和名称空间
    目录一.函数参数1.位置参数2.默认参数3.可变长形参4.可变长实参5.命名关键字参数(只做了解)二.名称空间1.什么是名称空间1.内置名称空间2.全局名称空间3.局部名称空间2.名......
  • 函数的参数、名称空间知识
    昨日内容回顾硬盘操作数据的原理数据在计算机硬盘上保存时是一次性的,数据保存后即不可能再对这段数据内部进行修改。计算机数据的删除实质是对保存数据部分硬盘状态的......
  • 函数参数、名称空间与作用域、名字的查找顺序
    函数参数、名称空间与作用域、名字的查找顺序目录函数参数、名称空间与作用域、名字的查找顺序一、函数参数1.形参与实参2.位置参数3.关键字参数4.默认参数5.可变长形参6.......
  • 函数参数和名称空间
    函数参数之位置参数"""补充:当子代码只有一行并且很简单的情况下可以直接在冒号后编写不用换行"""位置形参 函数定义阶段括号内从左往右依次填写的变量名 deffunc......
  • Review-python-note2
    Note2-bodyandstructure标签(空格分隔):pythonLearningtechniquesAssumingyouareplaying<<callofduty>>andneedgothroughonedifficultscenewhere......
  • Python3 函数
    函数特点:完成某一个特定的功能代码重用保持一致性,易维护,可扩展性一函数定义数学函数python函数定义f(x)=2x+1deff(x):               #函数定义,f......
  • python(函数参数与名称空间)
    今日内容概要函数参数名称空间与作用域位置参数,关键字参数,默认参数,可变长参数,命名关键字参数名字的查找顺序今日内容详细函数参数之位置参数​ 在调用函......
  • python接口自动化-pytest常用命令
    1.pytest拥有丰富的入参选项,常用参数如下:-m:只运行被标记的测试用例;-k:只运行与给定字符串表达式匹配的类名下的测试用例;-s:显示标准输出,例如print()的语句;-v:显示详细报告......
  • python函数2
    今日内容概要函数参数名称空间与作用域名称的查找顺序函数名的多种用法今日内容详细函数参数值位置参数"""补充:当子代码只有一行并且很简单的情况下可以直......
  • 软件整理:网络空间搜索引擎
    1、钟馗之眼https://www.zoomeye.org/2、SHODAN撒旦https://www.shodan.io/3、FOFAhttps://fofa.info/toLogin4、Censyshttps://censys.io/ipv45、鹰图平台https://hunter.q......