我有PHP(以及其他一些东西)的背景,我正在玩Python。在PHP中,当我想包含另一个文件时,我只需执行include
或require
,该文件中的所有内容都包含在内。
但是在python中,推荐的方法似乎是从文件导入,
,但这似乎更适合包含库和东西?如何在多个文件中分离代码?唯一的方法是使用一个包含一大堆函数调用的文件,然后导入15个其他文件吗?
有趣的问题。如您所知,在PHP中,您可以通过使用包含来分离代码,它从字面上获取包含文件中的所有代码,并将其放在您调用包含的任何地方。这对于编写Web应用程序很方便,因为您可以轻松地将页面分成几个部分(如页眉、导航、页脚等)。
另一方面,Python不仅仅用于web应用程序。要重用代码,必须依赖函数或良好的旧面向对象编程。PHP还有函数和面向对象编程供参考。
在一个文件中编写函数和类,然后将其导入另一个文件。这允许您访问函数或使用在另一个文件中定义的类。
假设您在filefile1中有一个名为
。从foo
的函数。pyfile2。py
,您可以编写导入文件1
。然后,使用file1调用foo。foo()
。或者,从file1 import foo中写入,然后可以使用
中的foo()调用foo
。请注意,允许您直接调用foo。有关更多信息,请查看python文档。
我想我明白你想说什么,想做什么。
以下是PHP中的随机包含示例:
文件#1-vars。php
<?php
$color = 'green';
$fruit = 'apple';
?>
文件#2-主。php
<?php
echo "A $color $fruit"; // A
include 'vars.php';
echo "A $color $fruit"; // A green apple
?>
First echo命令将只打印“A”字符串,因为它没有为变量分配任何值。下一个echo将打印一个完整的字符串,这要感谢您在它之前的include。
然而,Python的“导入”导入了一个模块或它的一部分,因此您可以在当前模块中使用它。
下面是一个python的例子:
文件1-echo.py
apple = 'apple'
color = 'green'
文件2-main。派克
import echo
def func():
print "A "+echo.color+" "+echo.fruit
if __name__ == '__main__':
func()
换句话说,您从一个模块导入一些功能,然后在另一个模块中使用它。
从编程标准或最佳实践来看,上面的例子不是很好,但我认为它给了您一些理解。
PHP和Python之间的情况完全不同,原因有很多。
但它似乎推荐的方式来做的东西在python是从文件导入
但这似乎是更多的包括库和东西?
实际上,import
语句用于将对象从另一个模块导入当前模块。您可以将导入模块的所有对象导入到当前模块:
import foo
print foo.bar
或者您可以从该模块中选择所需内容:
from foo import bar
print bar
更好的是,如果你导入一个模块两次,它将只导入一次:
>> import foo as foo1
>> import foo as foo2
>> foo1 is foo2
True
如何在多个文件中分离代码?
你必须考虑你的代码。。。这就是所谓的软件设计,这里有一些规则:
唯一的例外是,当您想从命令行启动程序时,您将追加:
if __name__ == "__main__":
在模块的最后。我最好的建议是之后调用你的第一个函数:
if __name__ == "__main__":
main()
唯一的方法是使用一个包含一大堆函数调用的文件,然后导入15个其他文件吗?
这不是唯一的方法,但却是最好的方法。您可以将所有算法放入函数和对象库中,然后准确地导入其他库中所需的内容等。。这就是你如何创建一个可重用代码的整个宇宙,而不必重新发明轮子!所以,忘掉文件,想想包含对象的模块。
最后,我对学习python最好的建议是,忘记编写PHP时的所有习惯和用法,并以不同的方式再次学习这些东西。最后,这只能让你成为一名更好的软件工程师。
问题内容: 我试图从不同的部分组成URL,并且在理解此方法的行为时遇到了麻烦。例如: Python 3.x 您能否解释这种方法的确切行为? 问题答案: (对我而言)最好的方式是第一个参数,就像您在浏览器中所在的页面一样。第二个参数是该页面上锚点的href。结果是您单击后将定向到的最终URL。 根据我的描述,这很有意义。尽管希望基础包括一个方案和领域。 如果您在某个虚拟主机上,并且有一个类似的锚,则
当引用简单的.jar文件时,Eclipse会显示一个错误,该错误说明: 包java.awt可以从多个模块访问: ,java.desktop 将一个.jar文件添加到类路径中,只使用文件夹结构(不需要文件)将导致出现错误。我使用的是JDK10/12(两者都不起作用)。将编译器遵从性设置为可以使整个过程再次运行。在另一台具有的计算机上,它与编译器遵从性设置为一起工作。 我在Eclipse,在一个(出于
问题内容: 我正在导入许多不同的脚本,因此在文件的顶部,它会被导入语句弄得乱七八糟,即: 有没有办法将所有这些都移动到其他地方,然后我要做的就是导入该文件,所以它只是一个干净的导入? 问题答案: 当然有;只需在主文件所在的目录中创建一个名为的文件,然后将导入文件放置在该目录中即可。然后,您可以简单地在主脚本中使用。
我对编程相当陌生,发现了一个让你制作游戏的练习。基本上,程序要求3个输入:停止、启动和退出。启动使汽车启动,停止使汽车停止,退出是不言自明的。但是,如果你在汽车已经启动时输入启动,它会告诉你汽车已经启动,依此类推。然而,当我将输入输入到终端时,没有显示任何内容。谁能告诉我我做错了什么? 这是我的密码:
问题内容: 如何将winDLL导入python并能够使用其所有功能?它只需要双打和字符串。 问题答案: 您已经标记了问题ctype,所以听起来您已经知道答案了。 该ctypes的教程非常出色。阅读并理解该说明后,您将可以轻松完成。 例如: 还有我自己的代码中的一个示例:
问题内容: 我是Python和一般编程的新手(最多几个星期)。 关于Python和使用模块,我意识到可以使用导入函数。 所以不用打字 我可以说 我发现这大大简化了工作。现在,说我想在模块之间使用一堆 变量 ,并将它们全部定义在一个python模块中。如何使用上述类似方法或同样简单的方法导入这些变量。我不想使用,然后要求在所有变量前面加上。 理想的情况是以下情况: py b.py 输出: 问题答案: