【问题标题】:Where to include import statements referenced in module functions?在哪里包含模块函数中引用的导入语句?
【发布时间】:2022-01-08 22:41:20
【问题描述】:

我正在做我的第一个项目,并试图弄清楚某些东西是如何工作的。如果我有一个存储一些函数的模块,我将在我的主程序中引用依赖于另一个模块的函数,我在哪里包含 import 语句?

例如:

# Title: func.py

import os

def my_function(path):
    if not os.path.isfile(path):
        parser.error(f'The file {path} does not exist.')

我是否在此处包含import os,或者我可以简单地将其包含在主文档中?

【问题讨论】:

  • 您必须在引用模块的文件中import 模块。所以如果你有一个文件在某处调用os.path.isfile,你需要在该文件的顶部import os
  • import 语句做了两件事:1) 必要时创建模块,2) 将模块绑定到当前范围内的名称。 Python 没有进程范围的全局作用域(除了内置作用域,它实际上是只读的),只有每个模块的全局作用域。
  • 知道了。在这种情况下,我将调用整个模块,所以没关系。但是有没有更好的方法来写这个,所以如果我运行类似from funcs import my_function 的东西就不会出错,因为os 永远不会被导入?
  • 每个函数都有一个对其全局命名空间的引用。您不需要 my_functioncalling 命名空间中使用的名称 my_function 即可工作。

标签: python function


【解决方案1】:

您必须在引用模块的文件中import 模块。因此,如果您有一个在某处调用 os.path.isfile 的文件,则需要在该文件的顶部添加 import os

-- comment by larsks

【讨论】:

  • 请注意,通常在尝试使用x.y.z 时,import x 是不够的。 os.path 是一个特例,见stackoverflow.com/questions/2724348/…
  • 是的,不幸的是,带点的模块名称看起来与属性访问完全一样。
猜你喜欢
  • 2013-05-03
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
  • 2019-03-07
相关资源
最近更新 更多