Little confused with import python
我来自一个PHP(以及其他一些东西)背景,我正在和Python打交道。在PHP中,当我想要包含另一个文件时,我只需要执行
但在python中,推荐的方法似乎是
php和python完全不同,原因很多。
But it seems the recommended way to do stuff in python is
from file import but that seems to be more for including libraries and stuff?
号
实际上,
1 2 3 | import foo print foo.bar |
或者您可以从该模块中选择所需内容:
1 2 3 | from foo import bar print bar |
。
更好的是,如果导入一个模块两次,则只导入一次:
1 2 3 4 | >> import foo as foo1 >> import foo as foo2 >> foo1 is foo2 True |
。
How do you separate your code amongst several files?
号
你必须考虑你的代码…这就是所谓的软件设计,这里有一些规则:
- 您从不在模块级别编写算法;而是将其设为函数,并调用该函数
- 永远不要在模块级别实例化对象;您应该将其嵌入到函数中,并调用该函数
- 如果需要多个不同函数中的对象,请创建一个类并将该对象封装到该类中,然后在绑定到该类的函数中使用它(因此现在称为方法)。
唯一的例外是,当您想从命令行启动程序时,可以附加:
1 | if __name__ =="__main__": |
在模块的末尾。我最好的建议是,稍后再调用您的第一个函数:
1 2 | if __name__ =="__main__": main() |
。
Is the only way to do it, to have a single file with a whole bunch of function calls and then import 15 other files?
号
这不是唯一的方法,但这是最好的方法。您将所有的算法制作成函数和对象库,然后准确导入其他库等中所需的内容。这就是你如何创造一个可重用代码的世界,而不必重新发明轮子!所以忘记文件,想想包含对象的模块。
最后,我对您学习Python的最好建议是,在编写PHP时摒弃所有的习惯和用法,并以不同的方式重新学习这些东西。最后,这只能让你成为一个更好的软件工程师。
我想我明白你想说什么,想做什么。
下面是来自php的随机包含示例:
文件1-vars.php
1 2 3 4 5 6 | <?php $color = 'green'; $fruit = 'apple'; ?> |
文件2-main.php
1 2 3 4 5 6 7 8 9 | <?php echo"A $color $fruit"; // A include 'vars.php'; echo"A $color $fruit"; // A green apple ?> |
号
first echo命令将只打印"a"字符串,因为它没有分配给vars的任何值。下一个echo将打印一个完整的字符串,这要感谢前面的include。
然而,python的"import"导入了一个模块或它的一部分,因此您可以在当前模块中使用它。
下面是一个python示例:
文件1-echo.py
1 2 | apple = 'apple' color = 'green' |
文件2-main.py
1 2 3 4 5 6 7 | import echo def func(): print"A"+echo.color+""+echo.fruit if __name__ == '__main__': func() |
。
换句话说,您从一个模块导入一些功能,然后在另一个模块中使用它。
从编程标准或最佳实践来看,上面的示例并不是很好,但我认为它能让您有所了解。
在技术层面上,python导入非常类似于php需求,因为它将执行导入的文件。但是,由于Python的设计并不是最终生成HTML文件,所以使用它的方式非常不同。
通常,一个python文件在模块级别上根本不包含太多可执行代码,而是包含函数和类的定义。你可以把它们导入并用作图书馆。
因此,在Python中,拥有header()和footer()之类的东西是没有意义的。这些只是功能。这样调用它们,它们生成的结果将被忽略。
那么,如何分割您的Python代码呢?好吧,你把它分成函数和类,放到不同的文件中,然后导入。
有趣的问题。如您所知,在PHP中,您可以使用include来分隔您的代码,include可以从字面上提取包含文件中的所有代码,并将其放在您调用include时的任何位置。这对于编写Web应用程序很方便,因为您可以轻松地将页面划分为多个部分(如页眉、导航、页脚等)。
另一方面,python不仅仅用于Web应用程序。要重用代码,必须依赖函数或良好的面向对象编程。PHP还具有函数和面向对象编程功能。
在一个文件中编写函数和类,并将其导入另一个文件中。这允许您访问函数或使用在另一个文件中定义的类。
假设在文件
这里有一个