Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2296449
  • 博文数量: 321
  • 博客积分: 3440
  • 博客等级: 中校
  • 技术积分: 2992
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-24 09:08
个人简介

我就在这里

文章分类

全部博文(321)

文章存档

2015年(9)

2014年(84)

2013年(101)

2012年(25)

2011年(29)

2010年(21)

2009年(6)

2008年(23)

2007年(23)

分类: Python/Ruby

2013-11-29 21:19:06

首先 Python 里的 global var 实际上是 module 级别的,我们现在要做的是在多个 module 间直接共享的。

1: module

还是用一个专门的 module 存储共享数据,只不过没必要专门建一个静态 module py 文件。

  1. main.py
  2. import sys
  3. import types
  4. sys.modules["settings"] = types.ModuleType("settings")
  5. import settings
  6. settings.abc = "Hello, Python!"
  7. import test
  8. test.test()
  9. test.py
  10. from settings import *
  11. def test():
  12.     print abc
2. __builtin__
如果嫌麻烦,还可以直接使用 __builtin__ 这个默认导入的内置模块。别忘了 LEGB 查找规则。

  1. main.py
  2. import __builtin__
  3. __builtin__.abc = "Hello, World!"
  4. import test
  5. test.test()
  6. test.py
  7. def test():
  8.     print abc
其实没必要对全局变量深恶痛绝,就像在 C 语言里合理利用 goto 一样能带来惊喜一样。关键是 "度" 和 "把握"。FP 和 OOP 在某些理念上是不同的


转自:













阅读(1886) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~