欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python学习第十一天:函数对象,嵌套,名称空间和作用域

程序员文章站 2022-11-30 16:18:00
函数对象: 函数是第一类对象的含义是函数可以被当作数据处理 函数可用于: def func(): print(‘func’) 1.引用 f = func 把内存地址赋值给f 2.当作参数传给一个函数 def foo(func) 3.当作函数的返回值 return func 4.可以当作容器类型的元素 ......

函数对象:

函数是第一类对象的含义是函数可以被当作数据处理

函数可用于:

         def func():

                  print(‘func’)

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

         2.当作参数传给一个函数    def foo(func)

         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,声明为全局的变量就可以直接修改了