小编Pat*_*win的帖子

在Python中,如何获取函数中使用的全局变量?

我正在尝试收集有关崩溃的信息,我无法弄清楚如何获得崩溃函数中使用的全局变量.

import inspect

fun = 222
other = "junk"

def test():
    global fun
    harold = 888 + fun
    try:
        harold/0
    except:
        frames = inspect.trace()
        print "Local variables:"
        print frames[0][0].f_locals

        print "All global variables, not what I want!"
        print frames[0][0].f_globals

test()
Run Code Online (Sandbox Code Playgroud)

test()只使用"fun",但f_globals给出了所有可用的全局变量.有没有办法获得这个函数正在使用的全局变量?

python error-handling

9
推荐指数
1
解决办法
1053
查看次数

我可以在python输入缓冲区中插入可删除的字符吗?

我想自动缩进控制台应用程序的下一行,但用户需要能够删除它. sys.stdout.writeprint创建不可删除的字符,我不能写入sys.stdin(据我所知).我基本上试图聪明地缩进,但我只能越陷越深.关于如何爬出来的任何想法?

编辑:我应该注意到这是使用IronPython的Windows程序的一部分.虽然我可以做更多的事情(也可能在未来),但我希望能够以很少的努力作为起点快速获得一个相当愉快的体验.

python

7
推荐指数
1
解决办法
226
查看次数

Python 的property.getter 的目的是什么?

由于 Python 力求找到一种正确的方式,我想知道 property.getter 的目的是什么。在这个例子中,WhyMe 定义了一个 getter,但 Other 没有,所以我想知道 property.getter 的重点是什么,只是使用属性。

class WhyMe(object):
    def __init__(self):
        self._val = 44

    @property
    def val(self):
        print 'I am not called'
        return self._val

    @val.getter # What advantage do I bring?
    def val(self):
        print 'getter called'
        return self._val

class Other(object):
    def __init__(self):
        self._val = 44

    @property
    def val(self):
        print 'I AM called'
        return self._val
Run Code Online (Sandbox Code Playgroud)

并使用它们:

>>> why = WhyMe()
>>> why.val
getter called
44
>>> other = Other()
>>> other.val
I AM called
44
Run Code Online (Sandbox Code Playgroud)

我对属性并不陌生,我只是想知道制作吸气剂是否有一些优势,或者只是为了对称而放在那里?

python new-style-class

3
推荐指数
1
解决办法
602
查看次数

标签 统计

python ×3

error-handling ×1

new-style-class ×1