当前位置: 首页 > 知识库问答 >
问题:

与导入python有点混淆

尉迟正平
2023-03-14

我有PHP(以及其他一些东西)的背景,我正在玩Python。在PHP中,当我想包含另一个文件时,我只需执行includerequire,该文件中的所有内容都包含在内。

但是在python中,推荐的方法似乎是从文件导入,但这似乎更适合包含库和东西?如何在多个文件中分离代码?唯一的方法是使用一个包含一大堆函数调用的文件,然后导入15个其他文件吗?

共有3个答案

司马建柏
2023-03-14

有趣的问题。如您所知,在PHP中,您可以通过使用包含来分离代码,它从字面上获取包含文件中的所有代码,并将其放在您调用包含的任何地方。这对于编写Web应用程序很方便,因为您可以轻松地将页面分成几个部分(如页眉、导航、页脚等)。

另一方面,Python不仅仅用于web应用程序。要重用代码,必须依赖函数或良好的旧面向对象编程。PHP还有函数和面向对象编程供参考。

在一个文件中编写函数和类,然后将其导入另一个文件。这允许您访问函数或使用在另一个文件中定义的类。

假设您在filefile1中有一个名为foo的函数。py。从file2。py,您可以编写导入文件1。然后,使用file1调用foo。foo()。或者,从file1 import foo中写入,然后可以使用foo()调用foo。请注意,中的允许您直接调用foo。有关更多信息,请查看python文档。

上官霄
2023-03-14

我想我明白你想说什么,想做什么。

以下是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()

换句话说,您从一个模块导入一些功能,然后在另一个模块中使用它。

从编程标准或最佳实践来看,上面的例子不是很好,但我认为它给了您一些理解。

颜昕
2023-03-14

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 输出: 问题答案: