一:名称空间

1:什么是名称空间:

  名称空间即:储存名字与值的内存地址关联关系的空间

2.名称空间的分类:

  内置名称空间:存储器自带的一些名称与值的对应关系,如:print,len,max等;

    生命周期为:在python解释器启动时创建,在解释器关闭时销毁

  全局名称空间:除了内置的,函数内的都是在全局名称空间中

    生命周期为:在执行文件时,创建全局名称空间,所有文件中的代码全部执行完毕后,销毁名称空间(即解释器关闭时)

  局部名称空间:只要在函数内的名称空间就是局部的

    生命周期为:调用函数时创建,函数执行完毕时就销毁

3.名称空间的加载顺序:内置的-->全局的-->局部的

名称空间的查找顺序:局部名称空间-->全局名称空间-->内置名称空间(基于当前位置向上层空间查找)

二. 作用域

  域:区域,范围的意思

    全局名称空间和内置名称空间在使用上没有什么区别,而局部的名称空间只能在局部使用

  空间的范围:global 表示全局范围  就是所谓的全局作用域(globals 查看全局作用域的内容)

        local 表示局部作用域

  总结:1.查找名称的顺序是基于当前位置向上层空间查找

     2.名称空间的嵌套关系是在函数定义阶段就固定死的,与调用位置无关

# age=18
# def func2():
# # 明确声明使用全局的变量age(修改a的值)
# global age
# age=19
# func2()
# print(age)

global 实例

运行结果为: 19

a = 1
def func3():
a = 10
def inner():
# 明确声明 要使用上一层的 a 如果上一层没有,则使用上上一层,但是不能使用全局中的a
nonlocal a
a = 100
print(a)
inner()
print('这是func3中的a',a)
func3()

nonlocal 实例

运行结果为: 这是func3中的a 100

  

    

    

python 函数的名称空间及作用域的更多相关文章

  1. Python 函数对象-函数嵌套-名称空间与作用域-闭包函数

    今日内容: 1. 函数对象 函数是第一类对象: 指的是函数名指向的值可以被当中数据去使用 1.可以被引用 2.可以当做参数传给另一个函数 3.可以当做一个函数的返回值 4.可以当做容器类型的元素 2. ...

  2. day_12函数默认值,数据类型的补充,函数对象名称空间与作用域,函数的嵌套定义

    复习, 昨天讲了字符串的比较,按照从左往右比较每一个字符,通过字符对应的ASCII码进行比较 函数的参数,‘ 实参与形参 形参:在函数定义时()中出现的参数 实参,在函数调用时()中出现的参数 实参的 ...

  3. python基础:名称空间与作用域

    Python的变量定义后都有自己的作用域,每个作用域内都有名字空间.名称空间就是变量名称与对象的关联关系.Python中使用变量名引用对象,需要使用该变量时,就在命名空间中进行搜索,获取对应的对象.从 ...

  4. Python—函数的名称空间

    名称空间 又名name space, 顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的地方 名称空间共3种, ...

  5. day12 函数对象,名称空间与作用域

    """ 今日内容: 1.函数参数传值细节 2.三元表达式 3.列表及字典推导式 4.函数对象 5.名称空间与作用域 6.函数的嵌套定义初识 ""&qu ...

  6. PYTHON-函数对象,嵌套,名称空间与作用域,闭包函数

    一 函数是第一类对象,即函数可以当作数据传递 1 可以被引用 2 可以当作参数传递 3 返回值可以是函数 3 可以当作容器类型的元素 def foo(): return len f = foo pri ...

  7. python全栈开发-Day9 函数对象、函数嵌套、名称空间与作用域

    一 .函数对象 一 .函数是第一类对象,即函数可以当作数据传递 可以被引用 可以当作参数传递 返回值可以是函数 可以当作容器类型的元素 二. 利用该特性,优雅的取代多分支的if def foo(): ...

  8. python第十二天, 三元表达式, 函数对象,名称空间与作用域,函数的嵌套定义

    复习 1. 字符串的比较: 2. 函数的参数:形参与实参 3. 实参的分类:位置实参与关键字实参 4. 形参分类: 1.无值位置形参 2.有值位置形参 3.可变长位置形参 4.有无值关键字形参 5.可 ...

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

    一 函数对象 一 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 二 利用该特性,优雅的取代多分支的if de ...

随机推荐

  1. 本地Debug Asp.net MVC 无法加载css与js

    运行一个从网上download的一个MVC项目,运行的时候无法显示样式,js也报错. 检查路径也没有问题,后来在配置中把其中的一段配置去掉 <staticContent> <!-- ...

  2. IDEA 类图功能使用方法

    1. Ctrl+Shift+Alt+U显示类图,(可以选中代码中类,再按快捷键,直接进入此类的类图) 2. 在类图中,选中某类右击显示Show Implementations,弹出子类的选择框. 按S ...

  3. es6学习日记2

    1.字符串扩展 字符串的遍历器接口 for (let codePoint of 'foo') { console.log(codePoint) } // "f" // " ...

  4. spring redis 注解实现缓存机制

    1.xml配置 <bean id="poolConfigTax" class="redis.clients.jedis.JedisPoolConfig"& ...

  5. Java_集合_ArrayLish Comparator比较排序 小笔记

    import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; class Teacher ...

  6. centos7忘记密码处理办法

    centos7忘记密码处理办法 此界面按e进入grub编辑界面 进入grub编辑界面.把linux16这行的ro修改为rw init=/sysroot/bin/sh. 按ctrl+x进入单用户模式 登 ...

  7. ubuntu18.04安装openresty

    ubuntu18.04使用openresty官方APT源安装openresty 添加openresty的 APT 仓库,这样就可以便于未来安装或更新软件包(通过 apt-get update 命令). ...

  8. 1.1.15 word调整文字与下划线之间的间距

    先请按CTRL+U快捷键,或点击“下划线”按钮,然后输入一个空格,再输入文字“下划线间距”,在文字的尾部再添加一个空格.选中文字内容(注意不要选中首尾的空格),单击菜单“格式”→“字体”,在“字体”设 ...

  9. [JAVA]JAVA多线程实现方法之——实现Runnable接口

    public class MultiThread { public static void main(String[] args) { Thread t1 = new Thread(new Threa ...

  10. [转]boost::python开发环境搭建

    转自:http://www.cnblogs.com/gaoxing/p/4317051.html 本来想用mingw编译boost::python模块,网上看了下资料太少,只有使用vs2012 操作环 ...