与 import python 有点困惑

2024-01-26

我有 PHP(以及其他一些东西)背景,并且正在使用 Python。在 PHP 中,当我想包含另一个文件时,我只需这样做include or require并且该文件中的所有内容都包含在内。

但似乎在 python 中做事情的推荐方法是from file import但这似乎更适合包括图书馆和其他东西?如何将代码分离到多个文件中?唯一的方法是使用包含一大堆函数调用的单个文件,然后导入 15 个其他文件吗?


PHP 和 Python 之间的情况完全不同,原因有很多。

但似乎在 python 中做事情的推荐方法是from file import但这似乎更适合包括图书馆和其他东西?

Indeed, 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 个其他文件吗?

这不是唯一的方法,但却是最好的方法。您将所有算法放入函数和对象库中,然后导入exactly您在其他库中需要什么等等......这就是您如何创建整个可重用代码的世界,而不必重新发明轮子!因此,忘记文件,考虑包含对象的模块。

最后,我对你学习Python最好的建议是unlearn你在编写 PHP 时的每一个习惯和用法,然后以不同的方式再次学习这些东西。最终,这只会让你成为一名更好的软件工程师。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与 import python 有点困惑 的相关文章

  • 在 pandas 中单独打印一列的原始值?

    我有一个数据框 df pd DataFrame name george age 23 name anna age 26 现在我想检索乔治的年龄 df df name george age 但这会输出一些额外的信息以及原始值 0 23 Nam
  • pandas Wide_to_long 后缀参数

    我对在 pandas 中使用 Wide to long 时的参数有疑问 有一个参数叫suffix我不明白 在文档中它说 后缀 str 默认 d 捕获所需后缀的正则表达式 d 捕获数字后缀 没有数字的后缀可以用否定字符类 D 指定 您还可以进
  • Python GTK + webkit - 在 gtk.main() 之后插入 JavaScript

    我在终端中尝试了这个 一切正常 但是如果我在脚本内运行这个 我无法在 gtk main 之后插入 JavaScript import gtk import webkit w gtk Window b webkit WebView w add
  • 最小二乘法拟合直线 python 代码

    我有一个由 X 和 Y 坐标组成的散点图 我想使用直线的最小二乘拟合来获得最佳拟合线 直线最小二乘拟合是指 如果 x 1 y 1 x n y n 是测量数据对 则最佳直线是y A Bx 这是我的Python代码 number of poin
  • 无法使用 BeautifulSoup 和 Requests 抓取下拉菜单

    我想抓取百年灵网站上的产品页面以获取各种信息 示例页面 https www breitling com gb en watches navitimer b01 chronograph 46 AB0127211C1A1 https www b
  • 将一维数组转换为下三角矩阵

    我想将一维数组转换为较低的零对角矩阵 同时保留所有数字 我知道numpy tril函数 但它用零替换了一些元素 我需要扩展矩阵以包含所有原始数字 例如 10 20 40 46 33 14 12 46 52 30 59 18 11 22 30
  • Tensorflow 不分配完整的 GPU 内存

    Tensorflow 默认分配所有 GPU 内存 但我的新设置实际上只有 9588 MiB 11264 MiB 我预计大约 11 000MiB 就像我的旧设置一样 张量流信息在这里 from tensorflow python client
  • 在 Linux 上的 Python 中使用受密码保护的 Excel 工作表

    问题很简单 我每周都会收到一堆受密码保护的 Excel 文件 我必须解析它们并使用 Python 将某些部分写入新文件 我得到了文件的密码 当在 Windows 上完成此操作时 处理起来很简单 我只需导入 win32com 并使用 clie
  • Python 3在for循环中更改字典键的值不起作用

    我的 python 3 代码没有按预期工作 def addFunc x y print x y def subABC x y z print x y z def doublePower base exp print 2 base exp d
  • Pandas groupby apply 执行缓慢

    我正在开发一个涉及大量数据的程序 我正在使用 python pandas 模块来查找数据中的错误 这通常工作得非常快 然而 我当前编写的这段代码似乎比应有的速度慢得多 我正在寻找一种方法来加快速度 为了让你们正确测试它 我上传了一段相当大的
  • 将列表中的 None 替换为最左边的非 none 值

    Given a None 1 2 3 None 4 None None I d like a None 1 2 3 3 4 4 4 目前我已经用以下方法强制它 def replaceNoneWithLeftmost val last Non
  • Selenium 不会在新选项卡中打开新 URL(Python 和 Chrome)

    我想使用 Selenium WebDriver 和 Python 在不同的选项卡中打开相当多的 URL 我不确定出了什么问题 driver webdriver Chrome driver get url1 time sleep 5 driv
  • 计算 pyspark df 列中子字符串列表的出现次数

    我想计算子字符串列表的出现次数 并根据 pyspark df 中包含长字符串的列创建一个列 Input ID History 1 USA UK IND DEN MAL SWE AUS 2 USA UK PAK NOR 3 NOR NZE 4
  • 在Python中连续解析文件

    我正在编写一个脚本 该脚本使用 HTTP 流量行解析文件 并取出域 目前仅将它们打印到屏幕上 我正在使用 httpry 将流量连续写入文件 这是我用来删除域名的脚本 usr bin python import re input open r
  • Python 导入非常慢 - Anaconda python 2.7

    我的 python import 语句变得非常慢 我使用 Anaconda 包在本地运行 python 2 7 导入模块后 我编写的代码运行得非常快 似乎只是导入需要很长时间 例如 我使用以下代码运行了一个 tester py 文件 imp
  • 如何使用 os.chdir 转到减去最后一步的路径?

    例如 一个方法传递了一个路径作为参数 这个路径可能是 C a b c d 如果我想使用 os chdir 更改为 C a b 怎么办 c 没有最后一个文件夹 os chdir 可以接受 命令吗 os chdir 可以采取 作为论点 是的 然
  • Streamlabs API 405 响应代码

    我正在尝试使用Streamlabs API https dev streamlabs com Streamlabs API 使用 Oauth2 来创建应用程序 因此 首先我将使用我的应用程序的用户发送到一个授权链接 其中包含我的应用程序的客
  • 如何使用 Pandas Series 绘制两个不同长度/开始日期的时间序列?

    我正在绘制 每周总事件 的几个熊猫系列对象 系列中的数据events per week看起来像这样 Datetime 1995 10 09 45 1995 10 16 63 1995 10 23 83 1995 10 30 91 1995
  • 如何更改matplotlib中双头注释的头大小?

    Below figure shows the plot of which arrow head is very small 我尝试了下面的代码 但它不起作用 它说 引发 AttributeError 未知属性 s k 属性错误 未知属性头宽
  • 如何从 nltk 下载器中删除数据/模型?

    我在 python3 NLTK 中安装了一些 NLTK 包 通过nltk download 尝试过它们 但不需要它们 现在想删除它们 我怎样才能删除例如包large grammars来自我的 NLTK 安装 我不想删除完整的 NLTK 安装

随机推荐

  • 将原始 Markdown 文本传递给 Jade

    我正在尝试我的第一个 Node jsExpress http expressjs com 应用程序 正如每个程序员都知道的那样 在测试新框架时您应该构建的第一件事就是博客 不管怎样 我想用 Markdown 写文章 然后在视图中渲染它 我看
  • 避免循环内的条件和函数调用

    我有一个看起来像这样的代码 void function int parameter for a big loop double a for a big loop double b double value if parameter 1 va
  • Python + MySQLdb 执行许多

    我正在使用 Python 及其 MySQLdb 模块将一些测量数据导入 Mysql 数据库 我们拥有的数据量相当大 目前大约有 250 MB 的 csv 文件 未来还会有更多 目前我使用cursor execute 导入一些元数据 这不是问
  • kubectl 端口转发和代理之间的区别

    kubectl proxy and kubectl port forwarding对我来说看起来相似且令人困惑 它们的主要区别和用例是什么 正如 How kubectl port forward works https stackoverf
  • 在 Java 中使用命名空间创建 XML 文档

    我正在寻找可以构造使用命名空间的 XML 文档的示例 Java 代码 我似乎无法用我的正常方式找到任何东西最喜欢的工具 http www google com所以希望有人能够帮助我 有多种方法可以做到这一点 仅举几个例子 Using XOM
  • 如何将react应用程序导出为纯静态html

    就像标题一样 我有一个由reactJS编写的登陆页面 它很小 我想导出为纯静态html 我已经研究过 但没有找到任何解决方案 I used webpack https webpack js org 生成静态 html 和 javascrip
  • Rails3 gem:acts_as_something

    我正在尝试将一些常见代码提取到 gem 中 我在想acts as something是简单重用的好策略 有没有一个很好的教程来讨论这个关于rails3 gems 的问题 我发现了几个讨论rails2的 例如http guides rubyo
  • 如何忽略转义\ python列表?

    我想忽略以下代码中的转义字符 gt gt gt a gt gt gt print a 我想输出像 有什么办法可以做到这一点吗 Using string escape unicode escape编码 参见Python 特定编码 http d
  • React - 动态渲染一定数量的组件

    我想根据用户获得的积分数显示组件星号 MUI 组件 的数量 this state points 我不知道该怎么做 import React Component from react import Star from material ui
  • 使用拼凑时如何减少图之间的空间

    大家好 我正在使用一个小数据框来构建一些图ggplot2 我的数据框是df我把它包括为dput 在最后 我有情节 当我使用时问题出现patchwork 我希望最终的图没有空格 以便中间的线 即轴 可以将图连接在一起 这是代码 library
  • ITfoxtec SAML 2.0:配置 AWS SSO 时出现 InvalidSignatureException

    我有一个小型测试应用程序 已成功与 Okta 作为 IdP 集成 我还设置了 AWS SSO 来充当 IdP 当我将应用程序切换为使用 AWS SSO 时 出现以下错误 ITfoxtec Identity Saml2 Cryptograph
  • 测试对象是否实现接口

    以前可能有人问过这个问题 但快速搜索只提出了与 C 相同的问题 看这里 https stackoverflow com questions 410227 test if object implements interface 我基本上想做的
  • 根据另一个值的聚合查询唯一值,同时完全根据第三个值进行分组

    所以我知道这个问题并不是一个新问题 但我正在努力解决这个问题并了解处理此类情况的最佳方法 假设我有一个假设的表 X 如下所示 GroupID ID identity SomeDateTime 1 1000 1 1 01 1 1001 2 2
  • C 中的 OO 多态性、别名问题?

    我和一位同事正在尝试实现一个简单的多态类层次结构 我们正在开发嵌入式系统 并且仅限于使用 C 编译器 我们有一个基本的设计思想 可以在没有警告的情况下进行编译 Wall Wextra fstrict aliasing pedantic 并在
  • iOS 8 UITabBarController 和 UINavigationController 的旋转问题

    我在使用 iOS8 时遇到一个问题 这里我有我的视图层次结构 窗口 gt UITabBarController gt 2 个选项卡 Tab 1 gt UINavigationController1 gt UIViewController1
  • 通过 set/get 方法修改类

    尝试通过 get set 方法修改类中的对象 我无法理解如何仅使用 get set 方法来更改值 预期输出 输出 89 实际输出 输出 0 include
  • 如何在 Web 应用程序中获取客户端计算机的 Mac 地址

    我必须获取运行我的网站的客户端 PC 的 Mac 地址 那么如何获取客户端计算机的 Mac 地址 而不是托管网站的服务器的 Mac 地址 我需要与 IE Firefox Safari 和 Chrome 兼容的脚本 实现这一点的唯一方法是使用
  • 如何在 Cassandra 中将批处理语句和 LWT 作为事务执行

    我有两个模型如下的表 CREATE TABLE IF NOT EXISTS INV CODE TEXT PRODUCT CODE TEXT LOCATION NUMBER TEXT QUANTITY DECIMAL CHECK INDICA
  • 约束布局 - Textview 在尺寸增大时会与其他视图重叠

    上图显示了我想要的视图的样子 问题是 当上重力文本尺寸增加时 它会将图像推离视图 我尝试使用障碍 但无法使其发挥作用 下图显示了我在实现这一目标方面已经走了多远 但现在的问题是图像总是卡在最后 但我希望它位于重力文 本旁边 当该文本增加时
  • 与 import python 有点困惑

    我有 PHP 以及其他一些东西 背景 并且正在使用 Python 在 PHP 中 当我想包含另一个文件时 我只需这样做include or require并且该文件中的所有内容都包含在内 但似乎在 python 中做事情的推荐方法是from