溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python如何跨.py文件調(diào)用自定義函數(shù)

發(fā)布時(shí)間:2020-07-21 17:54:55 來源:億速云 閱讀:670 作者:小豬 欄目:開發(fā)技術(shù)

這篇文章主要講解了Python如何跨.py文件調(diào)用自定義函數(shù),內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。

0 前言

os.chdir() :用于改變當(dāng)前python工作的目錄到指定的路徑

sys.path:是python搜索模塊的一個(gè)路徑集,為list,自定義的包可以把存放路徑加進(jìn)去,之后直接調(diào)用包名就行了。

1 同一文件夾

一般當(dāng)前的工作路徑是在搜索路徑里面,所以不用sys.path.append,如果調(diào)用包的時(shí)候報(bào)錯(cuò),先使用sys.path查看當(dāng)前路徑在不在list里,不在list里加進(jìn)去才能直接調(diào)用自定義包。

一個(gè)文件夾內(nèi)有兩個(gè) .py 文件:

exe101.py
FileWriteAbout.py

我們想在exe101.py文件內(nèi)調(diào)用FileWriteAbout.py文件中的 任意 一個(gè)自定義函數(shù)。

Python如何跨.py文件調(diào)用自定義函數(shù)

假如調(diào)用FileWriteAbout.py文件中的函數(shù)writeList():

Python如何跨.py文件調(diào)用自定義函數(shù)

直接在exe101.py中輸入:

import FileWriteAbout # 導(dǎo)入另一個(gè)文件
FileWriteAbout.writeList() #調(diào)用其中的函數(shù)名

#或者下面這種,只是調(diào)用時(shí)省略py文件名容易導(dǎo)致不同包內(nèi)的函數(shù)名字沖突
from FileWriteAbout import *
writeList() #直接寫函數(shù)名

ps:

如果只涉及被調(diào)用py文件中的一個(gè)具體函數(shù)

就可以將調(diào)入形式寫成:

from FileWriteAbout import writeList
writeList()

2 不同文件夾下

兩個(gè)py文件不再一個(gè)目錄的情況下

2.1 用append將待調(diào)用文件路徑加入搜索list

import sys
sys.path.append(r"D:\MathElectric\python\exercises") 
 # 待引用的py文件路徑加到了搜索列表里

import FileWriteAbout # py 文件名
FileWriteAbout.writeList() # 具體函數(shù)

2.2 使用imp包

導(dǎo)入imp包:

import imp

AA = imp.load_source(name,pathname[,file])

將源py文件pathname導(dǎo)入到名字為name的模塊中,name可以是自己定義。

例如:

import imp # 導(dǎo)入
CC = imp.load_source('MM',r'D:\MathElectric\python\exercises\FileWriteAbout.py')

使用時(shí):

方法(1):直接使用

CC.writeList()

方法(2):導(dǎo)入別名使用

import MM
MM.writeList()

3 spyder使用相對路徑讀取文件

絕對路徑讀取文件沒有問題。

data = pd.read_excel(r"D:/project/UCIpowerPre/CCPP/Folds5x2_pp.xlsx")

使用spyder寫代碼的時(shí)候想使用相對路徑直接讀數(shù)據(jù),

data = pd.read_excel(r"CCPP/Folds5x2_pp.xlsx")

發(fā)現(xiàn)報(bào)錯(cuò)。

其實(shí)就是代碼編輯的工作路徑和數(shù)據(jù)路徑不對應(yīng)。

我們可以把工作路徑切換到待讀取文件所在的位置。

或者在spyder右上角把當(dāng)前的工作路徑改一下。

import os
os.chdir(r"D:/project/UCIpowerPre")

重點(diǎn)區(qū)分這幾個(gè)路徑的區(qū)別:

當(dāng)前的工作路徑

py文件包的搜索路徑

數(shù)據(jù)文件所在路徑

補(bǔ)充知識:python只引入模塊并不能直接調(diào)用該模塊的函數(shù)

如下圖:

Python如何跨.py文件調(diào)用自定義函數(shù)

這里只引入了recognizer模塊,沒有直接引入其函數(shù),會報(bào)錯(cuò)name 'XXX' is not defined

若想頻繁使用某個(gè)函數(shù),可以將它賦值給一個(gè)本地變量

如:

predict = recognizer.predict
clean_captcha = recognizer.clean_captcha
get_captcha = recognizer.get_captcha

Python如何跨.py文件調(diào)用自定義函數(shù)

看完上述內(nèi)容,是不是對Python如何跨.py文件調(diào)用自定義函數(shù)有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI