簡體   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