Python3
最近在對接 Python3 寫的項(xiàng)目甩牺,也從中學(xué)習(xí)一些 Python3 的風(fēng)格窖逗〗鹂常總的來說局蚀,Python3 就是向靜態(tài)編程語言靠攏,比如以下幾個特性:
Typing
def greeting(name: str) -> str:
return 'Hello ' + name
是不是有種 C 語言即時感恕稠?只是把類型指定放在變量后面至会。
配合Typing
模塊使用
from typing import List
Vector = List[float]
def scale(scalar: float, vector: Vector) -> Vector:
return [scalar * num for num in vector]
這種使用方法雖然驟眼看上去好像比較不直觀了,比如你可能在某個程序中看到 Vector 類型要去回溯具體定義谱俭,但是在大型程序編寫中可以提高代碼的可讀性(后期已經(jīng)對 Vector 這個類型非常熟悉了)。
Variable Annotations
captain: str # Note: no initial value!
初始化變量宵蛀,C 語言即時感昆著。
mypy
值得注意的是,雖然 Python3 提供了這種類似靜態(tài)語言的變量類型提示术陶,但是實(shí)際上并不檢查凑懂。但可以通過 mypy 這種類似 pylint 的靜態(tài)代碼檢查工具,通過類型提示對 python3程序進(jìn)行檢查梧宫。
Python 測試模塊 Mock 功能
https://pythonguidecn.readthedocs.io/zh/latest/writing/tests.html
其中 Unittest 應(yīng)該是比較常見的測試模塊接谨,文章最后介紹了 unittest 集成的 mock 功能,可以在單元測試的時候直接代替一些函數(shù)或者方法塘匣,能夠?qū)崿F(xiàn)不修改源碼脓豪、甚至不用修改配置文件的情況下完成單元測試。
如這個例子就是把 Calculator
類中的sum
方法替換掉忌卤,變成一個返回值始終是9
的函數(shù)扫夜。
from unittest import TestCase
from unittest.mock import patch
class TestCalculator(TestCase):
@patch('main.Calculator.sum', return_value=9)
def test_sum(self, sum):
self.assertEqual(sum(2,3), 9)
這個還是比較好玩的,對于寫單元測試提供方便的 mock 功能驰徊。
Git 重寫提交 commit 的歷史
https://www.atlassian.com/git/tutorials/rewriting-history
有三種方法可以實(shí)現(xiàn)笤闯,但是要注意不要用在已經(jīng) push 到服務(wù)器的分支上,否則會引起其他開發(fā)者的分支混亂棍厂。(除了這個分支只有你一個人在開發(fā)的情況颗味,可以用git push -f 強(qiáng)行變更遠(yuǎn)程分支)
- git commit --amend 把當(dāng)前修改合并到上一次提交
- git rebase 可用于修改任意歷史記錄,合并壓縮 commit牺弹,減少歷史 commit 來達(dá)到“美化”效果浦马。
- git reflog 可以查到所有回滾、刪除的 commit 信息张漂,并通過 reset 回到對應(yīng)的分支上捐韩。(這個方法更像回滾操作多一點(diǎn))
發(fā)現(xiàn)在 Git 中有可能會用到的功能是根據(jù)時間進(jìn)行回滾和比較。
git diff master@{0} master@{1.day.ago}
『淺入淺出』MySQL 和 InnoDB
https://draveness.me/mysql-innodb
上周分享事務(wù)的文章同個博客的 MySQL 介紹文章鹃锈,作為非專業(yè) MySQL 玩家的查漏補(bǔ)缺荤胁。
Octotree 插件用于瀏覽 Github 代碼
(支持 Chrome、Safari 等主流瀏覽器)
https://github.com/buunguyen/octotree
可以將 Github 上的項(xiàng)目的源碼在左側(cè)欄展示代碼結(jié)構(gòu)屎债,方便瀏覽仅政,類似各大 IDE 的代碼目錄垢油。