Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 导入vs C';包括_Python_Import - Fatal编程技术网

Python 导入vs C';包括

Python 导入vs C';包括,python,import,Python,Import,在C中: 我相信“foo.h”会被复制并粘贴到“#include”的位置 我发现Python导入是不同的 我只是重构了一些GAE代码,这些代码最初将所有请求处理程序都放在一个大index.py文件中 新目录树: #include "foo.h" int main() { } 不应该在handlers.FirstPage和handlers.SecondPage中“查看”全局文件中的所有内容,因为全局文件是在处理程序之前“首先”导入的。*?是的,它们是先导入的,但它们是先导入到index.py中

在C中:

我相信“foo.h”会被复制并粘贴到“#include”的位置

我发现Python导入是不同的

我只是重构了一些GAE代码,这些代码最初将所有请求处理程序都放在一个大index.py文件中

新目录树:

#include "foo.h"

int main()
{
}

不应该在handlers.FirstPage和handlers.SecondPage中“查看”全局文件中的所有内容,因为全局文件是在处理程序之前“首先”导入的。*?

是的,它们是先导入的,但它们是先导入到
index.py
中的。要“可见”
globals
也需要导入到相应的文件中。

是的,它们首先被导入,但它们首先被导入到
index.py
中。要“可见”
globals
也需要导入到相应的文件中。

在C语言中,它或多或少可以“复制粘贴”代码,而在Python中则完全不同

还记得Python的禅宗吗

from globals import *  # we need all of the globals

# ...

from handlers.FirstPage import FirstPage
from handlers.SecondPage import SecondPage
#.. etc.

每次导入模块时,都会执行其代码,但保留定义的所有范围。因此,当您导入
处理程序时,您为
索引
提供了访问
全局
范围的权限,但是
处理程序
模块没有访问
全局
模块的权限,除非您明确允许它访问范围,导入它。

而在C中,它或多或少地“复制粘贴”代码,在Python中是完全不同的

还记得Python的禅宗吗

from globals import *  # we need all of the globals

# ...

from handlers.FirstPage import FirstPage
from handlers.SecondPage import SecondPage
#.. etc.

每次导入模块时,都会执行其代码,但保留定义的所有范围。因此,当您导入
处理程序
时,您授予
索引
访问
全局
范围的权限,但是
处理程序
模块没有访问
全局
模块的权限,除非您明确允许它访问该范围,导入它。

编写依赖于C的
#include
行为的代码基本上是复制并粘贴代码到文件中,即使在C中也是不好的做法,当然在Python中根本不起作用,因为导入不是这样做的。如果第一页或第二页中的声明依赖于全局变量,则它们应该自己导入全局变量。如果你是用C写的,它们应该是“包含”全局变量。编写依赖于C的
#include
行为的代码基本上是复制并粘贴代码到文件中,即使在C中也是不好的做法,当然在Python中根本不起作用,因为导入不是这样做的。如果第一页或第二页中的声明依赖于全局变量,则它们应该自己导入全局变量。如果你是用C写的,它们应该包含全局变量。每次你导入一个模块,你都会执行它的代码。。。。不完全正确。代码仅在第一次导入时执行。每次导入模块时,都会执行其代码。。。。不完全正确。该代码仅在第一次导入时执行。
Explicit is better than implicit.
...
Namespaces are one honking great idea -- let's do more of those!