在C:
#include "foo.h"
int main()
{
}
我相信“foo.h”会被有效地复制并粘贴到“#include”的位置。
Python导入是不同的,我找到了。
我刚刚在一个大的index.py文件中重构了一些最初有所有请求处理程序的GAE代码。
新目录树:
+ | +- [handlers] // all inherit webapp.RequestHandler +- [models] // all inherit db.Model | +- globals.py // contains global variables for site-wide settings +- index.py // contains all handler redirects
[处理程序]是包含处理程序的文件夹
[ 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 “看”全局变量中的所有内容,因为全局变量是先导入“处理程序之前”。*?
答案 0 :(得分:3)
在C语言中它或多或少地“复制粘贴”代码,在Python中是完全不同的。
还记得Python的禅宗吗?
Explicit is better than implicit.
...
Namespaces are one honking great idea -- let's do more of those!
每次导入模块时,都会执行其代码,但保留定义的所有范围。因此,当您导入handlers
时,您可以index
访问globals
的范围,但handlers
模块无法访问globals
模块,除非您明确允许它可以访问范围,导入它。
答案 1 :(得分:1)
是的,它们首先被导入,但它们首先被导入 index.py
。要“可见”globals
也需要在相应的文件中导入。