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

网站设计建设做网站优化的公司

网站设计建设,做网站优化的公司,西安企业网站设计制作,网站2019建设目标命名空间是名称与对象之间的关系,可以将命名空间看做是字典,其中的键是名称,值是对象。 命名空间不共享名称。 在命名空间中的名称能将任何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.skylitedrivein.com/news/741.html

相关文章:

  • 网站制作公司承担百度seo查询系统
  • 成都市建设路小学网站app推广活动策划方案
  • 网站成功案例设计网站页面分析
  • lamp环境做网站某网站seo诊断分析和优化方案
  • 阿里云做网站需要环境竞价账户托管的公司有哪些
  • 做网站的知名公司seo收费还是免费
  • 西安网站建设电话咨询seo刷词工具在线
  • 织梦dedecms导航网站源码企业查询信息平台
  • 网站建设网站管理友链交换
  • vs2013做简单的网站搜索引擎推广和优化方案
  • 最新的网站建设软件如何自己做引流推广
  • 如何做网站优化佛山优化网站关键词
  • 左侧伸缩隐藏菜单时尚flash网站商丘网络推广哪家好
  • 多合一建网站发稿网
  • 做网站做seo整站优化外包公司
  • 给公司建立网站吗seo搜索引擎优化是做什么的
  • 合肥哪里做网站it培训机构排行榜
  • 网站建设属于前端还是后台app推广公司怎么对接业务
  • 桂林旅游网站建设seo点击排名工具有用吗
  • 酒店网站建设流程疫情最新情况 最新消息 全国
  • 济南企业网站建设公司重庆seo入门教程
  • 淘宝客手机网站开发腾讯3大外包公司
  • 网站制作公司加盟seo入门培训学多久
  • 做外贸公司 网站西安网约车
  • 忘了网站链接怎么做江西seo
  • 一个空间多个php网站今日重大新闻头条财经
  • 网站开发问卷调查如何免费自己创建网站
  • 做渔船的网站自建网站
  • 低价格制作网站自己怎么给网站做优化排名
  • 怎么给公司做网站路由优化大师