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

Python調(diào)用其他.py文件函數(shù)的常見(jiàn)場(chǎng)景及實(shí)現(xiàn)方法詳解

 更新時(shí)間:2026年02月28日 09:27:49   作者:大游小游之老游  
在?Python?程序運(yùn)行時(shí),如何調(diào)用另一個(gè).py文件中的函數(shù),這是?Python?開(kāi)發(fā)中非常基礎(chǔ)且常用的操作,本文介紹了Python中調(diào)用其他.py文件函數(shù)的幾種常見(jiàn)場(chǎng)景及實(shí)現(xiàn)方法,大家可以根據(jù)需要進(jìn)行選擇

在 Python 程序運(yùn)行時(shí),如何調(diào)用另一個(gè).py文件中的函數(shù),這是 Python 開(kāi)發(fā)中非?;A(chǔ)且常用的操作,核心是通過(guò)模塊導(dǎo)入實(shí)現(xiàn)(Python 中一個(gè).py文件就是一個(gè)獨(dú)立的模塊)。下面分不同場(chǎng)景詳細(xì)講解,包含可直接運(yùn)行的示例。

一、核心前提

Python 中,被調(diào)用的文件必須是合法的.py文件(后綴為.py),且文件名稱不能與 Python 內(nèi)置模塊(如ossys、math等)重名,否則會(huì)引發(fā)命名沖突。

二、場(chǎng)景 1:兩個(gè)文件在同一目錄下(最常用)

文件結(jié)構(gòu)

├── func_module.py  # 被調(diào)用的文件(存放待調(diào)用的函數(shù))
└── main_program.py  # 主程序文件(運(yùn)行時(shí)調(diào)用其他文件的函數(shù))

步驟 1:編寫(xiě)被調(diào)用文件(func_module.py)

在該文件中定義需要被調(diào)用的函數(shù)(普通函數(shù)定義即可,無(wú)特殊格式要求):

# func_module.py
def add(a, b):
    """簡(jiǎn)單的加法函數(shù),用于被其他文件調(diào)用"""
    return a + b

def multiply(a, b):
    """簡(jiǎn)單的乘法函數(shù),用于被其他文件調(diào)用"""
    return a * b

# 可選:防止該文件被直接運(yùn)行時(shí)執(zhí)行多余代碼(僅被導(dǎo)入時(shí)不執(zhí)行以下內(nèi)容)
if __name__ == "__main__":
    print("這是被調(diào)用的模塊文件,不是主程序!")

步驟 2:主程序文件調(diào)用函數(shù)(main_program.py)

有兩種常用導(dǎo)入方式,可根據(jù)需求選擇:

方式 1:導(dǎo)入整個(gè)模塊,通過(guò)「模塊名。函數(shù)名」調(diào)用

# main_program.py
# 導(dǎo)入同一目錄下的func_module模塊(即func_module.py文件)
import func_module

# 調(diào)用模塊中的函數(shù),格式:模塊名.函數(shù)名(參數(shù))
result1 = func_module.add(3, 5)
result2 = func_module.multiply(4, 6)

print(f"3+5={result1}")
print(f"4×6={result2}")

方式 2:直接導(dǎo)入模塊中的指定函數(shù)(推薦,減少冗余)

# main_program.py
# 從func_module模塊中導(dǎo)入add和multiply函數(shù),可直接調(diào)用
from func_module import add, multiply

# 直接使用函數(shù)名調(diào)用,無(wú)需加模塊前綴
result1 = add(3, 5)
result2 = multiply(4, 6)

print(f"3+5={result1}")
print(f"4×6={result2}")

方式 3:導(dǎo)入函數(shù)并指定別名(解決命名沖突)

# main_program.py
# 導(dǎo)入函數(shù)并設(shè)置別名,避免與當(dāng)前文件中的同名函數(shù)沖突
from func_module import add as my_add, multiply as my_mul

# 使用別名調(diào)用函數(shù)
result1 = my_add(3, 5)
result2 = my_mul(4, 6)

print(f"3+5={result1}")
print(f"4×6={result2}")

運(yùn)行結(jié)果

運(yùn)行main_program.py,輸出:

3+5=8
4×6=24

三、場(chǎng)景 2:被調(diào)用文件在子目錄下(按包組織文件)

當(dāng)項(xiàng)目文件較多時(shí),會(huì)將功能模塊放在子目錄中,此時(shí)需要通過(guò)「包導(dǎo)入」實(shí)現(xiàn)。

文件結(jié)構(gòu)

├── main_program.py  # 主程序文件
└── utils/  # 子目錄(作為Python包)
    ├── __init__.py  # 包標(biāo)識(shí)文件(Python3.3+可省略,但推薦創(chuàng)建,空文件即可)
    └── func_module.py  # 被調(diào)用的函數(shù)文件

關(guān)鍵說(shuō)明

__init__.py的作用是標(biāo)識(shí)當(dāng)前目錄為 Python 的「包」,使得目錄下的.py文件可以被作為模塊導(dǎo)入,該文件可以是空文件,也可以存放包的初始化配置。

步驟 1:編寫(xiě)子目錄中的函數(shù)文件(utils/func_module.py)

內(nèi)容與場(chǎng)景 1 中的func_module.py一致,無(wú)需修改。

步驟 2:主程序文件調(diào)用(main_program.py)

需指定「包名(子目錄名). 模塊名」進(jìn)行導(dǎo)入:

# main_program.py
# 方式1:導(dǎo)入子目錄下的模塊
import utils.func_module

result1 = utils.func_module.add(3, 5)
print(f"3+5={result1}")

# 方式2:直接導(dǎo)入子目錄模塊中的函數(shù)
from utils.func_module import multiply

result2 = multiply(4, 6)
print(f"4×6={result2}")

# 方式3:導(dǎo)入并指定別名
from utils import func_module as utils_func

result3 = utils_func.add(10, 20)
print(f"10+20={result3}")

四、場(chǎng)景 3:被調(diào)用文件在父目錄 / 其他非同級(jí)目錄

如果主程序文件在子目錄,需要調(diào)用上層目錄(或其他非同級(jí)目錄)的函數(shù),需要先將目標(biāo)目錄添加到 Python 的搜索路徑中(Python 默認(rèn)只搜索當(dāng)前目錄和內(nèi)置模塊目錄)。

文件結(jié)構(gòu)

├── func_module.py  # 被調(diào)用的函數(shù)文件(父目錄)
└── src/  # 子目錄
    └── main_program.py  # 主程序文件(需要調(diào)用上層的func_module.py)

實(shí)現(xiàn)步驟(src/main_program.py)

通過(guò)sys.path添加父目錄路徑,再進(jìn)行導(dǎo)入:

# src/main_program.py
import sys
import os

# 1. 獲取當(dāng)前文件(main_program.py)的絕對(duì)路徑
current_file_path = os.path.abspath(__file__)
# 2. 獲取當(dāng)前文件所在目錄(src目錄)
current_dir = os.path.dirname(current_file_path)
# 3. 獲取父目錄(即func_module.py所在目錄)
parent_dir = os.path.dirname(current_dir)
# 4. 將父目錄添加到Python的模塊搜索路徑中
sys.path.append(parent_dir)

# 5. 此時(shí)即可像同級(jí)目錄一樣導(dǎo)入函數(shù)
from func_module import add, multiply

# 6. 調(diào)用函數(shù)
result1 = add(3, 5)
result2 = multiply(4, 6)

print(f"3+5={result1}")
print(f"4×6={result2}")

五、關(guān)鍵注意事項(xiàng)

  • 命名規(guī)范:模塊文件名稱建議使用小寫(xiě)字母、下劃線,避免使用中文、空格和特殊字符,且不能與 Python 內(nèi)置模塊重名(如不能命名為os.py、sys.py)。
  • __name__ == "__main__"的作用:被調(diào)用文件中的該判斷代碼塊,只有在該文件被直接運(yùn)行時(shí)才會(huì)執(zhí)行,被其他文件導(dǎo)入時(shí)不會(huì)執(zhí)行,可用于模塊自測(cè),不影響主程序運(yùn)行。
  • 導(dǎo)入后修改生效問(wèn)題:如果在程序運(yùn)行過(guò)程中修改了被調(diào)用文件的函數(shù),當(dāng)前運(yùn)行的程序不會(huì)實(shí)時(shí)生效,需要重啟程序(或使用importlib.reload()強(qiáng)制重新加載模塊)。
  • 權(quán)限問(wèn)題:確保主程序?qū)Ρ徽{(diào)用的.py文件有讀取權(quán)限,否則會(huì)引發(fā)導(dǎo)入失敗。
  • 循環(huán)導(dǎo)入問(wèn)題:避免兩個(gè)文件互相導(dǎo)入對(duì)方的函數(shù)(如A.py導(dǎo)入B.py的函數(shù),B.py又導(dǎo)入A.py的函數(shù)),會(huì)引發(fā)ImportError,如需解決可通過(guò)延遲導(dǎo)入(在函數(shù)內(nèi)部導(dǎo)入)。

總結(jié)

  • Python 中調(diào)用另一文件的函數(shù),核心是模塊導(dǎo)入,一個(gè).py文件就是一個(gè)模塊。
  • 同級(jí)目錄直接用import 模塊名from 模塊名 import 函數(shù)
  • 子目錄需以「包」的形式導(dǎo)入,格式為包名.模塊名。
  • 非同級(jí)目錄需先通過(guò)sys.path添加目標(biāo)目錄到搜索路徑,再進(jìn)行導(dǎo)入。
  • 遵循命名規(guī)范,避免循環(huán)導(dǎo)入和命名沖突,確保程序穩(wěn)定運(yùn)行。

到此這篇關(guān)于Python調(diào)用其他.py文件函數(shù)的常見(jiàn)場(chǎng)景及實(shí)現(xiàn)方法詳解的文章就介紹到這了,更多相關(guān)Python調(diào)用.py文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用python解析json字段的3種方式實(shí)例

    使用python解析json字段的3種方式實(shí)例

    JSON(JavaScript?Object?Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,下面這篇文章主要給大家介紹了關(guān)于使用python解析json字段的3種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Anaconda超詳細(xì)保姆級(jí)安裝配置教程

    Anaconda超詳細(xì)保姆級(jí)安裝配置教程

    這篇文章主要介紹了Anaconda超詳細(xì)保姆級(jí)安裝配置教程,本篇教程對(duì)于新手很友好強(qiáng)烈推薦,看完這篇文章相信你對(duì)如何安裝配置Anaconda一定了然于胸,我們一起來(lái)看看吧
    2023-03-03
  • Python文件和目錄操作詳解

    Python文件和目錄操作詳解

    這篇文章主要介紹了Python文件和目錄操作詳解,本文講解了文件的打開(kāi)和創(chuàng)建、文件的讀取、文件的寫(xiě)入、內(nèi)容查找替換等內(nèi)容,需要的朋友可以參考下
    2015-02-02
  • python 實(shí)現(xiàn)對(duì)文件夾中的圖像連續(xù)重命名方法

    python 實(shí)現(xiàn)對(duì)文件夾中的圖像連續(xù)重命名方法

    今天小編就為大家分享一篇python 實(shí)現(xiàn)對(duì)文件夾中的圖像連續(xù)重命名方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python3如何跳過(guò)第一行讀取文件

    Python3如何跳過(guò)第一行讀取文件

    這篇文章主要介紹了Python3如何跳過(guò)第一行讀取文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • OpenCV凸包檢測(cè)和凸缺陷學(xué)習(xí)示例

    OpenCV凸包檢測(cè)和凸缺陷學(xué)習(xí)示例

    這篇文章主要為大家介紹了OpenCV凸包檢測(cè)和凸缺陷學(xué)習(xí)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 用十張圖詳解TensorFlow數(shù)據(jù)讀取機(jī)制(附代碼)

    用十張圖詳解TensorFlow數(shù)據(jù)讀取機(jī)制(附代碼)

    這篇文章主要介紹了用十張圖詳解TensorFlow數(shù)據(jù)讀取機(jī)制(附代碼),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • python圖形開(kāi)發(fā)GUI庫(kù)wxpython使用方法詳解

    python圖形開(kāi)發(fā)GUI庫(kù)wxpython使用方法詳解

    這篇文章主要介紹了python GUI庫(kù)wxpython使用方法詳解,需要的朋友可以參考下
    2020-02-02
  • 如何獲取numpy的第一個(gè)非0元素索引

    如何獲取numpy的第一個(gè)非0元素索引

    這篇文章主要介紹了如何獲取numpy的第一個(gè)非0元素索引,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • conda如何指定目錄安裝環(huán)境

    conda如何指定目錄安裝環(huán)境

    在使用conda創(chuàng)建指定目錄的Python環(huán)境時(shí)遇到錯(cuò)誤,通過(guò)管理員身份運(yùn)行、修改源配置、檢查環(huán)境目錄等多種方法,最終解決了問(wèn)題,關(guān)鍵在于正確使用`conda?config?--append?envs_dirs`命令,指定環(huán)境所在目錄,而不是環(huán)境名稱
    2026-01-01

最新評(píng)論

桓仁| 贵阳市| 湟中县| 林西县| 大名县| 台北县| 邯郸市| 依兰县| 炎陵县| 城固县| 杨浦区| 都江堰市| 武川县| 肇东市| 自贡市| 台山市| 班玛县| 卢龙县| 峨山| 昌宁县| 岳阳县| 渑池县| 万载县| 琼结县| 桓仁| 邯郸县| 富顺县| 达尔| 林西县| 巴塘县| 白朗县| 甘谷县| 吉林省| 谢通门县| 鹤壁市| 汝州市| 宜川县| 呼伦贝尔市| 东丰县| 兴安县| 锡林郭勒盟|