(十五)名称空间与作用域

名称空间和作用域

  1. 名称空间(namespace) 是存放名字与值绑定关系的地方
  2. 分类:
  • 内置名称空间
    存放python解释器内置名字,比如内置函数名:len, max,sum.

创建:随着python解释器的启动而创建

销毁:随着python解释器的关闭而销毁

  • 全局名称空间
    存放文件级别的名称,比如

    x=1
    def f1():
    x=1
    if x==1:

    创建: 文件开始执行时

销毁:文件执行完毕时

  • 局部名称空间
    存放函数内的名字,需要强调的是函数的参数也属于局部的

创建:函数执行时才临时创建
销毁:函数执行完毕则立即销毁。

def f1()
    x=1
f1()
  1. 名称空间的加载顺序

内置名称空间--》全局名称空间--》局部名称空间

  1. 名称空间的查找名字顺序

局部名称空间--》全局名称空间--》内置名称空间

按照顺序依次注释掉len,看实验效果。


len=10                      5.
def f1():
    len=100                 3.
    def f2():
        len=1000            2.
        def f3():
            len=10000       1.
            print(len)
        f3()
    f2()
len=1111111111              4
f1()
  1. 名字的查找关系在函数定义阶段
  2. global只能改全局的
    nolocal 会从当前层的外一层开始查找,一直找到最外层的函数

原文地址:https://www.cnblogs.com/morron/p/9048930.html

时间: 2024-11-06 07:16:39

(十五)名称空间与作用域的相关文章

python学习第十天,名称空间与作用域,函数的嵌套,global 和 nonlocal

名称空间: 内置名称空间: 在打开pytharm是加载 全局名称空间: 在运行py文件是加载 局部名称空间(临时名称空间) :在py文件中调用时加载 def func(): ----->函数定义 pass ------->函数体 func()------------->函数调用 函数定义时:内存中只储存与函数名的对应关系,函数体的内容不储存 函数调用时:才执行函数体的内容,创建临时空间,随着函数执行结束,内存中的临时名称空间里面的内容也清空 作用域: 全局作用域:内置名称空间里的内容+全

python学习笔记第五节(函数,名称空间,作用域)

python2中 默认存为unicode需要再字符串前加u 循环打印每一行 循环打印整个文件内容方式二下面这种同一时间取一行 先定义后执行 函数定义的时候,只检测语法错误,不执行 函数返回值,默认是元组模式return 只能返回一次 形参与实参 形参就是变量名实参就是值 打破顺序限制 经常变化的值用位置形参,值通常不变的用默认参数.默认参数通常定义成不可变类型.默认参数只在定义时被赋值一次. 可变长参数就是* 关键字参数(关键字参数指的是实参当中指定y=2,z=3等等) *等同于位置参数 函数内

函数对象,函数的嵌套,名称空间与作用域,闭包,装饰器,迭代器,内置函数

一,函数对象 函数对象:函数是第一类对象,即函数可以当做数据传递 1,可以被引用 2,可以做参数的传递 3,返回值可以是函数 4,可以当作容器类型的元素 二,函数嵌套 1,函数的嵌套调用 2,函数的嵌套定义 三,名称空间与作用域 名称空间:存放名字的地方叫名称空间,存放这些值与名字的绑定关系 查看内置名称的两种方法: 三种名称空间 1,内置名称空间:随着python解释器的启动而产生 2,全局名称空间:文件的执行会产生全局名称空间,指的是文件级别定义的名字都会放入该空间 3,局部名称空间:调用函

Day19_名称空间和作用域_函数的嵌套_函数第一类对象的使用_闭包函数

一. 上节课复习 为何要使用函数 解决代码重用问题 统一维护 程序的组织结构清晰,可读性强 定义函数 !!!先定义后使用 def funcname(arg1,arg2,....) #funcname = 函数体 '''描述信息''' 函数体 return value 定义无参函数 定义有参函数 定义空函数 调用函数 语句形式:foo() 表达式形式:foo(1,2) 函数调用作为另外一个函数的参数:print(foo(1,2)) 函数返回值 不写return--->None return 一个值

函数对象、函数嵌套、名称空间与作用域、装饰器

一 函数对象 1.函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 2.利用该特性,优雅的取代多分支的if def foo(): print('foo') def bar(): print('bar') dic={ 'foo':foo, 'bar':bar, } while True: choice=input('>>: ').strip() if choice in dic: dic[choice]()

python基础之====函数对象、函数嵌套、名称空间与作用域、装饰器

阅读目录 一 函数对象 二 函数嵌套 三 名称空间与作用域 四 闭包函数 五 装饰器 六 练习题 一 函数对象 一 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 二 利用该特性,优雅的取代多分支的if def foo(): print('foo') def bar(): print('bar') dic={ 'foo':foo, 'bar':bar, } while True: choice=input(

函数对象、函数嵌套、名称空间与作用域

 一. 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 二. 利用该特性,优雅的取代多分支的if def foo(): print('foo') def bar(): print('bar') dic={ 'foo':foo, 'bar':bar, } while True: choice=input('>>: ').strip() if choice in dic: dic[choice]() 三. 函

python基础(3):函数对象、函数嵌套、名称空间与作用域、装饰器

函数对象 函数嵌套 名称空间与作用域 闭包函数 装饰器 练习 一 函数对象 #1 可以被引用 def max(x, y): return x if x > y else y func = max print(func(1, 2)) #2 可以当作参数传递 def max(x, y): return x if x > y else y def max_1(x, func): return func(x, 1) print(max_1(2, max)) #3 返回值可以是函数 #4 可以当作容器类

命名关键字参数,函数对象,嵌套,名称空间与作用域,闭包

一.命名关键字参数 对于关键字参数,函数的调用者可以传入任意不受限制的关键字参数  .至于到底传入了哪些,就需要在函数内部通过kw检查. 仍以person()函数为例,我们希望检查是否有city和job参数: def person(name, age, **kw): if 'city' in kw: # 有city参数 pass if 'job' in kw: # 有job参数 pass print('name:', name, 'age:', age, 'other:', kw) 但是调用者仍