函数对象和名称空间

函数

函数时第一类对象

1.函数名可以被引用

 

2.函数名可当作参数去使用

 

3.函数名可以当作返回值使用

传参时,如果无特殊需求,一定不能加(),否则就当场执行

def index():

  print(‘from index’)

def func(a):

  return a

  a=func(index) a() 

执行结果:

  from index

4.函数名可以被当作容器类型的元素

def func():
    print('from func')


l1 = [1, '2', func, func()]
f = l1[2]
print(f)


from func
<function func at 0x00000237E4132EA0>

5.函数的嵌套调用

6.函数的嵌套定义

 

名称空间

存放名字的空间

分类:

  要拿到一个变量值,先进入名称空间,拿到变量名,得到与他绑定的关系

1.内置名称空间

  python提前给的定义完的名字,存在于内置空间

2.全局名称空间

  存放于文件级别的名称就是全局名称空间

if,while,for内部定义的名字执行后,都存放于全局名称空间

3.局部名称空间

  def index():

    a =1

    print(a)

  index ()

  print(a)报错

生命周期:

1.内置名称空间

  在python解释器启动时生效,关闭python解释器的时候失效

2.全局名称空间

  当你启动当前这个py文件时侯就开始生效,当前页代码执行结束之后失效

3.局部名称空间

当你调用当前函数时生效,函数代码执行结束时就失效

名称空间查找顺序:

  局部:局部》全局》内置

  全局:全局》内置  #内置找不到报错

  函数内部使用名字,在定义阶段已经规定死了,与你位置无关

 

作用域:

  分类:

    全局作用域  全局可以调用的名字,内置名称空间+全局名称空间就存在于全局作用域

    局部作用域  局部可以调用局部名称空间

globa 声明全局变量

nonlocal  在局部中声明局部变量

可变类型可以在局部修改上层外部变量的值

 

posted @ 2019-11-11 15:58  godlover  阅读(164)  评论(0)    收藏  举报