17 名称空间和作用域

1、名称空间和作用域名称空间作用域2.按照名字作用范围的不同可以将三个名称空间划分为两个区域:局部作用域:位于局部名称空间中的名字属于局部范围。在局部作用域查找名字时,起始位置是局部作用域,所以先查找局部名称空间,没有找到,再去全局作用域查找:先查找全局名称空间,没有找到,再查找内置名称空间,最后都没有找到就会抛出异常

以下为知识DOC为大家进行整理的相关内容,希望对大家有所帮助!

本文对应的视频讲解如下:

1、名称空间和作用域

一 名称空间

名称空间即存放名字与对象映射/绑定关系的地方。对于x=3,会申请内存空间存放对象3,然后将名字x与3的绑定关系存放于名称空间中,del x表示清除该绑定关系。

​ 在程序执行期间最多会存在三种名称空间

qq空间情侣名称_空间相册名称_空间名称

1.1 内建名称空间

伴随解释器的启动/关闭而产生/回收,因而是第一个被加载的名称空间空间名称,用来存放一些内置的名字,比如内建函数名

>>> max<built-in function max> #built-in内建

空间相册名称_空间名称_qq空间情侣名称

1.2 全局名称空间

伴随文件的开始执行/执行完毕而产生/回收,是第二个被加载的名称空间,文件执行过程中产生的名字都会存放于该名称空间中,如下名字

import sys #模块名sysx=1 #变量名xif x == 1:

y=2 #变量名y def foo(x): #函数名foo y=1 def bar(): pass Class Bar: #类名Bar pass

空间相册名称_qq空间情侣名称_空间名称

1.3 局部名称空间

伴随函数的调用/结束而临时产生/回收,函数的形参、函数内定义的名字都会被存放于该名称空间中

def foo(x):    y=3 #调用函数时,才会执行函数代码,名字x和y都存放于该函数的局部名称空间中

名称空间的加载顺序是:内置名称空间->全局名称空间->局部名称空间,而查找一个名字,必须从三个名称空间之一找到,查找顺序为:局部名称空间->全局名称空间->内置名称空间。

qq空间情侣名称_空间名称_空间相册名称

qq空间情侣名称_空间名称_空间相册名称

二 作用域2.1 全局作用域与局部作用域

按照名字作用范围的不同可以将三个名称空间划分为两个区域:

全局作用域:位于全局名称空间、内建名称空间中的名字属于全局范围,该范围内的名字全局存活(除非被删除,否则在整个文件执行过程中存活)、全局有效(在任意位置都可以使用);

局部作用域:位于局部名称空间中的名字属于局部范围。该范围内的名字临时存活(即在函数调用时临时生成,函数调用结束后就释放)、局部有效(只能在函数内使用)。

空间相册名称_qq空间情侣名称_空间名称

2.2 作用域与名字查找的优先级

​ 在局部作用域查找名字时,起始位置是局部作用域,所以先查找局部名称空间空间名称,没有找到,再去全局作用域查找:先查找全局名称空间,没有找到,再查找内置名称空间,最后都没有找到就会抛出异常

x=100 #全局作用域的名字xdef foo():    x=300 #局部作用域的名字x    print(x) #在局部找xfoo()#结果为300

在全局作用域查找名字时,起始位置便是全局作用域,所以先查找全局名称空间,没有找到,再查找内置名称空间,最后都没有找到就会抛出异常

x=100def foo():    x=300 #在函数调用时产生局部作用域的名字x

foo() print(x) #在全局找x,结果为100

提示:可以调用内建函数()和()来分别查看局部作用域和全局作用域的名字,查看的结果都是字典格式。在全局作用域查看到的()的结果等于()

空间相册名称_qq空间情侣名称_空间名称

支持函数的嵌套定义,在内嵌的函数内查找名字时,会优先查找自己局部作用域的名字空间名称,然后由内而外一层层查找外部嵌套函数定义的作用域,没有找到,则查找全局作用域

x=1def outer():    x=2    def inner(): # 函数名inner属于outer这一层作用域的名字        x=3        print('inner x:%s' %x)    inner()    print('outer x:%s' %x)outer() 

#结果为 inner x:3 outer x:2

在函数内,无论嵌套多少层,都可以查看到全局作用域的名字,若要在函数内修改全局名称空间中名字的值,当值为不可变类型时,则需要用到关键字

x=1def foo():    global x #声明x为全局名称空间的名字    x=2foo()print(x) #结果为2

当实参的值为可变类型时,函数体内对该值的修改将直接反应到原值,

num_list=[1,2,3]def foo(nums):    nums.append(5)foo(num_list)

空间相册名称_空间名称_qq空间情侣名称

print(num_list) #结果为 [1, 2, 3, 5]

对于嵌套多层的函数,使用关键字可以将名字声明为来自外部嵌套函数定义的作用域(非全局)

def  f1():    x=2    def f2():        nonlocal x        x=3    f2() #调用f2(),修改f1作用域中名字x的值    print(x) #在f1作用域查看xf1()#结果3

x会从当前函数的外层函数开始一层层去查找名字x,若是一直到最外层函数都找不到,则会抛出异常。

qq空间情侣名称_空间相册名称_空间名称

本文地址: https://www.zhishidoc.com/28670.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 859089669@qq.com 举报,一经查实,本站将立刻删除。

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年11月1日 上午2:36
下一篇 2022年11月1日 上午2:37

相关推荐

  • 520情人节朋友圈最火文案

    5月20号是网络情人节,是属于情人们的节日,网络情人节是信息时代的爱情节日,520情人节朋友圈最火文案有哪些你知道吗?一起来看看520情人节朋友圈最火文案,欢迎查阅!520情人节甜蜜的句子520让人心动的表白文案520情人节朋友圈最火文案相关文章:情人节朋友圈走心文案说说(80句)甜甜的情人节朋友圈文案80句参考很甜很暖的情人节文案句子大全情人节让对方看到暖心的句子文案

    2022年10月16日
    10600
  • 英文诗歌短篇励志经典-英语诗歌经典100篇

    咖啡苦,回味无穷;伤痛苦,心里铭记;磨难苦,励志人心;感情苦,更显真心;生活苦,倍加珍惜。苦,让我们感谢生活;苦,让我们看到真心:虽苦犹甜。小编精心收集了短篇励志经典英文诗歌,供大家欣赏学习!短篇励志经典英文诗歌篇1还会带来意想不到的结局。短篇励志经典英文诗歌篇2那就去问期末考试不及格的学生。要想有个美丽花园,这样的事还真是少见,只要想要的东西有价值,就得靠努力去创造。

    投稿 2022年10月25日
    9200
  • 想她的句子感动她|感人情书短句

    感人情书短句感人情书短句1感人情书短句2假如可以的话,我愿意花去生命中的每一分每一秒,陪着你。【感人情书短句】相关文章:情书表白感人句子10-25感人的表白情书句子01-17感人表白短句10-25感人的话短句11-14最感人的表白情书句子12-09情书中感人的表白句子08-03爱情感人短句10-27很感人的爱情短句子08-24

    2022年10月4日
    14700
  • 做好自己的励志句子|形容一个人充满正能量的词语精选150句

    【比较励志的句子】【励志的句子】人生,就是一次次的换乘。【抖音正能量句子】其实生活就是奋斗与收获,人生是短暂的,人生是就应有适宜的目标,人总是要有点精神的,无论做什么总是要有所作为的。【关于励志的话】爱情,有一种形式归结起来就是一个忘字。形容一个人充满正能量的词语精选150句31-157【正能量段子句子】审视,反省,总会有用处的。

    2022年10月10日
    18100
  • 祝女儿17岁生日经典短句|经典生日快乐祝福问候语

    经典生日快乐祝福问候语大全150句【经典生日快乐祝福问候语】相关文章:祝福生日快乐问候语12-07生日快乐祝福问候语(精选40句)09-17生日快乐祝福问候语60句08-31经典温馨生日快乐祝福问候语(精选110句)08-23关于生日快乐祝福问候语30句精选08-16经典生日快乐祝福问候语大全140句08-05妈妈生日快乐祝福问候语80句09-15

    2022年10月10日
    13900

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注