Day12
总结
名称空间
# 名称空间
	名称空间是存放变量名与变量值绑定关系
# 名称空间分类
1.内置名称空间,python自带的,启动时就有的
	print() input()
2.全局名称空间,调用的时候才会产生全局名称空间
3.局部名称空间,函数体内定义的变量
    var1 = 1  # var1 是全局名称
    def func():    
        var2 = 2  # var2 是局部名称
		
# 存活周期
1.内置名称空间
	python解释器运行时产生,关闭时销毁
2.全局名称空间
	py文件运行时产生,关闭时结束
3.局部名称空间
	函数体代码运行时产生,关闭时销毁
    
名字查找顺序
# 在查找名字是要知道自己在哪个空间
1.若在局部名称空间
	局部空间->全局名称空间->内置名称空间
2.若在全局名称空间
	全局名称空间->内置名称空间
def index():
    len = '局部名称空间中的len'
    print(len)
index()
print(len)  # 先打印局部名称空间中的len  再打印全局名称空间中的len
# 如果函数没有被调用 那么不要去管函数体代码有多复杂 先跳过
# 局部名称空间之间如果不是嵌套关系 那么它们互不干涉
:
作用域
# 作用域
	作用域就是名称空间能作用的范围
    
   ''' 
        内置名称空间:任意阶段均可使用(全局有效)
        全局名称空间:任意阶段均可使用(全局有效)
        局部名称空间:一般只在局部名称空间有效(局部有效)
        # 并不绝对,可以打破
    '''
    
 
# gloabl关键字:局部修改全局不可变类型
	var = 1
    def index():
        global var  # 通过局部名称空间修改全局的var
        var = 2
    index()
    print(var)  # 2
# nolocal关键字:局部名称空间嵌套写,内层可以通过nolocal修改外层
	def func():
        num = 10
        def func1():
            nonlocal num   # nonlocal关键字声明
            num = 100
            print(num)
        func1()
        print(num)
    func()
    
'''
	修改全局的不可变类型,需要提前加关键字申明,修改的可变类型,不需要加关键字申明
'''
函数名多种用法
1.函数名用作变量名赋值
	def func():
    print('from function func')
    res = func
    print(res)
    res()  # from function func
2.函数名当做函数的实参
	def func():
    	print('from function func')
    def func1(a):
        print('from func1')
        print(a)
        a()
    func1(func)	 # <function func at 0x00000281B5B91EA0>
3.函数名用作函数的返回值
	def func():
        print('from function func')
        return func1()
    def func1():
        print('from func1')
    func()  # from function func  \n  from func1
4.函数名用作容器类型的元素
	# 容器类型:内部可以存档多个元素的数据类型
    def func():
        print('from function func')
    l1 = [1, 2, 3, 4, func()]
    print(l1)
    l1[-1]  # from function func  \n  [1, 2, 3, 4, None]
函数的嵌套
# 函数的嵌套调用
	def func():
        func1()
        print('12345')
    def func1():
        print('98765') 
	func()  # 98765  \n  12345
# 函数的定义
	def func(cmd):
        def login():
            print('登录')
        def register():
            print('注册')
        if cmd == '1':
            login()
        elif cmd == '2':
            register()
        else:
            print('对不起做不到')
    cmd = input('请输入功能编号>>>:')
    func(cmd)
今天学了好多理论,要理解的有点多
:

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号