python不同文件、不同文件夾間代碼調用

ref:

https://python3-cookbook.readthedocs.io/zh_CN/latest/chapters/p10_modules_and_packages.html

https://blog.csdn.net/u010013191/article/details/89071785

 

目錄

模塊、包、庫:

同文件夾內調用模塊

文件結構:

功能及目的:

實現過程:

1)設置根目錄爲Sources root

2)import代碼

注意事項:

跨文件夾調用模塊:

文件結構:

功能及目的:

實現過程:

1)設置根目錄爲Sources root

2)建立__init__.py

3)在其他文件中import代碼

注意事項:


 

之前代碼都是在一個文件中編寫運行,最近編寫的代碼涉及功能較多,需要模塊化處理,涉及不同文件間的調用

簡單學習了下 在pycharm中調用不同文件代碼 ,做以下整理:

 

模塊、包、庫:

模塊:可以理解爲代碼文件,即各種py文件,模塊中包括類、函數

包:多個模塊/代碼文件的組合,包括多個文件或者文件夾,文件夾可以看做子包;一般爲個人寫的代碼項目

庫:已發佈的包括某種特定功能的模塊/代碼文件的組合;一般爲其他組織或個人編寫的代碼項目

 

同文件夾內調用模塊

根目錄make sources root,  模塊名 直接引用

文件結構:

根目錄爲test,

文件包括hi.py、test_f.py

功能及目的:

hi.py定義了簡單的函數sayhi,打印 hi 字符串,可以被其他文件調用

test_f.py實現同文件夾下的調用

實現過程:

1)設置根目錄爲Sources root

右擊根目錄,mark dirctory as -- Sources Root;

2)import代碼

各文件代碼如下:

hi.py

def sayhi():
    print('hi')

test_f.py

import hi
hi.sayhi()

注意事項:

  • 文件名與文件夾名不要以數字開頭
  • 文件名不要與文件夾名重名

 

 

跨文件夾調用模塊:

根目錄make sources root,  建立__init__.py,使用根目錄名.子包名.模塊名的  絕對路徑方式引用

 

文件結構:

根目錄爲test,

二級目錄及文件包括test_a、test_b、__init__.py、test_c.py

三級文件包括test_a下的__init__.py、hi.py、test_a.py;test_b下的__init__.py、test_b.py;

 

功能及目的:

hi.py定義了簡單的函數sayhi,打印 hi 字符串,可以被其他文件調用

各個__init__.py用於定義模塊包,如果想調用目錄x中的代碼,就在目錄x下建立空的__init__.py文件

  • test_a.py實現同目錄下的調用
  • test_b.py實現不同目錄下文件的調用
  • test_c.py實現同級文件夾下的調用

 

實現過程:

1)設置根目錄爲Sources root

右擊根目錄,mark dirctory as -- Sources Root;

相當於在系統路徑中加入根目錄,當import時,可以檢索根目錄中內容;

類似於sys.path.append(path)

2)建立__init__.py

__init__.py用於定義模塊包,如果想調用目錄中的代碼,就在目錄下建立__init__.py文件吧;

目前涉及內容不多,建立空文件即可

3)在其他文件中import代碼

在本文中,在test_a.py、test_b.py、test.py中分別調用hi.py中代碼,各文件代碼如下:

hi.py

def sayhi():
    print('hi')

test_a.py

from test.test_a import hi
hi.sayhi()

test_b.py

from test.test_a import hi
hi.sayhi()

test_c.py

from test.test_a import hi
hi.sayhi()

 

注意事項:

  • 文件名與文件夾名不要以數字開頭
  • 文件名不要與文件夾名重名
  • 使用. 或者..的相對路徑方式進行引用,在編寫代碼時不報錯,但運行時可能出錯,建議使用 根目錄名.子包名.模塊名 的絕對路徑方式進行引用

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章