Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
1世紀(jì)必備技能中,計(jì)算機(jī)、開車無(wú)疑成了必修,而口才、英語(yǔ)、撩妹可能還要因人而異。今天小編給大家匯總了和游戲結(jié)合的編程學(xué)習(xí)平臺(tái),讓這門枯燥的課程盡量變得有趣。有適合作為入門的編程游戲,還有些可能需要有不錯(cuò)的編程功底才能所向披靡。
需要說(shuō)明的是,不少都是國(guó)外的,好像被打臉了,菜鳥還是先去百度下怎么翻墻吧。
先詳細(xì)介紹15個(gè)平臺(tái),其他相關(guān)的只羅列。
Codecademy
訂閱: 免費(fèi)
語(yǔ)言: HTML/CSS, Python, PHP, Ruby, APIs, Javascript, jQuery
針對(duì)級(jí)別: 初學(xué)者
這個(gè)平臺(tái)是互聯(lián)網(wǎng)上最熱門、或許也是獲得贊譽(yù)最多的游戲化學(xué)習(xí)平臺(tái)。重要的是,它是完全免費(fèi)的。
這個(gè)平臺(tái)囊括了包括Javascript、jQuery、HTML/CSS、Python、PHP、Ruby和APIs等諸多語(yǔ)言的教學(xué),總計(jì)有100種課程,每種都包含5到20節(jié)課。盡管譬如web與游戲設(shè)計(jì)之類的復(fù)雜內(nèi)容也有涉及,但這個(gè)平臺(tái)主要針對(duì)的是完全不了解什么是“if語(yǔ)句”的初學(xué)者。Codecademy有一套徽章和成就系統(tǒng),學(xué)習(xí)者完成的課程越多,就能獲得越多的徽章和點(diǎn)數(shù)。
Codes chool
訂閱: 付費(fèi)
課程: Ruby, JavaScript, HTML/CSS, Python, iOS, Git, Databases, Electives
針對(duì)級(jí)別: 中級(jí)水準(zhǔn)到經(jīng)驗(yàn)豐富的開發(fā)者
Code school的座右銘:“最好的學(xué)習(xí)方式就是實(shí)踐”。它與Codecademy的不同之處在于:Code school將視頻內(nèi)容、在瀏覽器中編程以及游戲化結(jié)合在一起,完美地搭配起來(lái)。與Codecademy類似,Code school也會(huì)向?qū)W習(xí)者發(fā)放徽章、點(diǎn)數(shù)與成就。重要的是:這個(gè)平臺(tái)是與Open Badges合作的,而后者會(huì)收集許多來(lái)自不同平臺(tái)的徽章,并將其展示給更多人。
Treehouse
訂閱: 付費(fèi)(有免費(fèi)試用)
課程: Android, C#, CSS, Databases, Design, Development, Digital Literacy, Game Development, HTML, iOS, JavaScript, PHP, Flask, Swift, Python, Ruby, WordPress, Java, Web Design, PHP, WordPress, 包括研討會(huì)及課程。
針對(duì)級(jí)別: 初學(xué)者到高級(jí)水平的開發(fā)者
除了徽章、成就與視頻之外,Treehouse還提供了測(cè)試。此外,學(xué)習(xí)者還能參加編程挑戰(zhàn)——必須快速將之前在視頻中所學(xué)到的內(nèi)容運(yùn)用出來(lái)。觀看視頻與完成測(cè)試都能獲取點(diǎn)數(shù)與徽章,Treehouse的終極任務(wù)是幫助潛在的雇主查看應(yīng)聘者的職業(yè)技能。
CodinGame
訂閱: 免費(fèi)
課程: C, C++, Java, C#, PHP, Python, Ruby, Javascript, Objective-C, Go, Haskell, Scala, Perl, Dart, Bash, Pascal, Groovy, Clojure, VB.NET, Lua, F#, OCami, Swift, Rust
針對(duì)級(jí)別: 初學(xué)者到高級(jí)水平的開發(fā)者
大多數(shù)游戲化平臺(tái)都使用了徽章、成就與點(diǎn)數(shù)系統(tǒng),但CodinGame則不然,它在學(xué)習(xí)過(guò)程中使用了真正的游戲。與Codecademy等平臺(tái)不同,CodinGame對(duì)學(xué)習(xí)者的獎(jiǎng)勵(lì)是內(nèi)在性質(zhì)的。其課程包含20多種編程語(yǔ)言,一切都是實(shí)時(shí)的,學(xué)習(xí)者在瀏覽器上編程的同時(shí),就能看到屏幕一角的游戲界面。
CodeCombat
訂閱: 免費(fèi)/特殊級(jí)別付費(fèi)(9.99美元)
課程: Python, JavaScript
針對(duì)級(jí)別: 初學(xué)者到中級(jí)水平的開發(fā)者
與CodinGame類似,Codewars也是通過(guò)實(shí)際游戲讓學(xué)習(xí)者學(xué)習(xí)編程的。游戲的部分是按照幻想RPG動(dòng)漫游戲的風(fēng)格來(lái)設(shè)計(jì)的,屏幕分為兩部分,分別是代碼編輯器與迷宮游戲——有一系列命令操縱用戶的化身小人,如果代碼輸入錯(cuò)誤,就會(huì)扣掉一定的生命點(diǎn)數(shù),錯(cuò)誤太多的話,小人就會(huì)死掉。每個(gè)級(jí)別包含不同的任務(wù),比如搜集寶石、打敗怪獸以及找出通往下一關(guān)的路。
Checkio
訂閱: 免費(fèi)
課程: Python
針對(duì)級(jí)別: 高級(jí)開發(fā)者
這個(gè)平臺(tái)的課程只限于Python編程語(yǔ)言,學(xué)習(xí)者可以通過(guò)完成挑戰(zhàn)來(lái)學(xué)習(xí)編程,不過(guò)還有另一個(gè)目標(biāo):在整個(gè)社區(qū)中分享疑難編程問(wèn)題,以尋求解決方案。Checkio希望開發(fā)者與其他社區(qū)成員分享問(wèn)題,以便群策群力,共同解決問(wèn)題。Checkio讓用戶真正解決編程問(wèn)題,而Codecademy就如Avramenko所稱:只能讓大家讀讀代碼。
FightCode
訂閱: 免費(fèi)
課程: JavaScript
針對(duì)級(jí)別: 初學(xué)者
這個(gè)平臺(tái)的主要目標(biāo)是通過(guò)機(jī)器人創(chuàng)建讓用戶學(xué)習(xí)JavaScript,學(xué)習(xí)者需要?jiǎng)?chuàng)建一個(gè)機(jī)器人,來(lái)?yè)魯呈值臋C(jī)器人,創(chuàng)建每個(gè)新機(jī)器人都能讓用戶提高自己的JavaScript技能。這個(gè)平臺(tái)有游戲排行榜,用戶可以追蹤到自己的進(jìn)步與成就。到目前為止,已經(jīng)有2.7萬(wàn)個(gè)機(jī)器人參與了游戲。
Robocode
訂閱: 免費(fèi)
課程: Java
針對(duì)級(jí)別: 初學(xué)者到高級(jí)開發(fā)者
Robocode平臺(tái)同樣需要學(xué)習(xí)者創(chuàng)建東西,打敗敵手,不過(guò)這次換成了坦克,使用的語(yǔ)言是Java和.NET,戰(zhàn)斗實(shí)時(shí)顯示在屏幕上,創(chuàng)建一臺(tái)坦克很快也很容易,但想要將它改造成一臺(tái)殺戮機(jī)器,則需要數(shù)千行代碼。如果這臺(tái)坦克寫得很糟糕,就更容易被擊傷。
Code Hunt
訂閱: 免費(fèi)
課程: Java與C#
針對(duì)級(jí)別: 初學(xué)者到高級(jí)開發(fā)者
這個(gè)看起來(lái)很有意思的游戲化平臺(tái)是由微軟研究院開發(fā)的,為大家學(xué)習(xí)Java和C#提供了平臺(tái)。一開始用戶可能會(huì)誤以為游戲的目標(biāo)是“尋找、存儲(chǔ)并獲取盡可能多的代碼片段”,但稍后就會(huì)明白,關(guān)鍵在于以優(yōu)雅的方式改寫代碼片段,以便返回預(yù)期的結(jié)果。此外,這也是一個(gè)創(chuàng)建私人與公共游戲的機(jī)會(huì),每個(gè)游戲都是基于一組(且僅一組)參數(shù)。
Dungeons and Developers(地下城與開發(fā)者)
訂閱: 免費(fèi)
課程: HTML, CSS, AJAX, jQuery, APIs等等
針對(duì)級(jí)別: 中級(jí)到高級(jí)的開發(fā)者
對(duì)RPG游戲的愛(ài)好者來(lái)說(shuō),看到這個(gè)標(biāo)題就會(huì)想起一款經(jīng)典的RPG游戲《龍與地下城》(D&D),猜得沒(méi)錯(cuò)!與這款游戲類似,這個(gè)游戲化平臺(tái)的創(chuàng)建者使用技能樹來(lái)展示用戶的進(jìn)步情況。在技能樹上的每個(gè)技能點(diǎn)都有自己獨(dú)特的圖標(biāo),這些技能包括HTML、CSS、AJAX等等。
Ruby Warrior(Ruby戰(zhàn)士)
訂閱: 免費(fèi)
課程: Ruby on Rails
針對(duì)級(jí)別: 中級(jí)開發(fā)者
在這里可以學(xué)到Ruby編程知識(shí),就如名稱暗示的那樣,游戲中的戰(zhàn)士小人必須戰(zhàn)斗并開啟下一關(guān),其中得分越多越好,并且每個(gè)關(guān)卡都會(huì)增加新功能。通過(guò)游戲,學(xué)習(xí)者可以提高自己關(guān)于循環(huán)、條件及其它方面的知識(shí)了解,不妨一試。
Hack n Slash
訂閱: 通過(guò)Steam
課程: 黑客技術(shù)
針對(duì)級(jí)別: 初學(xué)者
這個(gè)平臺(tái)的游戲靈感來(lái)自于塞爾達(dá)系列——通過(guò)在游戲中對(duì)屬性進(jìn)行重調(diào),讓用戶學(xué)到編程的概念。用戶需要重寫游戲代碼,并根據(jù)需要進(jìn)行調(diào)整。在游戲中,可以調(diào)整的內(nèi)容包括生物的行為、與世界互動(dòng)的方式?;旧蟻?lái)說(shuō),這款游戲無(wú)需遵循規(guī)則。
Code Wars
課程:Ruby,JavaScript,Coffeescript,計(jì)劃中Python,Java,PHP,和Objective-C等
針對(duì)級(jí)別:初學(xué)者到高級(jí)開發(fā)者
雖然你在Code Wars上不會(huì)帶上法師的帽子,但是你可以通過(guò)完成kata,或者編程挑戰(zhàn)來(lái)收集點(diǎn)數(shù)獲得升級(jí)。一個(gè)kata可以由不同的語(yǔ)言完成,這樣你就可以很好的理解不同的語(yǔ)言如何完成同樣的任務(wù)。
這個(gè)以武術(shù)/武士為主題的系統(tǒng)充滿了樂(lè)趣和吸引力–每次當(dāng)你完成了一個(gè)kata,你將會(huì)得到榮譽(yù)點(diǎn)數(shù)。收集足夠的榮譽(yù)點(diǎn)數(shù)使你提升到下個(gè)級(jí)別,解鎖更多的編程挑戰(zhàn)。你也可以通過(guò)編寫自己的kata,評(píng)論別人的kata,或者推薦你的朋友來(lái)到Code Wars獲取榮譽(yù)點(diǎn)數(shù)。
這些挑戰(zhàn)都非常有趣和實(shí)用,并且Code Wars是唯一一個(gè)教你測(cè)試你自己代碼的站點(diǎn)。但是這里的說(shuō)明信息很少,所以請(qǐng)做好大量google解決問(wèn)題的準(zhǔn)備。雖然這是一個(gè)緩慢的過(guò)程,但是它確實(shí)是一個(gè)學(xué)習(xí)真正寫代碼是什么樣子的好方法。
它不像Code Combat那么傻瓜式,但是支持更多的語(yǔ)言,并且對(duì)于初學(xué)者來(lái)說(shuō)更加成熟。Code Wars也擁有一個(gè)很強(qiáng)力的社區(qū),它能夠幫助初學(xué)者入門并且堅(jiān)持下去。并且升級(jí)和獲得聲望獎(jiǎng)勵(lì)對(duì)自己也是一種鼓勵(lì)!
Screeps
訂閱: 免費(fèi)
課程: JavaScript
Screeps 是一個(gè)為 JavaScript 程序員準(zhǔn)備的大型多人在線游戲(MMO)。
這個(gè)游戲是一個(gè)開放的策略游戲,游戲中你控制的單位被稱為 creeps ,它可以幫你獲得資源、建立自己的領(lǐng)地等等。作為一個(gè)多人在線游戲,意味著你的 creeps 會(huì)被其他 creeps 所包圍。
通過(guò)編寫 JavaScript 來(lái)控制你的 creeps 。(Screeps=scripting your creeps)。學(xué)習(xí)如果玩該游戲,你可以查看文檔。
代碼坦克(CodeTank)
課程:JavaScript程序員及學(xué)習(xí)者
代碼坦克是一款相當(dāng)有趣且極具挑戰(zhàn)性的編程對(duì)戰(zhàn)游戲,也是全球首個(gè)JavaScript程序員的在線編程對(duì)戰(zhàn)游戲,由騰訊AlloyTeam和HTML5夢(mèng)工場(chǎng)聯(lián)合出品,這個(gè)在線坦克仿真游戲平臺(tái),采用HTML5、Javascript、CSS3、NodeJS、MongoDB等Web技術(shù)來(lái)構(gòu)建一個(gè)基于互聯(lián)網(wǎng)的在線智能坦克機(jī)器人戰(zhàn)斗仿真引擎。
代碼坦克用游戲的方式進(jìn)行編程語(yǔ)言學(xué)習(xí),很有趣,玩家只能通過(guò)JavaScript語(yǔ)言來(lái)編寫屬于自己的坦克機(jī)器人, 并用代碼和算法讓坦克動(dòng)起來(lái),并更具戰(zhàn)斗力。
其他類似的網(wǎng)站:
· Git Game?—這是一個(gè)終端游戲,用來(lái)考察你的 Git 命令知識(shí)?。
· Elevator Saga?—?你的任務(wù)是使用 JavaScript 編程控制電梯的運(yùn)動(dòng)。目標(biāo)是要高效地接送乘客。
· CodeChef?—?在這里你可以解決實(shí)際問(wèn)題、參加不同的比賽,這些比賽每月都會(huì)進(jìn)行。
· Hacker.org 這里有一系列的謎題和測(cè)試,可以用來(lái)測(cè)試你的編程知識(shí)。為了通過(guò)這一系列的測(cè)試,你需要解決問(wèn)題并做很多的分析工作。
· Pex forfun?—?這是微軟開發(fā)的一個(gè)游戲,在這個(gè)游戲中你需要和其他的程序員進(jìn)行比拼。而代碼就是你的武器。
· Rankk?—?你需要解決一系列由易到難的問(wèn)題。這個(gè)游戲是對(duì) Pyramid 游戲的復(fù)刻,Pyramid里面有很多邏輯和數(shù)學(xué)問(wèn)題。
· TopCoder?—?在這個(gè)游戲里你不光可以解決問(wèn)題,還可以獲取真金白銀。來(lái)自全世界知名IT公司的程序員在這里互相挑戰(zhàn),為的就是贏得他們的獎(jiǎng)品。
· Google Code Jam?—?Google 大賽上已經(jīng)解決的算法問(wèn)題。在這里你可以自己試一試。
· Python Challenge—?玩家可以通過(guò) Python 編程解決問(wèn)題并提升等級(jí)。
· 《程序員該知道的那些編程比賽網(wǎng)站》
· 《寓教于樂(lè):Vim大冒險(xiǎn)游戲》:玩游戲,學(xué)習(xí) Vim
解謎
· Lumosity?—?一組能夠訓(xùn)練大腦的游戲,由科學(xué)家和游戲設(shè)計(jì)師一同開發(fā)。
· ALGorithm Geeks?—?一個(gè)交流討論算法的 Google 群組。
· CodeKata?—妙趣橫生的編程問(wèn)題。
· LessThanDot?—?一個(gè)專門論壇,程序員在這里發(fā)布一些比較困難的編程挑戰(zhàn)。
· The Daily WTF?—?類似BYOD(Bring Your Own Device)模式,不過(guò)這里是BYOD(Bring Your Own Code)程序員們編寫他們自己的代碼片段放在這里,用來(lái)解決一些比較困難的問(wèn)題。
· Peking University JudgeOnline for ACIP/ICPC?—?這里包含了不同比賽中涉及到的不同的問(wèn)題。你可以實(shí)時(shí)的解決問(wèn)題并且查看結(jié)果,你的答案也會(huì)被驗(yàn)證是否正確。
· University of Valladolid Online Judge?—與北京大學(xué)OJ平臺(tái)類似,但是包含了不同的問(wèn)題。
· Programming Praxis—這個(gè)博客每周都會(huì)出一些新的編程問(wèn)題。
· Project Euler?—?包含了很多復(fù)雜的數(shù)學(xué)問(wèn)題,這讓發(fā)燒友們感到非常開心。
編程練習(xí)
· 4Clojure?—?在這里你可以通過(guò)解決一些不同難易程度的問(wèn)題來(lái)學(xué)習(xí) Clojure 。
· Prolog Problems?—?你可以在這里練習(xí)邏輯編程。
· Ruby Quiz?—每周 Ruby 謎題。
· Codingbat?—?由很多 Java 和 Python 的習(xí)題(難度各有不同)。
· Cyber-dojo?—?在這里,你可以在在線評(píng)分系統(tǒng)的監(jiān)督下進(jìn)行編程練習(xí)。
· Sphere Online Judge?—?各種各樣的編程問(wèn)題。
· Code Wars?—?8 種編程語(yǔ)言教學(xué)。
· Rosalind?—?通過(guò)解決實(shí)際問(wèn)題來(lái)學(xué)習(xí)算法和生物信息學(xué)。
面試前的準(zhǔn)備練習(xí)
· LeetCode?—這個(gè)網(wǎng)站是為了幫助程序員準(zhǔn)備面試而創(chuàng)建的。在這里你可以找到不同領(lǐng)域的典型問(wèn)題。
· Career Cup?—?程序員面試時(shí)最容易被問(wèn)到的真實(shí)問(wèn)題。
在編程領(lǐng)域,尤其是Python這樣的高級(jí)語(yǔ)言中,字符串格式化不僅是數(shù)據(jù)與信息傳遞的橋梁,更是代碼整潔、優(yōu)雅的基石。試想,倘若程序中的字符串猶如未經(jīng)雕琢的原石 ,雜亂無(wú)章地嵌入各種變量與數(shù)據(jù),代碼將如同迷宮般難以閱讀和理解。反之,若運(yùn)用得當(dāng)?shù)淖址袷交夹g(shù),能使代碼行云流水,意蘊(yùn)清晰,宛如一幅精心布局的織錦 ,讓每一位審閱者都能迅速把握其脈絡(luò),輕松進(jìn)行修改與擴(kuò)展。
以一個(gè)簡(jiǎn)單的例子來(lái)揭示其魅力:假設(shè)有兩個(gè)變量 name 和 age ,分別存儲(chǔ)著一個(gè)人的姓名和年齡。傳統(tǒng)的拼接方式可能如下:
message="My name is " + name + " and I am " + str(age) + " years old."
而使用字符串格式化后,這段代碼可以簡(jiǎn)化為:
message=f"My name is {name} and I am {age} years old."
后者不僅更簡(jiǎn)潔,且直觀地展現(xiàn)了各部分?jǐn)?shù)據(jù)的對(duì)應(yīng)關(guān)系 ,提升了代碼的可讀性。當(dāng)需要調(diào)整消息格式或添加更多屬性時(shí),只需在相應(yīng)位置稍作改動(dòng),無(wú)需牽一發(fā)而動(dòng)全身,大大增強(qiáng)了代碼的維護(hù)性。
在現(xiàn)實(shí)世界的應(yīng)用場(chǎng)景中,字符串格式化扮演著至關(guān)重要的角色。無(wú)論是日志記錄、數(shù)據(jù)分析報(bào)告、用戶界面輸出,還是API響應(yīng)、數(shù)據(jù)庫(kù)查詢結(jié)果,乃至Web頁(yè)面的動(dòng)態(tài)內(nèi)容生成,都離不開對(duì)數(shù)據(jù)進(jìn)行精準(zhǔn)、美觀的格式化處理。
例如 ,在數(shù)據(jù)分析項(xiàng)目中,我們可能需要定期生成包含圖表與關(guān)鍵統(tǒng)計(jì)數(shù)據(jù)的報(bào)告郵件。借助字符串格式化,可以輕松整合各類數(shù)據(jù)并按預(yù)設(shè)樣式呈現(xiàn):
summary=f"""
<!DOCTYPE html>
<html>
<head>
<title>Data Analysis Report</title>
</head>
<body>
<h1>Weekly Sales Overview</h1>
<p>Total sales: ${total_sales:,}</p>
<p>Average order value: ${avg_order_value:.2f}</p>
<img src="data:image/png;base64,{chart_base64}" alt="Sales Trend Chart">
</body>
</html>
"""
上述代碼展示了如何利用f-string將總銷售額、平均訂單價(jià)值等數(shù)值精確格式化,并嵌入HTML郵件模板中。同時(shí),還以Base64編碼的方式插入了動(dòng)態(tài)生成的銷售趨勢(shì)圖表。這種高度定制化的信息呈現(xiàn)方式,無(wú)疑提升了數(shù)據(jù)的可視化效果與溝通效率。
通過(guò)這些實(shí)例 ,我們深刻感受到字符串格式化對(duì)于提升代碼質(zhì)量、實(shí)現(xiàn)高效數(shù)據(jù)交互以及打造優(yōu)質(zhì)用戶體驗(yàn)的關(guān)鍵作用。接下來(lái)的文章將進(jìn)一步探討Python中字符串格式化的演變歷程、詳細(xì)用法、實(shí)戰(zhàn)應(yīng)用以及高級(jí)技巧,幫助讀者全面掌握這一核心技能。
在早期Python版本中,百分號(hào)(%)符號(hào)作為主要的字符串格式化手段。該機(jī)制借鑒了C語(yǔ)言的printf風(fēng)格,通過(guò)特定的占位符和類型指示符匹配變量值。例如,要將整數(shù)和浮點(diǎn)數(shù)格式化到字符串中,我們可以這樣做:
age=30
pi_value=3.1415926535
print("I am %d years old, and pi is approximately %.2f." % (age, pi_value))
這里,%d用于整數(shù),%.2f則限制浮點(diǎn)數(shù)到兩位小數(shù)。
除了基本類型的格式化外,%操作符還能處理更為復(fù)雜的結(jié)構(gòu),比如元組和字典。考慮如下案例:
person=('Alice', 27, 'Engineer')
salary_info={'name': 'Bob', 'age': 32, 'job': 'Manager', 'salary': 60000}
# 元組格式化
print("Name: %s, Age: %d" % person)
# 字典格式化(需配合**運(yùn)算符)
print("Name: %(name)s, Age: %(age)d, Job: %(job)s, Salary: $%(salary)d" % salary_info)
隨著Python 2.6版本的發(fā)布,.format()方法被引入 ,為字符串格式化帶來(lái)了更大的靈活性。此方法允許通過(guò)花括號(hào) {} 來(lái)指定位置索引或關(guān)鍵字參數(shù)。下面是一些基本用法:
name="Alice"
age=30
print("Hello, {}! You are {} years old.".format(name, age)) # 位置參數(shù)
print("Greetings, {name}! Your age is {age}.".format(name=name, age=age)) # 關(guān)鍵字參數(shù)
.format() 方法支持混合使用位置參數(shù)和關(guān)鍵字參數(shù),使得開發(fā)者能夠更加靈活地組織格式化字符串:
first_name="Eve"
last_name="Smith"
print("{1}, {0}. Welcome!".format(first_name, last_name)) # 位置索引
print("{lname}, {fname}! Today's special offer is for you.".format(fname=first_name, lname=last_name)) # 關(guān)鍵字參數(shù)
.format() 還提供了強(qiáng)大的對(duì)齊和填充功能,以及數(shù)字格式化選項(xiàng)。例如:
balance=12345.6789
print("Balance: {:>10,.2f}".format(balance)) # 右對(duì)齊,寬度10,逗號(hào)分隔,保留兩位小數(shù)
在實(shí)際項(xiàng)目中,.format()可用于創(chuàng)建更復(fù)雜的消息模板,如郵件內(nèi)容或報(bào)告摘要:
report_date="2022-01-01"
sales_total=50000
profit_margin=0.35
email_body="""
Dear Team,
Our sales report for {report_date} shows a total of ${sales_total:,.2f} in revenue with a profit margin of {:.2%}.
Best Regards,
Finance Department
""".format(report_date, sales_total, profit_margin)
Python 3.6版引入了f-string,這是一種全新的字符串格式化方式,它直接在字符串前加上字母"f"或"F" ,然后在花括號(hào)內(nèi)編寫表達(dá)式。這樣既提高了代碼可讀性,又簡(jiǎn)化了格式化過(guò)程:
product="Widget"
quantity=100
price_per_item=19.99
total_cost=f"The total cost for {quantity} {product}(s) at ${price_per_item:.2f} each is ${quantity * price_per_item:.2f}."
print(total_cost)
f-string的強(qiáng)大之處在于可以直接嵌入任意Python表達(dá)式,實(shí)時(shí)計(jì)算并插入結(jié)果:
name="Charlie"
greeting=f"Hello, {name.title()}! Today is {datetime.datetime.now():%Y-%m-%d}."
print(greeting)
相較于%操作符和.format()方法 ,f-string的主要優(yōu)勢(shì)包括:
在循環(huán)、條件語(yǔ)句中 ,f-string能夠便捷地進(jìn)行動(dòng)態(tài)輸出:
for i in range(1, 6):
print(f"{i}: {(i ** 2):>5}") # 輸出右對(duì)齊,寬度5的平方數(shù)
通過(guò)以上章節(jié),我們追溯了Python字符串格式化的演進(jìn)歷程 ,從原始的%操作符到現(xiàn)代化的f-string,每一步都是為了更好地服務(wù)于程序員的需求,提高代碼質(zhì)量與開發(fā)效率。后續(xù)章節(jié)將進(jìn)一步深入探討各方法的細(xì)節(jié)及其在實(shí)戰(zhàn)中的應(yīng)用。
在百分號(hào)(%)格式化時(shí)代,整數(shù)、浮點(diǎn)數(shù)和字符串的格式化遵循各自的規(guī)則。整數(shù)通常使用 %d 占位符,浮點(diǎn)數(shù)則用 %f 表示 ,而字符串則直接用 %s 替換。還可以通過(guò)附加標(biāo)志和精度說(shuō)明來(lái)進(jìn)一步控制輸出格式:
age=37
pi=3.1415926535
name="Alice"
# 整數(shù)格式化
print("Age: %d" % age) # 輸出:Age: 37
# 浮點(diǎn)數(shù)格式化,保留兩位小數(shù)
print("Pi: %.2f" % pi) # 輸出:Pi: 3.14
# 字符串格式化
print("Name: %s" % name) # 輸出:Name: Alice
對(duì)于復(fù)雜數(shù)據(jù)結(jié)構(gòu),如元組和字典 ,可以利用索引或鍵值對(duì)它們進(jìn)行格式化:
person_tuple=("Alice", 37, "Engineer")
person_dict={"name": "Bob", "age": 42, "job": "Manager"}
# 元組格式化
print("Name: %s, Age: %d" % person_tuple)
# 字典格式化
print("Name: %(name)s, Age: %(age)d" % person_dict)
.format() 方法提供了豐富的數(shù)字格式化選項(xiàng),包括正負(fù)號(hào)顯示、對(duì)齊方式、填充字符、千位分隔符以及精度控制等。例如:
income=?50000.0
expenses=30000.0
# 顯示貨幣值,保留兩位小數(shù) ,使用逗號(hào)分隔千位
print("Income: ${:,.2f}".format(income))
print("Expenses: ${:,.2f}".format(expenses))
# 控制浮點(diǎn)數(shù)精度,左對(duì)齊,填充空格
print("{:<10.3f}".format(math.pi))
對(duì)齊與填充字符功能使得格式化后的字符串在視覺(jué)上更整齊有序??梢栽O(shè)置左對(duì)齊、右對(duì)齊或居中對(duì)齊 ,并指定填充字符:
# 右對(duì)齊,寬度10,填充字符為'*'
print("{:>10s}".format("Hello"))
# 居中對(duì)齊 ,寬度20,填充字符為'-'
print("{:^20s}".format("World"))
.format() 方法支持在同一字符串中進(jìn)行多重和嵌套格式化 ,這對(duì)于構(gòu)建復(fù)雜消息或模板特別有用:
# 多重格式化
print("First: {}, Second: {}".format("A", "B"))
# 嵌套格式化
print("Inner: {0:{width}s}, Outer: {1:{width}s}".format("InnerText", "OuterText", width=10))
f-string極大地簡(jiǎn)化了在循環(huán)和條件語(yǔ)句中進(jìn)行字符串格式化的操作。直接在花括號(hào)內(nèi)編寫表達(dá)式,結(jié)果會(huì)實(shí)時(shí)計(jì)算并插入到字符串中:
numbers=[1, 2, 3, 4, 5]
for num in numbers:
print(f"Square of {num} is {num ** 2}")
f-string可以直接調(diào)用函數(shù)和訪問(wèn)對(duì)象屬性,無(wú)需額外的字符串拼接或格式化操作:
def get_full_name(first_name, last_name):
return f"{first_name} {last_name}"
person={"first_name": "Alice", "last_name": "Smith"}
print(get_full_name(person["first_name"], person["last_name"]))
由于f-string是在運(yùn)行時(shí)直接解析并執(zhí)行表達(dá)式的,因此在多線程環(huán)境下,它們具有較高的安全性,不會(huì)因數(shù)據(jù)競(jìng)爭(zhēng)導(dǎo)致意外結(jié)果。此外,f-string通常比其他格式化方法具有更好的性能,因?yàn)樗鼈儽苊饬伺R時(shí)字符串對(duì)象的創(chuàng)建和拼接。
通過(guò)本章的詳細(xì)解析 ,我們深入了解了Python中各種字符串格式化方法的特性和用法,這些知識(shí)將成為我們?cè)趯?shí)際編程中提升代碼質(zhì)量和效率的重要工具。后續(xù)章節(jié)將探討這些方法在實(shí)戰(zhàn)中的應(yīng)用,以及如何結(jié)合第三方庫(kù)和模板引擎進(jìn)一步增強(qiáng)字符串格式化功能。
在軟件開發(fā)中,日志是追蹤系統(tǒng)行為、排查錯(cuò)誤和優(yōu)化性能的重要手段。不同的字符串格式化方法在日志記錄上有各自的優(yōu)勢(shì)。
假設(shè)有一個(gè)簡(jiǎn)單的日志記錄場(chǎng)景,我們需要記錄用戶登錄信息:
import logging
# 定義日志器
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
# 使用%操作符記錄日志
username="Alice"
login_time="2022-05-01 12:00:00"
logging.info("User '%s' logged in at %s", username, login_time)
# 使用.format()方法記錄日志
logging.info("User '{}' logged in at {}.", username, login_time)
# 使用f-string記錄日志
logging.info(f"User '{username}' logged in at {login_time}.")
在復(fù)雜環(huán)境中,日志記錄可能會(huì)涉及大量數(shù)據(jù),此時(shí)可以通過(guò)靈活的字符串格式化來(lái)動(dòng)態(tài)調(diào)整日志詳細(xì)程度。例如 ,僅在調(diào)試模式下顯示完整的堆棧跟蹤:
debug_mode=True
error_message="An unexpected error occurred."
if debug_mode:
detailed_log=f"Error details: {traceback.format_exc()}"
else:
detailed_log="Debug mode disabled; no stack trace available."
logging.error(f"{error_message}\n{detailed_log}")
在數(shù)據(jù)庫(kù)操作中,字符串格式化可以幫助我們構(gòu)建SQL查詢語(yǔ)句,并將查詢結(jié)果整理成易于理解和展示的形式。例如 ,使用SQLite數(shù)據(jù)庫(kù)進(jìn)行查詢:
import sqlite3
conn=sqlite3.connect('my_database.db')
cursor=conn.cursor()
# 使用?占位符構(gòu)建安全的SQL查詢(防止SQL注入)
query="SELECT * FROM users WHERE username=?"
params=("JohnDoe",)
cursor.execute(query, params)
# 獲取并格式化查詢結(jié)果
rows=cursor.fetchall()
formatted_rows=["ID: {}, Username: {}, Email: {}".format(row[0], row[1], row[2]) for row in rows]
print("\n".join(formatted_rows))
# 使用f-string或其他格式化方式也可以在生成報(bào)告時(shí)進(jìn)行結(jié)果美化
for user_data in rows:
print(f"User ID: {user_data[0]}, Username: {user_data[1]}, Email: {user_data[2]}")
conn.close()
制作報(bào)表時(shí),往往需要將原始數(shù)據(jù)庫(kù)數(shù)據(jù)轉(zhuǎn)換成符合人眼閱讀習(xí)慣的格式。例如,將金額數(shù)據(jù)格式化為帶逗號(hào)的數(shù)字:
# 假設(shè)是從數(shù)據(jù)庫(kù)獲取的一列收入數(shù)據(jù)
incomes=[1234567.89, 9876543.21, 4567890.12]
# 使用.format()方法進(jìn)行格式化
formatted_incomes=["${:,.2f}".format(amount) for amount in incomes]
# 或使用f-string進(jìn)行格式化
formatted_incomes_f_string=[f"${amount:,.2f}" for amount in incomes]
print("Formatted incomes:\n", "\n".join(formatted_incomes_f_string))
在Web開發(fā)中 ,經(jīng)常需要將Python對(duì)象轉(zhuǎn)換為JSON格式的字符串:
import json
user_data={"username": "Alice", "age": 30, "city": "New York"}
# 使用json.dumps()方法進(jìn)行序列化
json_response=json.dumps(user_data, indent=4)
print(f"JSON response: \n{json_response}")
# 或者結(jié)合f-string輸出API響應(yīng)
response_status=200
response_body=json.dumps(user_data)
api_response=f"HTTP/1.1 200 OK\nContent-Type: application/json\n\n{response_body}"
print(api_response)
在構(gòu)建動(dòng)態(tài)網(wǎng)頁(yè)時(shí),字符串格式化技術(shù)與模板引擎相結(jié)合,能夠?qū)崿F(xiàn)HTML內(nèi)容的動(dòng)態(tài)生成。例如,使用Jinja2模板引擎:
from jinja2 import Template
template=Template("""
<html>
<body>
<h1>Welcome, {{ username }}!</h1>
<p>You have {{ message_count }} unread messages.</p>
</body>
</html>
""")
context={"username": "Bob", "message_count": 12}
rendered_html=template.render(context)
print(rendered_html)
通過(guò)以上章節(jié)的實(shí)戰(zhàn)示例,我們可以看出Python字符串格式化在實(shí)際項(xiàng)目中的廣泛應(yīng)用 ,它不僅簡(jiǎn)化了數(shù)據(jù)處理流程,也提升了代碼的可讀性和維護(hù)性。后續(xù)章節(jié)將介紹如何根據(jù)不同場(chǎng)景選擇最優(yōu)的字符串格式化方式,以及在遵循PEP8規(guī)范的前提下,確保字符串格式化的安全性和性能表現(xiàn)。
為了探究Python中不同字符串格式化方法的性能差異,我們進(jìn)行了一系列基準(zhǔn)測(cè)試。以下是一些典型的測(cè)試場(chǎng)景和結(jié)果:
場(chǎng)景一:簡(jiǎn)單字符串替換
import timeit
# 測(cè)試代碼
test_code="""
name="Alice"
age=30
# %操作符
s1="My name is %s, and I am %d years old." % (name, age)
# .format()方法
s2="My name is {name}, and I am {age} years old.".format(name=name, age=age)
# f-string
s3=f"My name is {name}, and I am {age} years old."
"""
# 執(zhí)行測(cè)試并打印結(jié)果
print(timeit.timeit(test_code, number=1000000))
結(jié)果顯示,f-string在簡(jiǎn)單字符串替換場(chǎng)景中速度最快 ,其次是.format()方法 ,%操作符相對(duì)較慢。
場(chǎng)景二:復(fù)雜嵌套與循環(huán)
import timeit
# 測(cè)試代碼
test_code="""
data=[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 35}]
# %操作符
s1=""
for item in data:
s1 +="Name: %s, Age: %d\n" % (item["name"], item["age"])
# .format()方法
s2="\n".join(["Name: {item[name]}, Age: {item[age]}" for item in data])
# f-string
s3="\n".join([f"Name: {item['name']}, Age: {item['age']}" for item in data])
"""
# 執(zhí)行測(cè)試并打印結(jié)果
print(timeit.timeit(test_code, number=10000))
在處理復(fù)雜嵌套和循環(huán)時(shí),f-string依然表現(xiàn)出較好的性能 ,但與其他兩種方法的差距縮小。.format()方法次之 ,%操作符在此場(chǎng)景下性能相對(duì)落后。
雖然f-string在多數(shù)情況下展現(xiàn)出優(yōu)越的性能,但在實(shí)際編程中,選擇字符串格式化方法時(shí)還需綜合考慮以下幾個(gè)因素:
總之,選擇字符串格式化方法應(yīng)視具體應(yīng)用場(chǎng)景、項(xiàng)目需求和團(tuán)隊(duì)規(guī)范而定。了解每種方法的優(yōu)缺點(diǎn)和適用場(chǎng)景,有助于做出最適合項(xiàng)目的決策。
PEP8是Python官方推薦的代碼風(fēng)格指南。針對(duì)字符串格式化,PEP8提出以下建議:
字符串格式化過(guò)程中,如果不正確地處理用戶輸入,可能導(dǎo)致安全漏洞 ,如SQL注入或命令注入。遵循以下原則可降低風(fēng)險(xiǎn):
遵循PEP8規(guī)范和安全編碼原則 ,不僅能提升代碼質(zhì)量,還能有效防范潛在的安全風(fēng)險(xiǎn)。在實(shí)踐中靈活運(yùn)用這些技巧,將使Python字符串格式化更加得心應(yīng)手。
在Python標(biāo)準(zhǔn)庫(kù)中,str.format_map()方法允許我們使用一個(gè)映射對(duì)象作為參數(shù) ,以便更靈活地處理字符串格式化。這種方法尤其適用于自定義對(duì)象 ,它可以自動(dòng)查找并獲取對(duì)象的屬性值。例如,假設(shè)我們有一個(gè)自定義類Person:
class Person:
def __init__(self, first_name, last_name, age):
self.first_name=first_name
self.last_name=last_name
self.age=age
# 創(chuàng)建一個(gè)Person對(duì)象
person=Person("Alice", "Smith", 30)
# 使用str.format_map()結(jié)合dict進(jìn)行格式化
data={"first_name": "Alice", "last_name": "Smith", "age": 30}
formatted_str="{first_name} {last_name}, {age} years old".format_map(data)
print(formatted_str) # 輸出:Alice Smith, 30 years old
# 直接使用自定義對(duì)象
custom_map=vars(person)
formatted_str_with_obj="{first_name} {last_name}, {age} years old".format_map(custom_map)
print(formatted_str_with_obj) # 輸出:Alice Smith, 30 years old
Python內(nèi)置的collections.namedtuple可以創(chuàng)建帶有命名字段的不可變?cè)M,非常適合與str.format_map()結(jié)合使用。這不僅提高了代碼的可讀性,而且簡(jiǎn)化了格式化操作:
from collections import namedtuple
PersonTuple=namedtuple("Person", ["first_name", "last_name", "age"])
person=PersonTuple("Alice", "Smith", 30)
# 使用namedtuple與format_map結(jié)合
formatted_str="{first_name} {last_name}, {age} years old".format_map(person._asdict())
print(formatted_str) # 輸出:Alice Smith, 30 years old
在大型項(xiàng)目和Web開發(fā)中,模板引擎如Jinja2提供了更強(qiáng)大的字符串格式化能力。Jinja2允許我們創(chuàng)建可復(fù)用的模板,并在其中嵌入變量、條件判斷、循環(huán)等多種邏輯:
from jinja2 import Template
# 創(chuàng)建一個(gè)Jinja2模板
template=Template("""
<h1>Hello, {{ first_name }} {{ last_name }}!</h1>
<p>You are {{ age }} years old.</p>
{% if has_children %}
<p>You have {{ children|length }} children.</p>
{% endif %}
""")
# 定義數(shù)據(jù)
data={
"first_name": "Alice",
"last_name": "Smith",
"age": 30,
"has_children": True,
"children": ["Emily", "James"]
}
# 渲染模板
output=template.render(data)
print(output)
類似地 ,在Django框架中,模板系統(tǒng)也是字符串格式化的一種強(qiáng)大工具。它同樣支持變量、循環(huán)、條件標(biāo)簽以及其他高級(jí)特性 ,使得視圖層與展示層分離,提高代碼組織性和可維護(hù)性:
<!-- templates/greeting.html -->
{% extends "base.html" %}
{% block content %}
<h1>Hello, {{ first_name }} {{ last_name }}!</h1>
<p>You are {{ age }} years old.</p>
{% if has_children %}
<ul>
{% for child in children %}
<li>{{ child }}</li>
{% endfor %}
</ul>
{% endif %}
{% endblock %}
在這個(gè)示例中 ,Django視圖層會(huì)傳遞一個(gè)包含所有必要數(shù)據(jù)的上下文給模板,并由模板負(fù)責(zé)渲染最終的HTML字符串。
通過(guò)結(jié)合Python標(biāo)準(zhǔn)庫(kù)和其他第三方模板引擎,我們可以充分利用其提供的強(qiáng)大功能來(lái)增強(qiáng)字符串格式化的能力 ,從而適應(yīng)更廣泛的應(yīng)用場(chǎng)景和更高的開發(fā)需求。在實(shí)際開發(fā)中 ,選擇合適的方法至關(guān)重要,既能保證代碼質(zhì)量,又能提高工作效率。
Python字符串格式化歷經(jīng)了從%操作符到.format()方法,再到f-string(Formatted String Literals)的革新歷程。%操作符作為早期的格式化手段 ,通過(guò)類型替換符提供基礎(chǔ)的字符串替換功能;.format()方法的引入帶來(lái)了參數(shù)位置與關(guān)鍵字參數(shù)的靈活性,以及對(duì)齊、填充、數(shù)字格式等高級(jí)控制;f-string憑借其簡(jiǎn)潔的語(yǔ)法、動(dòng)態(tài)表達(dá)式嵌入能力和與其他格式化方式的諸多優(yōu)勢(shì),已成為現(xiàn)代Python代碼中的首選。每一代格式化方式都在前人的基礎(chǔ)上提升了代碼可讀性、維護(hù)性及效率,滿足了日益復(fù)雜的數(shù)據(jù)展示與交互需求。
掌握多種字符串格式化方式,不僅有助于提升代碼質(zhì)量、適應(yīng)不同項(xiàng)目需求,還能在實(shí)際應(yīng)用中發(fā)揮重要作用。在日志記錄與調(diào)試中,靈活運(yùn)用各種格式化方法可生成結(jié)構(gòu)清晰、內(nèi)容豐富的日志信息,便于問(wèn)題定位;在數(shù)據(jù)庫(kù)查詢與結(jié)果輸出場(chǎng)景中,格式化技術(shù)助力構(gòu)建高效查詢語(yǔ)句 ,美化報(bào)表數(shù)據(jù);在Web開發(fā)與API響應(yīng)中 ,通過(guò)JSON序列化、HTML模板渲染 ,實(shí)現(xiàn)數(shù)據(jù)與界面的無(wú)縫對(duì)接。理解并運(yùn)用這些技術(shù),有利于提升開發(fā)者在實(shí)際工作中的生產(chǎn)力。
展望未來(lái),Python字符串格式化將繼續(xù)沿著簡(jiǎn)潔、高效、安全的道路發(fā)展。f-string作為當(dāng)前主流,有望引入更多特性以應(yīng)對(duì)復(fù)雜場(chǎng)景,如支持異步編程、增強(qiáng)類型提示等。同時(shí),第三方庫(kù)與模板引擎將持續(xù)集成創(chuàng)新功能 ,與標(biāo)準(zhǔn)庫(kù)形成互補(bǔ),為開發(fā)者提供更多樣化的解決方案。隨著Python生態(tài)的繁榮,字符串格式化技術(shù)將在社區(qū)驅(qū)動(dòng)下持續(xù)進(jìn)化,為構(gòu)建高質(zhì)量、高性能的軟件系統(tǒng)提供堅(jiān)實(shí)支撐。在不斷變化的技術(shù)浪潮中,與時(shí)俱進(jìn)地掌握并運(yùn)用這些工具,是每一位Python開發(fā)者提升專業(yè)素養(yǎng)、適應(yīng)行業(yè)發(fā)展所不可或缺的。
趣是最好的老師,HelloGitHub 就是幫你找到興趣!
分享 GitHub 上有趣、入門級(jí)的開源項(xiàng)目。
這是一個(gè)面向編程新手、熱愛(ài)編程、對(duì)開源社區(qū)感興趣 人群的月刊,月刊的內(nèi)容包括:各種編程語(yǔ)言的項(xiàng)目、讓生活變得更美好的工具、書籍、學(xué)習(xí)筆記、教程等,這些開源項(xiàng)目大多都是非常容易上手,而且非常 Cool。主要是希望大家能動(dòng)手用起來(lái),加入到開源社區(qū)中。
在瀏覽、參與這些項(xiàng)目的過(guò)程中,你將學(xué)習(xí)到更多編程知識(shí)、提高編程技巧、找到編程的樂(lè)趣。
最后 HelloGitHub 這個(gè)項(xiàng)目就誕生了
以下為本期內(nèi)容|每個(gè)月 28 號(hào)發(fā)布最新一期
1、goaccess:實(shí)時(shí) Web 日志分析工具
2、u6a:函數(shù)式編程語(yǔ)言 Unlambda 的一個(gè)樸素實(shí)現(xiàn),包含字節(jié)碼編譯器和解釋器。此項(xiàng)目可以幫助初學(xué)者理解函數(shù)式編程的思想,并提供了實(shí)現(xiàn)函數(shù)式編程語(yǔ)言解釋器的一些樸素思路。
3、Netch:一款 Windows 平臺(tái)的開源游戲加速工具
4、ScheduleMasterCore:一款基于 .NET Core 開發(fā)的分布式任務(wù)調(diào)度系統(tǒng)。支持豐富的調(diào)度類型、靈活可控的系統(tǒng)參數(shù)、簡(jiǎn)易的 UI 操作、支持多節(jié)點(diǎn)高可用、業(yè)務(wù) API 集成等等特性。同時(shí)支持多樣化的部署方式,容易上手
5、HandyControl:一套 WPF 控件庫(kù)。它幾乎重寫了所有原生樣式,同時(shí)包含 70 余款自定義控件。支持跨平臺(tái)、國(guó)際化,適用于 MVVM 架構(gòu)開發(fā),扁平化設(shè)計(jì)、支持動(dòng)態(tài)更換主題和背景色。豐富的自定義控件解決了 View 設(shè)計(jì)的痛點(diǎn),讓程序員更加專注于業(yè)務(wù)邏輯的開發(fā)
6、CnC_Remastered_Collection:EA 發(fā)布的《紅警》和《泰伯利亞黎明》游戲源代碼
7、chinessChess:基于 Qt5 開發(fā)的中國(guó)象棋網(wǎng)絡(luò)對(duì)戰(zhàn)平臺(tái),支持單機(jī)和網(wǎng)絡(luò)對(duì)戰(zhàn)
8、grmon:Goroutine 的命令行監(jiān)控工具
9、HackChrome:Go 語(yǔ)言實(shí)現(xiàn)的從 Chrome 中獲取自動(dòng)保存的用戶名密碼工具。目前僅支持 Windows Chrome 中存儲(chǔ)的密碼,但是很有意思還可以學(xué)習(xí)怎么用 Go 調(diào)用 DLL 動(dòng)態(tài)鏈接庫(kù)的姿勢(shì)
10、seaweedfs:一款基于 Go 開發(fā)的部署方便、使用簡(jiǎn)單且強(qiáng)大的分布式文件系統(tǒng)
11、fate:起中文名工具,去吧!算名先生
12、JApiDocs:一個(gè)無(wú)需額外注解、開箱即用的 SpringBoot 接口文檔生成工具。特性:
13、PowerJob:基于 Akka 架構(gòu)的新一代分布式任務(wù)調(diào)度與計(jì)算框架。支持 CRON、API、固定頻率、固定延遲等調(diào)度策略,支持單機(jī)、廣播、MapReduce 等多種執(zhí)行模式,支持在線任務(wù)治理與運(yùn)維,提供 Shell、Python、Java 等功能豐富的任務(wù)處理器,提供工作流來(lái)編排任務(wù)解決依賴關(guān)系,使用簡(jiǎn)單,功能強(qiáng)大,文檔齊全。同類產(chǎn)品對(duì)比:
14、react-trello:任務(wù)狀態(tài)管理面板組件。實(shí)現(xiàn)了拖拽方式管理任務(wù)狀態(tài),點(diǎn)擊即可編輯任務(wù)內(nèi)容
15、perfume.js:用于測(cè)量第一個(gè) dom 生成的時(shí)間、用戶最早可操作時(shí)間和組件的生命周期性能的庫(kù)。示例代碼:
perfume.start('fibonacci');
fibonacci(400);
perfume.end('fibonacci');
// Perfume.js: fibonacci 0.14 ms
16、Mongood:MongoDB 圖形化的管理工具。特性:
17、TimeCat:一款 JS 的網(wǎng)頁(yè)錄屏工具。參考了游戲錄像的原理而實(shí)現(xiàn)的渲染引擎,生成的錄像文件只有傳統(tǒng)視頻的百分之一!還可以在錄制語(yǔ)音的同時(shí)自動(dòng)生成字幕,導(dǎo)出的視頻文件可以跨端播放。目前已經(jīng)開發(fā)一段時(shí)間,后續(xù)還將實(shí)現(xiàn)更多有意思的功能,歡迎持續(xù)關(guān)注。
18、react-visual-editor:基于 React 組件的可視化拖拽、搭建頁(yè)面的代碼生成工具。所見(jiàn)即所得,可以完美還原 UI 設(shè)計(jì)搞,并支持多款型號(hào)手機(jī)(可配置)和 PC 效果展示,模板功能可以使你分享你的頁(yè)面或者頁(yè)面中局部任何部分組件組合,減少相似頁(yè)面的重復(fù)操作。效果如下:
19、elevator.js:一個(gè) back to top 返回頂部的插件。如他的名字一樣,網(wǎng)頁(yè)在返回頂部過(guò)程中像電梯向上運(yùn)行,當(dāng)頁(yè)面返回到頂部時(shí),會(huì)有電梯“到達(dá)”的提示音。叮~頁(yè)面已到達(dá)頂部
20、code6:一款 GitHub 代碼泄露監(jiān)控系統(tǒng),通過(guò)定期掃描 GitHub 發(fā)現(xiàn)代碼泄露行為。特性:
21、rich:一個(gè)讓你的終端輸出變得“花里胡哨”的三方庫(kù)。我的一位前輩告訴我,不要整那些花里胡哨的主題和樣式,這是在自尋煩惱??墒浅兼霾坏桨。@么好看的終端輸出,讓我的心情都愉悅起來(lái)了。瞧那性感的語(yǔ)法高亮、整齊的表格、舒服的顏色、進(jìn)度條等,一切都是值得的
22、poetry:Python 虛擬環(huán)境、依賴管理工具。依賴管理工具有很多,我相上了它有三點(diǎn):通過(guò)單文件 pyproject.toml 便可輕松的區(qū)別安裝、管理開發(fā)和正式環(huán)境、有版本鎖定可方便回滾、輸出界面簡(jiǎn)單清爽。當(dāng)然它還是個(gè)“新生兒”,嘗鮮的風(fēng)險(xiǎn)還是有的,選擇須謹(jǐn)慎
23、free-python-games:真入門級(jí)的 Python 游戲集合庫(kù)。都是簡(jiǎn)單的小游戲:貪吃蛇、迷宮、Pong、猜字等,運(yùn)行方便、代碼簡(jiǎn)單易懂。用游戲開啟的你 Python 學(xué)習(xí)之旅,玩完再學(xué)源碼,其樂(lè)無(wú)窮啊。安裝運(yùn)行:
pip install freegames
python -m freegames.snake # freegames.游戲名
24、py2sec:一款輕量級(jí)跨平臺(tái) Python “加密”、加速的腳本工具。原理是基于 Cython 將 .py 編譯成 run-time libraries 文件:.so(Linux && Mac)或 .pyd(Win),一定程度上實(shí)現(xiàn)了“加密”保護(hù)源代碼的功能。參數(shù)詳解如下:
-v, --version 顯示 py2sec 版本
-h, --help 顯示幫助菜單
-p, --pyth Python 的版本,默認(rèn)為你的 Python 命令綁定的 Python 版本
-d, --directory Python 項(xiàng)目路徑(如果使用 -d 參數(shù),將編譯整個(gè) Python 項(xiàng)目)
-f, --file Python文件(如果使用 -f,將編譯單個(gè) Python 文件)
-m, --maintain 標(biāo)記你不想編譯的文件或文件夾路徑
-x --nthread 編譯啟用的線程數(shù)
-q --quiet 靜默模式,默認(rèn) False
-r --release Release 模式,清除所有中間文件,只保留加密結(jié)果文件,默認(rèn) False
python py2sec.py -f test.py
python py2sec.py -f example/test1.py -r
python py2sec.py -d example/ -m test1.py,bbb/
25、oxfs:一個(gè)基于 sftp 協(xié)議的 fuse 網(wǎng)絡(luò)文件系統(tǒng),功能上類似于 sshfs。特性:
Swift 項(xiàng)目
26、Aerial:炫酷的蘋果系統(tǒng)屏保項(xiàng)目。該屏保視頻取材自蘋果零售店 Apple TV 的專用屏保,航拍質(zhì)量超棒,快換上試試吧。直接下載 Aerial.saver.zip 文件,解壓后雙擊文件“即可食用”
27、shan-shui-inf:自動(dòng)生成一副山水畫
28、kuboard-press:一款基于 Kubernetes 的微服務(wù)管理界面。包含文檔、教程、管理界面和實(shí)戰(zhàn)分享
29、vscode-rainbow-fart:一款在你編程時(shí)花式夸你的 VSCode 擴(kuò)展插件??梢愿鶕?jù)代碼關(guān)鍵字,播放貼近代碼意義的真人語(yǔ)音,并且有一個(gè)醒目的項(xiàng)目名字“彩虹屁”
30、flink-training-course:Flink 視頻直播教程回放集合
31、raft-zh_cn:《分布式 Raft 一致性算法論文》中文翻譯
32、GitHub-Chinese-Top-Charts:每周更新一次的 GitHub 中文項(xiàng)目排行榜
33、go-ast-book:《Go語(yǔ)法樹入門:開啟自制編程語(yǔ)言和編譯器之旅》
34、Surprise:一款簡(jiǎn)單易用基于 Python scikit 的推薦系統(tǒng)。如果你想用 Python 上手做一套推薦系統(tǒng),那你可以試試它
35、djl:亞馬遜開源的一款基于 Java 語(yǔ)言的深度學(xué)習(xí)框架。對(duì)于 Java 開發(fā)者而言,可以在 Java 中開發(fā)及應(yīng)用原生的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型,同時(shí)簡(jiǎn)化了深度學(xué)習(xí)開發(fā)的難度。通過(guò) DJL 提供直觀的、高級(jí)的 API,Java 開發(fā)人員可以訓(xùn)練自己的模型,或者利用數(shù)據(jù)科學(xué)家用 Python 預(yù)先訓(xùn)練好的模型來(lái)進(jìn)行推理。如果您恰好是對(duì)學(xué)習(xí)深度學(xué)習(xí)感興趣的 Java 開發(fā)者,那么這個(gè)項(xiàng)目完全對(duì)口。運(yùn)行效果如下:
36、data-science-ipython-notebooks:數(shù)據(jù)科學(xué)的 IPython 集合。包含:TensorFlow、Theano、Caffe、scikit-learn、Spark、Hadoop、MapReduce、matplotlib、pandas、SciPy 等方方面面
如果你發(fā)現(xiàn)了 GitHub 上有趣的項(xiàng)目,歡迎在 HelloGitHub 項(xiàng)目提 issues 告訴我們。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。