python基础之函数对象,嵌套,名称空间和做用域

函数对象:python

函数是第一类对象的含义是函数能够被看成数据处理函数

函数可用于:对象

         def func():blog

                  print(‘func’)内存

         1.引用  f = func  把内存地址赋值给f作用域

         2.看成参数传给一个函数    def foo(func)class

         3.看成函数的返回值    return func容器

         4.能够看成容器类型的元素                 l =[func,1,2]变量

#函数嵌套的定义:
def f1():
    def f2():
        def f3():
            print('from f3')
        f3()
    f2()

f1()
#函数嵌套调用:
def max(x,y):
    return x if x > y else y

	def max4(a,b,c,d):
    	res1=max(a,b)
    	res2=max(res1,c)
   		res3=max(res2,d)
    	return res3
	print(max4(1,2,3,4))

  

名称空间和做用域引用

1.名称空间

         存放名字和值的绑定关系的地方  (存值的内存地址)

2.名称空间的三大类

         ①内置名称空间:存放python解释器自带的名字

                                   解释器打开生效,关闭失效

         ②全局名称空间:除了内置和局部的就是全局

                                   文件运行时生效,执行完毕失效

         ③局部名称空间:用于存放函数调用期间函数体产生的名字

                                   文件执行中调用某个函数时生效,函数执行完失效

总结:三种名称空间的加载顺序:内置名称空间-全局名称空间-局部名称空间

           名称空间查找顺序:基于当前位置,自下向上找

 

3.做用域

         做用域指的是区域、范围,做用域即做用的范围

         全局做用范围:全局做用域(内置名称空间和全局名称空间)

                  全局有效,全局存活

         局部做用范围:局部做用域(局部名称空间)

                  局部有效,临时存活

 

         做用域关系是在函数定义阶段就固定死了,但凡调用函数都须要跑到定义阶段判断做用域关系

x = 1
def f1():
    print(x)
der f2():
    x = 11
    f1()
f2()

结果为1

  

nonlocal  改局部,函数内往外找,没有就报错

global      改全局,没有也不会报错

在局部改全局可变类型,能够直接改

在局部改全局不可变类型,须要声明global,声明为全局的变量就能够直接修改了

相关文章
相关标签/搜索