我正在尝试收集有关崩溃的信息,我无法弄清楚如何获得崩溃函数中使用的全局变量.
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给出了所有可用的全局变量.有没有办法获得这个函数正在使用的全局变量?
我想自动缩进控制台应用程序的下一行,但用户需要能够删除它. sys.stdout.write并print创建不可删除的字符,我不能写入sys.stdin(据我所知).我基本上试图聪明地缩进,但我只能越陷越深.关于如何爬出来的任何想法?
编辑:我应该注意到这是使用IronPython的Windows程序的一部分.虽然我可以做更多的事情(也可能在未来),但我希望能够以很少的努力作为起点快速获得一个相当愉快的体验.
由于 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)
我对属性并不陌生,我只是想知道制作吸气剂是否有一些优势,或者只是为了对称而放在那里?