最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、項目簡介

假如現(xiàn)在有這樣一個文件樹(從其他地方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工程里,當python檢測到一個目錄下存在__init__.py文件時,python就會把它當成一個模塊(module)。Module跟C++的命名空間和Java的Package的概念很像,都是為了科學地組織化工程,管理命名空間。
__init__.py可以是一個空文件,也可以有非常豐富的內(nèi)容。

二、調(diào)用類型

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

這個比較簡單,比如我想在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)用同級文件夾文件中的函數(shù)

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

from B import b
b.b_hello()

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

比如我想在c.py中調(diào)用a.py中的函數(shù),這時候如果用上面的方法就會報錯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添加目錄時注意是在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)路徑當中。經(jīng)過這些操作之后,被加入系統(tǒng)路徑中的所有文件中的函數(shù)都可以被調(diào)用了。

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

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

比如我想在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í)行另一個文件

import os

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

三、概念區(qū)分

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

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

http://m.fzitv.net/article/269568.htm

總結 

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

相關文章

  • python中 * 的用法詳解

    python中 * 的用法詳解

    這篇文章主要介紹了python中 * 的用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • Python和Anaconda和Pycharm安裝教程圖文詳解

    Python和Anaconda和Pycharm安裝教程圖文詳解

    PyCharm是一種PythonIDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率的工具,這篇文章主要介紹了Python和Anaconda和Pycharm安裝教程,需要的朋友可以參考下
    2020-02-02
  • python進階之多線程對同一個全局變量的處理方法

    python進階之多線程對同一個全局變量的處理方法

    今天小編就為大家分享一篇python進階之多線程對同一個全局變量的處理方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python爬蟲使用scrapy注意事項

    python爬蟲使用scrapy注意事項

    在本篇文章里小編給大家整理的是一篇關于python爬蟲使用scrapy注意事項的相關文章,對此有興趣的朋友們可以學習下。
    2020-11-11
  • Python 查看文件的編碼格式方法

    Python 查看文件的編碼格式方法

    下面小編就為大家分享一篇Python 查看文件的編碼格式方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • python中常見的運算符及用法實例

    python中常見的運算符及用法實例

    運算符用于執(zhí)行程序代碼運算,會針對一個以上操作數(shù)項目來進行運算,下面這篇文章主要給大家介紹了關于python中常見的運算符及用法的相關資料,需要的朋友可以參考下
    2022-03-03
  • 使用OpCode繞過Python沙箱的方法詳解

    使用OpCode繞過Python沙箱的方法詳解

    這篇文章主要給大家介紹了關于如何使用OpCode繞過Python沙箱的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • pytorch 數(shù)據(jù)加載性能對比分析

    pytorch 數(shù)據(jù)加載性能對比分析

    這篇文章主要介紹了pytorch 數(shù)據(jù)加載性能對比分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python中三種時間格式轉換的方法

    Python中三種時間格式轉換的方法

    本文主要介紹了Python中三種時間格式轉換的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • Python+Scipy實現(xiàn)自定義任意的概率分布

    Python+Scipy實現(xiàn)自定義任意的概率分布

    Scipy自帶了多種常見的分布,如正態(tài)分布、均勻分布、二項分布、多項分布、伽馬分布等等,還可以自定義任意的概率分布。本文將為大家介紹如何利用Scipy自定義任意的概率分布,感興趣的可以了解下
    2022-08-08

最新評論

吉林省| 苍梧县| 福州市| 广灵县| 沁源县| 隆化县| 长子县| 微博| 太仆寺旗| 甘洛县| 涪陵区| 乌什县| 兴和县| 深水埗区| 赣州市| 广安市| 乐都县| 德昌县| 濮阳县| 象州县| 措美县| 蒙山县| 海门市| 朝阳区| 柳州市| 凌云县| 桦川县| 汝州市| 齐河县| 江都市| 金昌市| 涟水县| 甘谷县| 徐州市| 凤城市| 洪湖市| 开封市| 金华市| 万宁市| 涿州市| 磐安县|