当前位置: 首页 > 面试题库 >

从...导入或导入...至于模块

哈骞仕
2023-03-14
问题内容

我应该使用

from foo import bar

要么

import foo.bar as bar

导入模块 ,并和有 改变名字没有必要/愿望bar)?

有什么区别吗?有关系吗?


问题答案:

假设bar是中的模块或包foo,没有区别*,那就没关系。这两个语句具有完全相同的结果:

>>> import os.path as path
>>> path
<module 'posixpath' from '/Users/mj/Development/venvs/stackoverflow-2.7/lib/python2.7/posixpath.pyc'>
>>> from os import path
>>> path
<module 'posixpath' from '/Users/mj/Development/venvs/stackoverflow-2.7/lib/python2.7/posixpath.pyc'>

如果bar不是模块或软件包,则第二种形式将不起作用;引发回溯:

>>> import os.walk as walk
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named walk

*在Python 3.6及更高版本中,包含其他模块的软件包的初始化顺序存在一个错误,即在软件包 的加载阶段,import contained.module.something as alias在子模块中使用 该软件包 会失败,from contained.module import something as alias而不会失败。有关该问题以及Python问题#23203和#30024的说明性示例



 类似资料:
  • 问题内容: 我已尝试找到有关最佳使用还是全面的指南。我刚开始使用Python,并且正在尝试着眼于最佳实践。 基本上,我希望有人能分享他们的经验,其他开发人员有什么喜好,以及避免遇到麻烦的最佳方法是什么? 问题答案: 和之间的区别主要是主观的。选择最喜欢的一个,并在使用中保持一致。这里有一些要点可以帮助你做出决定。 优点: - 减少维护你的import报表。无需添加任何其他导入即可开始使用模块中的另

  • 模块“Transformer”解析为非模块实体,不能使用此构造导入。 如何导入类?其实我只是想利用那堂课。我不希望指令在我的代码中产生附带效应。我只想用它:'(

  • 本文向大家介绍TypeScript 从npm导入模块,包括了TypeScript 从npm导入模块的使用技巧和注意事项,需要的朋友参考一下 示例 如果模块具有类型定义文件(d.ts),则可以使用import语句。 如果您没有模块的定义文件,TypeScript将在编译时抛出错误,因为它找不到您要导入的模块。 在这种情况下,可以使用正常的运行时require功能导入模块。但是,这将其返回为any类型

  • 问题内容: 假设我有两个Python模块,并且path_b在导入路径中: 是否可以查看从哪里导入模块?如果我启动app.py(因为我需要文件名),我想要一个类似“我是从path_a / app.py导入的”的输出。 编辑: 为了更好的理解;我可以写: 因此输出为: 问题答案: 可能有一种更简单的方法可以执行此操作,但这可以起作用: 请注意,如果该路径是脚本位置的父目录,则将相对于当前工作目录进行打

  • 问题内容: 有没有办法让python从网络读取模块? 我们有很多机器,每次更换模块时都要手动更新每台机器,这太费力了,因此我希望python从网络上的某个位置获取模块。 有任何想法吗? 问题答案: 将网络位置挂载到文件系统中,然后将该路径添加到PYTHONPATH。这样,本地计算机上的Python将能够查看远程位置中存在的模块。您 不能 直接从模块直接远程导入,例如在html中指定js文件。

  • “导入向导”让你从 CSV、TXT、XML、DBF 等格式导入数据到表或集合。你可以将设置保存为一个配置文件以供将来使用或用作设置自动运行任务。若要打开导入向导窗口,请在对象工具栏点击 “导入向导”。 【注意】Navicat Essentials 版只支持导入纯文本格式的文件,例如 TXT、CSV、XML 和 JSON。 【提示】你可以拖拉一个支持格式的文件到表或集合的对象选项卡,或到导航窗格中的