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

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀隨心所欲地用Python處理時(shí)間(1&2)
隨心所欲地用Python處理時(shí)間(1&2)
2021-09-30
收藏

作者:閑歡

來(lái)源:Python 技術(shù)

現(xiàn)在的開(kāi)發(fā)工具太多了,而且每個(gè)開(kāi)發(fā)工具都致力于做成最好用最智能的工具,所以功能越堆越多,越懟越智能。安裝這些開(kāi)發(fā)工具比較燒腦,經(jīng)常需要經(jīng)過(guò)許多配置步驟。作為一個(gè) Python 開(kāi)發(fā)者來(lái)說(shuō),好多人光是這些配置都要弄半天。配置好之后,打開(kāi)軟件,發(fā)現(xiàn)滿屏都是菜單、按鈕,無(wú)從下手,學(xué)習(xí)這些功能使用又是一大難題。

今天為大家推薦一款超級(jí)輕量級(jí)的 IDE —— Thonny。

這是一款對(duì)初學(xué)者特別友好的開(kāi)發(fā) IDE,它是由愛(ài)沙尼亞的 Tartu 大學(xué)開(kāi)發(fā),十分易于上手,還支持插件。

安裝

Thonny 的官網(wǎng)是 https://thonny.org/ ,直接進(jìn)去就能看到下載選項(xiàng),支持三大操作系統(tǒng)(Windows、Mac、Linux)。

下載下來(lái)之后,按照正常的安裝軟件流程安裝就行了。在安裝過(guò)程中,還可以選擇支持的語(yǔ)言:

這點(diǎn)是非常友好的,可以選擇“簡(jiǎn)體中文”,就憑這一點(diǎn)已經(jīng)比大多數(shù)開(kāi)發(fā)工具強(qiáng)了。其他開(kāi)發(fā)工具大多要自己去網(wǎng)上找漢化版才能顯示中文界面。

安裝完成之后,啟動(dòng)軟件,界面是這樣的:

我們可以看到,界面非常簡(jiǎn)潔,初始用戶界面上沒(méi)有任何可能分散初學(xué)者注意力的功能,看起來(lái)只需要在中央空白區(qū)敲代碼就行。

使用

簡(jiǎn)單上手

直接在程序編輯區(qū)輸入代碼,然后在功能區(qū)選擇“運(yùn)行”或者“調(diào)試”按鈕就行。

運(yùn)行之后,會(huì)在底部顯示 Shell 對(duì)話框,里面顯示的就是程序運(yùn)行的結(jié)果:

變量界面

在視圖菜單中有好多顯示選項(xiàng),點(diǎn)擊“變量”選項(xiàng),就勾選了“變量”選項(xiàng),界面右邊會(huì)出現(xiàn)“變量”選項(xiàng)的視圖區(qū)域。當(dāng)你運(yùn)行程序的時(shí)候,特別是用 debug 模式運(yùn)行的時(shí)候,在每一步過(guò)程中,都可以在變量界面上看到變量值的變化:

對(duì)于初學(xué)者來(lái)說(shuō),這功能可以幫助你一步步去查看程序運(yùn)行的過(guò)程中變量是如何變化的。

調(diào)試

Thonny 的調(diào)試也非常簡(jiǎn)單,你不需要設(shè)置斷點(diǎn),只需要用 debug 模式運(yùn)行,工具會(huì)自動(dòng)地一步步運(yùn)行程序,步驟是按照程序結(jié)構(gòu)走的,而不僅僅是代碼行。而且如果有嵌套函數(shù)的話,工具會(huì)自動(dòng)地彈出一個(gè)小窗口來(lái)顯示函數(shù)的執(zhí)行,這對(duì)于初學(xué)者簡(jiǎn)直是福音。他們可以很好地理解函數(shù)調(diào)用的工作原理,對(duì)于理解遞歸尤其重要。

錯(cuò)誤提示

如果你運(yùn)行的代碼有語(yǔ)法錯(cuò)誤,這個(gè) IDE 不僅僅會(huì)提示錯(cuò)誤的行,還會(huì)有一個(gè)窗口給出提示和建議:

這段代碼提示的是第4行有語(yǔ)法問(wèn)題,但是如果你看第4行,你肯定會(huì)發(fā)現(xiàn)沒(méi)問(wèn)題。在提示區(qū)就會(huì)告訴我們可能是第2行少了一個(gè)反括號(hào)。這就很人性化了,對(duì)于初學(xué)者來(lái)說(shuō),他可能在第4行上糾結(jié)很久都不知道哪里的問(wèn)題。這個(gè)提示給的是相當(dāng)?shù)牡轿弧?

插件

Thonny 也支持你像其他一些 IDE 一樣安裝插件來(lái)擴(kuò)展你的功能。在“工具”菜單下有一個(gè)“管理插件”的功能,點(diǎn)擊打開(kāi)管理界面,你就可以在輸入框中搜索插件來(lái)進(jìn)行安裝了。你也可以選擇已經(jīng)安裝的插件來(lái)進(jìn)行“升級(jí)”或者“卸載”,都是非常簡(jiǎn)單易懂的操作。

總結(jié)

Thonny 是由愛(ài)沙尼亞的 Tartu 大學(xué)開(kāi)發(fā)的一款基于 Python 的開(kāi)源 IDE,旨在幫助初學(xué)者快速入門(mén) Python。雖然軟件界面很簡(jiǎn)單,但是我覺(jué)得他們非常牛,他們真的是從一個(gè)初學(xué)者的角度去思考如何使用和操作,怎樣讓他們更好地上手,怎樣解決他們?cè)趯W(xué)習(xí)中的一些難題。這種非商業(yè)化的軟件能有如此用心,真可謂難能可貴。

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

若不方便掃碼,搜微信號(hào):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(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".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 = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+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); }