繁体   English   中英

如何使用 Python 3 PyCharm 将列表从 main.py 导入 task.py?

[英]How to import list from main.py to task.py with Python 3 PyCharm?

如何在 task.py 中使用 main.py 中的列表? 代码如下。

主要.py:

import task.py
list_list = ["test1","test2"]
task.print_func()

任务.py:

from main import list_list
def print_func():
     for x in list_list:
          print(x)

这样我得到了以下错误:

AttributeError:模块“任务”没有属性“print_func”

您正在创建一个循环依赖项(参见例如这个说明),这是您通常想要避免的。

程序流程大致如下:

  • 你打电话给python main.py
  • 执行import task ,从task.py加载print_func
  • task.py被执行,直接回到main.py来检索list_list ...

要解决您的问题,您可以执行以下操作:

主要.py:

import task
list_list = ["test1","test2"]

# Only run this, if main.py is run directly, not in import
if __name__ == "__main__":
    task.print_func()

task.py:(没有变化)

from main import list_list
def print_func():
     for x in list_list:
          print(x)

此更改允许task.py导入list_list而无需尝试执行task.print_func无法定义的 task.print_func (因为它的定义取决于list_list )。

一些一般要点:

  1. 我不明白为什么要从 main 导入list_list以在task.print_func中使用 - 我认为将列表作为参数传递会更好。
  2. 在要导入其他位置的 python 文件中,在缩进级别 0 上执行尽可能少的代码。 在这里阅读例如:如果__name__ ==“__main__”:做什么? 了解一些细节。

考虑到所有事情,我会这样做:

主文件

import task

if __name__ == "__main__":
    list_list = ["test1","test2"]
    task.print_func(list_list)

任务.py:

def print_func(list_list):
     for x in list_list:
          print(x)

您必须使用以下代码。

主文件

import task
list_list = ["test1","test2"]

if __name__=="__main__":
    task.print_func()

任务.py

from main import list_list

def print_func():
     for x in list_list:
          print(x)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM