【发布时间】:2010-01-22 05:18:58
【问题描述】:
在 C 中:
#include "foo.h"
int main()
{
}
我相信“foo.h”有效地被复制并粘贴在“#include”的位置。
我发现 Python 导入是不同的。
我刚刚重构了一些 GAE 代码,这些代码最初在一个大 index.py 文件中包含所有请求处理程序。
新目录树:
+ | +- [handlers] // 都继承 webapp.RequestHandler +- [models] // 全部继承 db.Model | +- globals.py // 包含站点范围设置的全局变量 +- index.py // 包含所有处理程序重定向[handlers] 是包含处理程序的文件夹
[models] 是模型所在的文件夹
所以,index.py 去
from globals import * # we need all of the globals
# ...
from handlers.FirstPage import FirstPage
from handlers.SecondPage import SecondPage
#.. etc.
不应 handlers.FirstPage 和 handlers.SecondPage “看到” 全局变量中的所有内容,因为全局变量是在处理程序之前“首先”导入的。*?
【问题讨论】:
-
编写依赖于 C 的
#include行为的代码基本上将代码复制并粘贴到文件中即使在 C 中也是不好的做法,当然它在 Python 中根本不起作用,因为这不是导入的内容做。如果 FirstPage 或 SecondPage 中的声明依赖于全局变量,它们应该自己导入全局变量。如果你是用 C 语言编写的,它们应该是#include'ing globals。