python学习第十一天:函数对象,嵌套,名称空间…

2018-06-23 13:33:17来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

函数对象:

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

函数可用于:

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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Python基础 之 set集合 与 字符串格式化

下一篇:flask框架的教程--虚拟环境的安装[一]