欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python跨文件調(diào)用函數(shù)以及在一個(gè)文件中執(zhí)行另一個(gè)文件

 更新時(shí)間:2022年12月09日 09:44:01   作者:流浪豬頭拯救地球  
這篇文章主要給大家介紹了關(guān)于Python跨文件調(diào)用函數(shù)以及在一個(gè)文件中執(zhí)行另一個(gè)文件的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一、項(xiàng)目簡介

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

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

文件內(nèi)容如下:

# 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工程里,當(dāng)python檢測到一個(gè)目錄下存在__init__.py文件時(shí),python就會(huì)把它當(dāng)成一個(gè)模塊(module)。Module跟C++的命名空間和Java的Package的概念很像,都是為了科學(xué)地組織化工程,管理命名空間。
__init__.py可以是一個(gè)空文件,也可以有非常豐富的內(nèi)容。

二、調(diào)用類型

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

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

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

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

import a
a.a_hello()

3、調(diào)用同級(jí)文件夾文件中的函數(shù)

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

from B import b
b.b_hello()

4、調(diào)用上一級(jí)文件夾文件中的函數(shù)

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

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

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

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

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

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

后面有朋友問了,所以這里再補(bǔ)充一下 2022-09-23
因?yàn)樵瓉淼捻?xiàng)目被我刪了,這里我并沒有做測試啊,一般我都是這么用的,應(yīng)該無問題。

比如我想在c.py中調(diào)用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í)行另一個(gè)文件

import os

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

三、概念區(qū)分

  1. Python 模塊(Module),是一個(gè) Python 文件,以 .py 結(jié)尾,包含了 Python 對(duì)象定義和 Python 語句。
  2. Python 包是一個(gè)分層次的文件目錄結(jié)構(gòu),它定義了一個(gè)由模塊及子包,和子包下的子包等組成的 Python 的應(yīng)用環(huán)境。簡單來說,包就是文件夾,但該文件夾下必須存在 __init__.py 文件, 該文件的內(nèi)容可以為空。__init__.py 用于標(biāo)識(shí)當(dāng)前文件夾是一個(gè)包。
  3. 文件夾:文件夾就是不存在 __init__.py 文件的文件夾。

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

http://www.dbjr.com.cn/article/269568.htm

總結(jié) 

到此這篇關(guān)于Python跨文件調(diào)用函數(shù)以及在一個(gè)文件中執(zhí)行另一個(gè)文件的文章就介紹到這了,更多相關(guān)Python跨文件調(diào)用函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python?Pandas之DataFrame索引及選取數(shù)據(jù)

    python?Pandas之DataFrame索引及選取數(shù)據(jù)

    這篇文章主要介紹了python?Pandas之DataFrame索引及選取數(shù)據(jù),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • keras得到每層的系數(shù)方式

    keras得到每層的系數(shù)方式

    這篇文章主要介紹了keras得到每層的系數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • pandas歸一化與反歸一化操作實(shí)現(xiàn)

    pandas歸一化與反歸一化操作實(shí)現(xiàn)

    本文主要介紹了pandas歸一化與反歸一化操作實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • python 實(shí)現(xiàn)selenium斷言和驗(yàn)證的方法

    python 實(shí)現(xiàn)selenium斷言和驗(yàn)證的方法

    今天小編就為大家分享一篇python 實(shí)現(xiàn)selenium斷言和驗(yàn)證的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python GUI庫圖形界面開發(fā)之PyQt5美化窗體與控件(異形窗體)實(shí)例

    python GUI庫圖形界面開發(fā)之PyQt5美化窗體與控件(異形窗體)實(shí)例

    這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5美化窗體與控件(異形窗體)實(shí)例,需要的朋友可以參考下
    2020-02-02
  • 玩轉(zhuǎn)Python發(fā)短信的實(shí)現(xiàn)

    玩轉(zhuǎn)Python發(fā)短信的實(shí)現(xiàn)

    用Python實(shí)現(xiàn)發(fā)短信功能,當(dāng)監(jiān)控到問題出現(xiàn)時(shí),短信報(bào)警,使問題能得到及時(shí)的處理。當(dāng)然,我相信,用Python發(fā)短信應(yīng)用場景不止此一處,下面我們開始Python發(fā)短信的實(shí)現(xiàn),感興趣的朋友參考下吧
    2022-01-01
  • 解決TensorFlow程序無限制占用GPU的方法

    解決TensorFlow程序無限制占用GPU的方法

    這篇文章主要介紹了解決TensorFlow程序無限制占用GPU的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • python實(shí)現(xiàn)固定尺寸圖像拼接

    python實(shí)現(xiàn)固定尺寸圖像拼接

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)固定尺寸圖像拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Pytorch生成隨機(jī)數(shù)Tensor的方法匯總

    Pytorch生成隨機(jī)數(shù)Tensor的方法匯總

    這篇文章主要介紹了Pytorch生成隨機(jī)數(shù)Tensor的方法匯總,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 基于Python制作一款屏幕顏色提取器

    基于Python制作一款屏幕顏色提取器

    這篇文章主要為大家介紹了如何利用Python制作一款簡易的屏幕顏色提取器,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,感興趣的可以動(dòng)手試一試
    2022-03-03

最新評(píng)論