99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀Python在不同目錄下導(dǎo)入模塊的實現(xiàn)方法
Python在不同目錄下導(dǎo)入模塊的實現(xiàn)方法
2018-04-12
收藏

Python在不同目錄下導(dǎo)入模塊的實現(xiàn)方法

python在不同層級目錄import模塊的方法

使用python進行程序編寫時,經(jīng)常會調(diào)用不同目錄下的模塊及函數(shù)。本篇博客針對常見的模塊調(diào)用講解導(dǎo)入模塊的方法。
1. 同級目錄下的調(diào)用

目錄結(jié)構(gòu)如下:    
– src
|– mod1.py
|– test1.py

若在程序test1.py中導(dǎo)入模塊mod1, 則直接使用

2. 調(diào)用子    
*import mod1*或from mod1 import *;

目錄下的模塊

目錄結(jié)構(gòu)如下:    
– src
|– mod1.py
|– lib
| |– mod2.py
|– test1.py

這時,如果想在程序test1.py中導(dǎo)入模塊mod2.py ,可以在lib件夾中建立空文件__init__.py文件

新的目錄結(jié)構(gòu)如下:    
– src
|– mod1.py
|– lib
| |–__init__.py
| |– mod2.py
|– test1.py

然后使用:    
from lib.mod2 import *或import lib.mod2.

3. 調(diào)用上級目錄下的文件

目錄結(jié)構(gòu)如下:    
– src
|– mod1.py
|– lib
| |– mod2.py
|– sub
| |– test2.py

這里想要實現(xiàn)test2.py調(diào)用mod1.py和mod2.py ,做法是我們先跳到src目錄下面,直接可以調(diào)用mod1,然后在lib上當下建一個空文件__init__.py ,就可以像第二步調(diào)用子目錄下的模塊一樣,通過import lib.mod2進行調(diào)用了。具體代碼如下:    
import sys
sys.path.append('C:\\test\\A\\C')
import mod1
import lib.mod2

需要注意的一點是:sys.path添加目錄時注意是在windows還是在Linux下,windows下需要‘\\'否則會出錯。

補充__init__.py

python模塊的每一個包中,都有一個__init__.py文件(這個文件定義了包的屬性和方法)然后是一些模塊文件和子目錄,假如子目錄中也有__init__.py 那么它就是這個包的子包了。當你將一個包作為模塊導(dǎo)入(比如從 xml 導(dǎo)入 dom )的時候,實際上導(dǎo)入了它的__init__.py 文件。

一個包是一個帶有特殊文件 __init__.py 的目錄。__init__.py 文件定義了包的屬性和方法。其實它可以什么也不定義;可以只是一個空文件,但是必須存在。如果 __init__.py 不存在,這個目錄就僅僅是一個目錄,而不是一個包,它就不能被導(dǎo)入或者包含其它的模塊和嵌套包。

__init__.py 中還有一個重要的變量,叫做__all__。

如果此時目錄如下    
– src
|– mod1.py
|– lib
| |– mod2.py
| |– mod3.py
| |– sub
| |– | |– mod3.py

我們有時會使出一招“全部導(dǎo)入”,也就是這樣:    
from lib import *

這時 import 就會把注冊在包__init__.py 文件中 __all__ 列表中的子模塊和子包導(dǎo)入到當前作用域中來。比如:    
#文件__init__.py
 
__all__ = ["mod2", "mod3", "sub"]

以上這篇Python在不同目錄下導(dǎo)入模塊的實現(xiàn)方法就是小編分享給大家的全部內(nèi)容了

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }