国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python 跨文件調用函數(shù) + 在一個文件中執(zhí)行另一個文件

這篇具有很好參考價值的文章主要介紹了Python 跨文件調用函數(shù) + 在一個文件中執(zhí)行另一個文件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


在很多時候,為了保持代碼與代碼文件的簡潔和邏輯清晰,通常會將許多相類似的函數(shù)放在一個文件中,在一個 main.py中去調用它們。調用 Python 函數(shù)的時候,大致會存在如下幾種情況。

一、項目簡介

假如現(xiàn)在有這樣一個文件樹(從其他地方copy的,稍加整改)

A
   |-------- __init__.py
   |-------- a.py
   |-------- main.py
   |-------- B
         |-------- __init__.py
         |-------- b.py
   |-------- C
         |-------- __init__.py
         |-------- c.py

文件內容如下:

# a.py
def a_hello():
    print("A_HELLO")
----------------------------
# b.py
def b_hello():
    print("B_HELLO")
----------------------------
# c.py
def c_hello():
    print("C_HELLO")
----------------------------
# main.py
def main_hello():
    print("MAIN_HELLO")

為什么要有__init__.py文件呢?
【答】在Python工程里,當python檢測到一個目錄下存在__init__.py文件時,python就會把它當成一個模塊(module)。Module跟C++的命名空間和Java的Package的概念很像,都是為了科學地組織化工程,管理命名空間。
__init__.py可以是一個空文件,也可以有非常豐富的內容。

二、調用類型

1、調用同文件中的函數(shù)

這個比較簡單,比如我想在main.py中調用main_hello()函數(shù),那么我直接main_hello()即可

2、調用同目錄下不同文件中的函數(shù)

比如我想在main.py中調用a.py中的a_hello()函數(shù),可做如下操作

import a
a.a_hello()

3、調用同級文件夾文件中的函數(shù)

比如我想在main.py中調用文件夾Bb.py中的b_hello()函數(shù),可做如下操作:

from B import b
b.b_hello()

4、調用上一級文件夾文件中的函數(shù)

比如我想在c.py中調用a.py中的函數(shù),這時候如果用上面的方法就會報錯No module named xx。解決方法就是將目錄A加到系統(tǒng)路徑下

import sys
sys.path.append('E:\\testnow\\A')   #括號內容為文件的絕對路徑

注意,sys.path添加目錄時注意是在windows還是在linux下,windows下需要用\\,linux下需要用/否則會出錯。這樣需要區(qū)分操作系統(tǒng),而且需要知道絕對路徑,豈不是很不好用??吹接写罄杏玫竭^如下操作:

import os
import sys
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

上面這句話很長,但也不難理解,os.path.dirname(__file__)獲取當前文件的絕對路徑,os.path.join(xx,'..')在后面追加..,相當于進入上一級目錄,然后再os.path.abspath(xx)獲取絕對路徑,最后sys.path.append()將其加入系統(tǒng)路徑當中。經過這些操作之后,被加入系統(tǒng)路徑中的所有文件中的函數(shù)都可以被調用了。

5、調用上一級文件夾子文件夾下文件中的函數(shù)

后面有朋友問了,所以這里再補充一下 2022-09-23
因為原來的項目被我刪了,這里我并沒有做測試啊,一般我都是這么用的,應該無問題。

比如我想在c.py中調用b.py中的函數(shù),那么c.pyimport

import os
import sys
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
import B.b as b
b.b_hello()

6、執(zhí)行另一個文件

import os

os.system(r'python tmp.py') 
# 最好給文件的絕對路徑,否則有可能會找不到文件。

三、概念區(qū)分

  • Python 模塊(Module),是一個 Python 文件,以 .py 結尾,包含了 Python 對象定義和 Python 語句。
  • Python 包是一個分層次的文件目錄結構,它定義了一個由模塊及子包,和子包下的子包等組成的 Python 的應用環(huán)境。簡單來說,包就是文件夾,但該文件夾下必須存在 __init__.py 文件, 該文件的內容可以為空。__init__.py 用于標識當前文件夾是一個包。
  • 文件夾:文件夾就是不存在 __init__.py 文件的文件夾。

另外,對于導入模塊可以使用import model1from model1 import func1, func2, ...。其實,這兩種方式看似一樣,但是是有所區(qū)別的,具體請看

https://blog.csdn.net/Gou_Hailong/article/details/125169752文章來源地址http://www.zghlxwxcb.cn/news/detail-432408.html

到了這里,關于Python 跨文件調用函數(shù) + 在一個文件中執(zhí)行另一個文件的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包