当前位置: 首页 > news >正文

深圳网站建设服务便宜借20万资金办厂

深圳网站建设服务便宜,借20万资金办厂,电商网站建设分析,电子商务微网站制作命名空间是名称与对象之间的关系,可以将命名空间看做是字典,其中的键是名称,值是对象。 命名空间不共享名称。 在命名空间中的名称能将任何python对象作为值,在不同的命名空间中相同的名称可以与不同的对象相关联。但是&#xf…

命名空间是名称与对象之间的关系,可以将命名空间看做是字典,其中的键是名称,值是对象。

命名空间不共享名称。

在命名空间中的名称能将任何python对象作为值,在不同的命名空间中相同的名称可以与不同的对象相关联。但是,如果存在名称解析协议,则多个命名空间可以一起工作来解析名称。也就是说,如果有多个命名空间(总是有的),那么可以定义搜索的顺序,依次在不同的命名空间里来查找某个名称(或确认其不存在于任何认可的命名空间)。在python中,将这一过程定义为作用域。

作用域搜索规则:LEGB

L:局部的(local)

E:封闭的(Enclosing)

G:全局的(Global)

B:内置的(Built-in)

一、局部命名空间

函数内部的命名空间,在调用函数的时候生成,调用结束时消失。当局部命名空间有效时,它是第一个用于检查某个名字存在性的命名空间。如果在局部命名空间内找到该名称,则返回与名字相关联的对象,反之提示出错。

二、全局命名空间

python在模块中维护命名空间,模块是一些python文件--包含函数等对象,并且可以导入其他程序使用。当某个模块被导入之后,该模块同时引入了一个命名空间,其中包含模块中所有的名称和关联的对象,可以通过存储在没个模块中的__dict__来查看这个命名空间,换句话说,字典就是这个模块的命名空间。

如果想要引用给模块中的对象,要使用点符号将名称和模块名称关联,这实际上是要求将对象与该模块中的名称相关联。

当python启动解释器时,它将自动导入两个模块,即模块__main__和__built-ins__。__main__模块是默认的全局模块,所有新对象都存储在其中。可以通过函数globals来访问该命名空间的字典。子啊平python解释器中通过输入用户交互时,globals是有效的命名空间。

1.局部赋值规则

python中有一种称为“本地赋值”的规则非常有趣。如果在函数内的任何地方进行局部赋值,则该赋值只在当前活动的命名空间中创建名称。有时这将产生副作用,举例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

>>> value= 27

>>>def func(param1,param2):

    for key,valin locals().items():

        print (key,val)

    value= value+ 1

>>> func(98765,43210)

param198765

param243210

Traceback (most recent call last):

  File "<pyshell#7>", line1,in <module>

    func(98765,43210)

  File "<pyshell#6>", line4,in func

    value= value+ 1

UnboundLocalError: local variable'value' referenced before assignment

>>>

首先通过赋值在全局命名空间中创建了变量value。也许你会认为,当函数值加1是会先在局部的命名空间中查找变量,无法找到时在全局命名空间中找到该名字。可以并不是这样。

python提出如下假设,如果在函数体内的任何地方对变量赋值,则python将名称添加到局部命名空间中。语句value=value+1对对象value进行赋值。python假设无论在何处发生赋值,value都是函数func局部命名空间的一部分。当python尝试把1跟value相加时,该value名称在局部命名空间中,但它没有关联值,所以python报错。

问题在于python何时决定使value出现在局部命名空间中。实际value出现在局部命名空间中发生在代码运行前,即,在python运行到函数定义之前。由于创建命名空间时,python会检查代码并填充局部命名空间。在python运行那行代码之前,就发现了对value的赋值,并把它添加到局部命名空间中,当函数执行时,python解释器认为value在局部命名空间中但没有值,所以会产生错误。

2.global语句

有一个方法可以解决上面的问题。如果在函数体内,使用global语句将变量声明为全局变量,那么python不会为该变量在命名空间中创建局部名称。

三、内置模块

遵循LEGB搜索规则,如果python不能在局部命名空间中找到某个名称,则会在全局命名空间中继续寻找,它寻找到的将是python的内置名称。

built-in模块和其他模块一样,都具有__dict__属性,这就是模块的命名空间

四、封闭式变量

“封闭式”的作用域规则适应于函数定义函数时,也就是说,在函数体内定义了一个新的函数。这个函数体内的函数是外函数的局部命名空间中的一部分,意味着只有在外函数执行期间才能够运行。完整的LEGB规则是先检查局部命名空间,之后是封闭在局部命名空间中的其他函数,之后是全局命名空间,在最后以内置命名空间结束。

http://www.yayakq.cn/news/677228/

相关文章:

  • 彬县网站wordpress内页404
  • 室外建筑网站义务网站建设
  • 网站可以做2个公司的吗wordpress手机登陆不了
  • 网站建设部署视频大丰网站建设价格
  • 东莞网站建设 手袋厂装修设计费收费标准2022
  • 东莞做网站需要避免这些因素网站模板源代码下载
  • 哪些网站是做免费推广的张家港 网站制作
  • 临汾建设局网站专业做网站服务商
  • flash网站读条怎么做有必要 在线 网页 代理
  • 1688网站建设方案书模板html网页设计怎么写代码
  • 安徽阜阳网站建设公司中信建设有限责任公司 李玲
  • 找兼职做网站建设wordpress 发文章 慢
  • 网易那个自己做游戏的网站是什么原因网站上线要准备什么
  • 云南省网站建设网站建设工程师职责说明书
  • 网站建设的毕业设计选题管理系统上海怎样做网站
  • seo教程网站怎么建设自己的卡盟网站
  • 广州联享网站建设公司怎么样网站建设 义乌
  • 网页设计基础实训云南网站建设快速优化
  • 运城市做网站价格qingdao城乡住房建设厅网站
  • 企业网站功能列表口碑营销的作用
  • 湖南网站seo营销网站建设为什么这么贵
  • 呼伦贝尔市建设局网站微信怎么引流营销呢
  • 发布广东建设工程信息网站品牌营销专家
  • 牛商网网站建设263net企业邮箱
  • 怎么用小旋风网站建设教程南宁网站 制作
  • 网站服务合同范本医药网站怎么做
  • 郴州网站制作设计深圳市住房和建设局红色警示查询
  • 高职学院网站建设方案企业宣传册设计
  • 中国铁路建设行业协会网站怎么管理网站的内容吗
  • 长春网站建设开发谁可以做开码网站