说我有一个简单的功能:
def myfunc():
a = 4.2
b = 5.5
... many similar variables ...
Run Code Online (Sandbox Code Playgroud)
我只使用这个函数一次,我想知道什么是最简单的方法,使函数内的所有变量都可以访问我的主名称空间.
我是否必须为每个项目声明全局?或任何其他建议的方法?
谢谢.
在我的偏见中,最好的方法是将字典包装成一个很好的对象,其中"变量"作为属性被访问 - 我在多年前引入它时称为Bunch的模式,以及最后一个项目的一个很好的例子. Python的Zen(如果您不知道那是什么,请import this在解释器交互式提示符下).以机智...:
class Bunch(object):
def __init__(self, d=None):
if d is not None: self.__dict__.update(d)
def myfunc():
a = 4.2
b = 5.5
...
return Bunch(locals())
x = myfunc()
print x.a, x.b
Run Code Online (Sandbox Code Playgroud)
使用合格的名称像x.a和x.b,而不是barenames如a和b,是至关重要的想法在这里:合格的名称让你不同的命名空间和对待他们,而barenames会使一切的一个大汤和违反的Python的禅;-).当然,没有必要使用未打开的字典和难看的x['a'], x['b']访问! - )
如果你想要的是你的常量的分离,那么把它们放在另一个模块中:
consts.py:
foo = 42
bar = 'quux'
Run Code Online (Sandbox Code Playgroud)
main.py:
import consts
print consts.foo
print consts.bar[::-1]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |