Python的locals()函数

Python的locals()函数会以dict类型返回当前位置的全部局部变量。

示例代码:

def func():
    arg_a, arg_b = ‘a‘, ‘b‘

    def func_a():
        pass

    def func_b():
        pass

    def print_value():
        print(arg_a, arg_b)

    return locals()

if __name__ == ‘__main__‘:

    args = func()
    print(type(args))
    print(args)

运行结果可以看出,会将函数func的局部变量以dict类型返回。

<class ‘dict‘>
{‘func_a‘: <function func.<locals>.func_a at 0x10d8f71e0>, ‘arg_b‘: ‘b‘, ‘arg_a‘: ‘a‘, ‘print_value‘: <function func.<locals>.print_value at 0x10d8f7378>, ‘func_b‘: <function func.<locals>.func_b at 0x10d8f72f0>}

将locals()与property结合提高代码可读性

class NewProps(object):

    def __init__(self):
        self._age = 40

    def fage():
        doc = "The age property."

        def fset(self, value):
            self._age = int(value)

        def fget(self):
            return self._age

        def fdel(self):
            del self._age

        return locals()

    age = property(**fage())

if __name__ == ‘__main__‘:
    x = NewProps()
    print(x.age)
    x.age = 50
    print(x.age)

这里需要注意的是fage()方法下4个属性名称不能修改(也不能新增其他属性,除非对locals()返回的dict进行处理,移除多余的元素),必须为fset、fget、fdel、doc,如果修改属性名称,会抛出如下异常:

‘f_set‘ is an invalid keyword argument for this function

因为,property方法接收4个参数(self除外,因为Python编译器会自动把self传入)

def __init__(self, fget=None, fset=None, fdel=None, doc=None): # known special case of property.__init__  .....

在return locals()时,返回dict,key的值和参数的name一一对应,以**kwargs参数的形式传入函数property。

时间: 2024-08-29 13:31:44

Python的locals()函数的相关文章

[py]Python locals() 函数

Python locals() 函数作用 http://www.runoob.com/python/python-func-locals.html locals() 函数会以字典类型返回当前位置的全部局部变量. 对于函数, 方法, lambda 函式, 类, 以及实现了 call 方法的类实例, 它都返回 True. locals()实例 >>>def runoob(arg): # 两个局部变量:arg.z ... z = 1 ... print (locals()) ... >&

【转】Python 内置函数 locals() 和globals()

Python 内置函数 locals() 和globals() 转自: https://blog.csdn.net/sxingming/article/details/52061630 1>这两个函数主要提供,基于字典的访问局部变量和全局变量的方式. python 使用叫做名字空间的东西来记录变量的轨迹.名字空间是一个字典 ,它的键就是字符串形式的变量名字,它的值就是变量的实际值. 名字空间可以像 Python 的 dictionary 一样进行访问. 在一个 Python 程序中的任何一个地方

Python globals和locals函数_reload函数

Python globals和locals函数_reload函数: globals( ): 返回所有能够访问到的全局名字 num = 5 sum = 0 def add(num): func_sum = 0 func_sum += num return func_sum print(globals()) ''' {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importl

python内置函数4-eval()

Help on built-in function eval in module __builtin__: eval(...) eval(source[, globals[, locals]]) -> value Evaluate the source in the context of globals and locals. The source may be a string representing a Python expression or a code object as retur

python内置函数 2

import__( name[, globals[, locals[, fromlist[, level]]]])被 import 语句调用的函数. 它的存在主要是为了你可以用另外一个有兼容接口的函数 来改变 import 语句的语义. 为什么和怎么做的例子, 标准库模块 ihooks 和 rexec. 也可以查看 imp, 它定义了有用的操作 ,你可以创建你自己的 __import__()函数. 例 如, 语句"import spam" 结果对应下面的调用: __import__('

Python补充--Python内置函数清单

Python内置函数 Python内置(built-in)函数随着python解释器的运行而创建.在Python的程序中,你可以随时调用这些函数,不需要定义.最常见的内置函数是: print("Hello World!") 在Python教程中,我们已经提到下面一些内置函数:基本数据类型 type()反过头来看看 dir()   help()    len()词典 len()文本文件的输入输出 open()循环设计 range()   enumerate()    zip()循环对象

python学习系列--python内置函数(一)

先列出所有的python内置函数,可以看到还是挺多的. abs()        求给定数的绝对值. all()          传入一个列表,只有当列表中所有元素都是真时,该函数返回真. any()        传入一个列表,只要列表中有一个元素为真,该函数即返回真. ascii()       执行对象中的__repr__方法.该函数在python2.7中已弃用. bin()         将给定的值转换成二进制. bool()       判断真假. bytearray()     

what&#39;s the python之内置函数

what's the 内置函数? 内置函数,内置函数就是python本身定义好的,我们直接拿来就可以用的函数.(python中一共有68中内置函数.)     Built-in Functions     abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod() id() object() sorted() ascii() enumerate() input() oct() static

python—内置函数-字符串,eval,isinstance

eval() 功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法: eval(source[, globals[, locals]]) -> value 参数: source:一个Python表达式或函数compile()返回的代码对象 globals:可选.必须是dictionary locals:可选.任意map对象 实例展示: 可以把list,tuple,dict和string相互转化. ############################################