首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Python项目分散到多个文件中(MWE)

将Python项目分散到多个文件中(MWE)
EN

Stack Overflow用户
提问于 2021-02-05 08:37:34
回答 2查看 25关注 0票数 0

我有两个文件:

file1:

代码语言:javascript
复制
import file2

file2.func1(file2.variable1)


def func2(arg):
    print('this is func2')
    print('it takes this:', arg)

file2:

代码语言:javascript
复制
import file1

variable1 = 'this is variable 1'


def func1(var):
    print('this is function1')
    print('and', var)


file1.func2(variable1)

我想要这样拆分的主要原因是我的项目变得非常大,我想开始将一些函数移动到单独的.py文件中,以便更好地阅读和更舒适地维护。Pycharm IDE没有拾取任何错误,但当我运行它时,我得到:

代码语言:javascript
复制
AttributeError: module 'file1' has no attribute 'func2'

扩展函数的最佳实践是什么?

EN

回答 2

Stack Overflow用户

发布于 2021-02-05 09:16:58

我不会使用循环导入。尝试如下设置:

  • __init__.py (确保您的文件夹被视为具有modulespackage,为空文件)
  • file1.py(将仅包含statics和您的函数调用的导入)
  • file2.py(将仅包含<代码>D9和您的函数file2.py的导入(将包含函数本身和声明的变量。<代码>H212<代码>F213

file1.py:

代码语言:javascript
复制
import statics

statics.func1(statics.variable1)

file2.py:

代码语言:javascript
复制
import statics

statics.func2(statics.variable1)

statics.py:

代码语言:javascript
复制
variable1 = 'this is variable 1'

def func2(arg):
    print('this is func2')
    print('it takes this:', arg)

def func1(var):
    print('this is function1')
    print('and', var)

这解决了循环导入问题,并为您节省了的麻烦:)

票数 1
EN

Stack Overflow用户

发布于 2021-02-05 09:17:11

在python中使用打包是一个很好的实践。您正在尝试将文件相互导入。这称为循环依赖。尝试在一个包中创建所有实用程序,然后导入到另一个包中。它应该是单向的。

下面是一个示例:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66055961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档