Python本地与全局命名空间用法实例

本文实例讲述了Python本地与全局命名空间用法。分享给大家供大家参考。具体如下:

x = 1
def fun(a):
  b=3
  x=4
  def sub(c):
    d=b
    global x
    x = 7
    print ("Nested Function\n=================")
    print locals()
  sub(5)
  print ("\nFunction\n=================")
  print locals()
  print locals()["x"]
  print globals()["x"]
print ("\nGlobals\n=================")
print globals()
fun(2)

///scope.py
Globals
=================
{'x': 1,
 '__file__':
'C:\\books\\python\\CH1\\code\\scope.py',
 'fun': <function fun at 0x008D7570>,
 't': <class '__main__.t'>,
 'time': <module 'time' (built-in)>,. . .}
Nested Function
=================
{'c': 5, 'b': 3, 'd': 3}
Function
=================
{'a': 2, 'x': 4, 'b': 3, 'sub':
  <function sub at 0x008D75F0>}
4
7

希望本文所述对大家的Python程序设计有所帮助。

(0)

相关推荐

  • Python中将字典转换为XML以及相关的命名空间解析

    尽管 xml.etree.ElementTree 库通常用来做解析工作,其实它也可以创建XML文档. 例如,考虑如下这个函数: from xml.etree.ElementTree import Element def dict_to_xml(tag, d): ''' Turn a simple dict of key/value pairs into XML ''' elem = Element(tag) for key, val in d.items(): child = Element(k

  • 解读Python编程中的命名空间与作用域

    变量是拥有匹配对象的名字(标识符).命名空间是一个包含了变量名称们(键)和它们各自相应的对象们(值)的字典. 一个Python表达式可以访问局部命名空间和全局命名空间里的变量.如果一个局部变量和一个全局变量重名,则局部变量会覆盖全局变量. 每个函数都有自己的命名空间.类的方法的作用域规则和通常函数的一样. Python会智能地猜测一个变量是局部的还是全局的,它假设任何在函数内赋值的变量都是局部的. 因此,如果要给全局变量在一个函数里赋值,必须使用global语句. global VarName的

  • Python中规范定义命名空间的一些建议

    API的设计是一个艺术活.往往需要其简单.易懂.整洁.不累赘. 很多时候,我们在底层封装一个方法给高层用,而其它的方法只是为了辅助这个方法的. 也就是说我们只需要暴露这个方法就行,不用关心这个方法是怎么实现的,不用关心其它辅助方法的存在. 在Python中,有几种策略来保持命名空间的整洁. 1.变量命名用下划线_开头 下划线_开头的变量在其它模块from xxx import *的时候不被import. 如果你看decimal的源码,就会发现多次把import 的模块弄成下划线_开头的别名. h

  • Python命名空间详解

    通俗的来说,Python中所谓的命名空间可以理解为一个容器.在这个容器中可以装许多标识符.不同容器中的同名的标识符是不会相互冲突的.理解python的命名空间需要掌握三条规则: 第一,赋值(包括显式赋值和隐式赋值)产生标识符,赋值的地点决定标识符所处的命名空间. 第二,函数定义(包括def和lambda)产生新的命名空间. 第三,python搜索一个标识符的顺序是"LEGB". 所谓的"LEGB"是python中四层命名空间的英文名字首字母的缩写. 最里面的一层是L

  • 深入理解Python中命名空间的查找规则LEGB

    名字空间 Python 的名字空间是 Python 一个非常核心的内容. 其他语言中如 C 中,变量名是内存地址的别名,而在 Python 中,名字是一个字符串对象,它与他指向的对象构成一个{name:object}关联. Python 由很多名字空间,而 LEGB 则是名字空间的一种查找规则. 作用域 Python 中name-object的关联存储在不同的作用域中,各个不同的作用域是相互独立的.而我们就在不同的作用域中搜索name-object. 举个栗子,来说明作用域是相互独立的. In

  • Python本地与全局命名空间用法实例

    本文实例讲述了Python本地与全局命名空间用法.分享给大家供大家参考.具体如下: x = 1 def fun(a): b=3 x=4 def sub(c): d=b global x x = 7 print ("Nested Function\n=================") print locals() sub(5) print ("\nFunction\n=================") print locals() print locals()

  • python高级内置函数用法实例

    1.enumerate返回针对序列类型的可迭代对象的枚举对象. 2.eval取出字符串中的内容. 将str中有效的表达式返回计算结果. 3.exec运行编译后的字符串. 4.filter过滤器筛选出想要的对象. 实例 list1 = [1,'ok',3,'kkk'] s = enumerate(list1) print(s)#<enumerate object at 0x000002D2CC666DB8>生成一个枚举对象 for i in s: print(i) #(0, 1) # (1, '

  • Python序列化与反序列化pickle用法实例

    这篇文章主要介绍了Python序列化与反序列化pickle用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 要将Python对象作为一个文件的形式保存到磁盘,就叫序列化: 当我们需要用到这个这对象,再从磁盘加载这个对象,就叫反序列化 Python自带的pickle可以帮我们实现,pickle这个单词是咸菜的意思,咸菜耐储存,是不是很形象呀? 对象的存储分为两步: 1.将对象在内存中的数据抓取取来,转换成一个有序的文本,这一步就是序列化 2

  • Python @property原理解析和用法实例

    这篇文章主要介绍了Python @property原理解析和用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在我们定义数据库字段类的时候,往往需要对其中的类属性做一些限制,一般用get和set方法来写,那在python中,我们该怎么做能够少写代码,又能优雅的实现想要的限制,减少错误的发生呢,这时候就需要我们的@property闪亮登场啦,巴拉巴拉能量--.. 用代码来举例子更容易理解,比如一个学生成绩表定义成这样 class Stude

  • Python curses内置颜色用法实例

    1.说明 curses提供了内置颜色可以让我们自定义前后背景.在使用彩色模式之前我们需要先使用使用curses.start_corlor()进行初始化操作. 2.注意 0号位置颜色是默认黑白配色,无法修改. 3.实例 import curses import time stdscr = curses.initscr() stdscr.nodelay(False) curses.noecho() # 初始化彩色模式 curses.start_color() # 在1号位置添加前景色是绿色,背景色是

  • python argparse模块传参用法实例

    目录 前言 传入一个参数 操作args字典 传入多个参数 改变数据类型 位置参数 可选参数 默认值 必需参数 前言 argsparse是python的命令行解析的标准模块,内置于python,不需要安装.这个库可以让我们直接在命令行中就可以向程序中传入参数并让程序运行. 港真的,今天是我第一次学习argsparse.因为用不到,自然也就没有学习的动力.但是现在电脑有点卡,每次打开pycharm太卡了,逼得我不得不开始使用命令行来测试代码. 传入一个参数 我们先在桌面新建“arg学习”的文件夹,在

  • Python中np.linalg.norm()用法实例总结

    目录 前言 用法 总结 前言 np.linalg.norm()用于求范数,linalg本意为linear(线性) + algebra(代数),norm则表示范数. 用法 np.linalg.norm(x, ord=None, axis=None, keepdims=False) 1.x: 表示矩阵(一维数据也是可以的~) 2.ord: 表示范数类型 向量的范数: 矩阵的向量: ord=1:表示求列和的最大值 ord=2:|λE-ATA|=0,求特征值,然后求最大特征值得算术平方根 ord=∞:表

  • Python定义函数功能与用法实例详解

    本文实例讲述了Python定义函数功能与用法.分享给大家供大家参考,具体如下: 1.函数的意义 一般数学上的函数是,一个或者几个自变量,通过某种计算方式,得出一个因变量. y = f(x) 在Python中,为了使操作更加简洁,就引入了函数这个概念. Python中的函数,可以把一大串要反复使用的代码"定义"(封装)成一个函数,给予这个函数一个标识符作为函数名,设置自变量和因变量.然后要使用这一大串代码的时候,就调用这个我们自己创造的函数,输入自变量,然后会返回给我们因变量. 2.函数

  • jQuery插件制作之全局函数用法实例

    本文实例讲述了jQuery插件制作之全局函数用法.分享给大家供大家参考.具体分析如下: 1.添加新的全局函数 所谓的全局函数,实际上就是jQuery对象的方法,但从实践的角度上看,他们是位于jQuery命名空间内部的函数 (1)添加一个函数,只需要将新函数指定为jQuery对象的一个属性. jQuery.five =function(){ alert("直接继承方式不一样"); } 调用: 复制代码 代码如下: $.five(); (2)添加多个函数 jQuery.five =func

  • Python爬虫之正则表达式基本用法实例分析

    本文实例讲述了Python爬虫之正则表达式基本用法.分享给大家供大家参考,具体如下: 一.简介 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列匹配某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些匹配某个模式的文本. compile 函数根据一个模式字符串和可选的标志参数生成一个正则表

随机推荐