原创 API 設計最佳實踐(簡版)

Restful API 本文簡稱API,是一個種面向資源的架構。在Restful中一個API對應一個資源,資源可以是文本,圖片,視頻等。API特徵有如下: 每一個URI代表一種資源 客戶端和服務器之間,傳遞這種資源的某種表現層 客戶端通

原创 Python上下文管理器的高級使用

在文件處理和網絡編程時,對於打開的文件不管最後內容處理是否符合預期都要在結束時關閉文件。這時常見的處理方法是try catch finally 的方法 f = open("demo.txt", "a") try: f = ope

原创 Python中節省內存的方法之二:弱引用weakref

弱引用和引用計數息息相關,在介紹弱引用之前首先簡單介紹一下引用計數。 引用計數 Python語言有垃圾自動回收機制,所謂垃圾就是沒有被引用的對象。垃圾回收主要使用引用計數來標記清除。 引用計數:python中變量名和數據之間使用引用來建立

原创 Python中減少內存消耗的方法之一:__slots__屬性

Python是一門動態語言,可以在運行過程中,修改實例的屬性和增刪方法。任何實例都包含一個字典__dict__,該字典保存了實例所有的屬性和方法。Python也通過這個字典可以將任意屬性綁定到實例上。 有時候在實例的生命週期中處於安全等考

原创 一個Python中優雅的數據分塊方法

背景 看到這個標題你可能想一個分塊能有什麼難度?還值得細說嗎,最近確實遇到一個有意思的分塊函數,寫法比較巧妙優雅,所以寫一個分享。 日前在做需求過程中有一個對大量數據分塊處理的場景,具體來說就是幾十萬量級的數據,分批處理,每次處理100個

原创 《天才源自刻意練習》讀書筆記

刻意練習的重要性: 本章是議論文典型的論證環節,羅列了許多名人的例子,如莫扎特、伍茲,傑克.韋爾奇、比爾蓋茨、巴菲特等。主要說明這些成功人士取得成績之前就接觸該行業很久了,併爲之刻苦練習了很多年。 刻意練習的陷阱: 日常工作肯定不是刻意練

原创 作爲一名Python開發,我談Linux和mac的使用體驗

我是一名Python開發,在2018.7~2021.6使用的是Linux系統 Deepin OS 作爲自己的開發系統;在2021.7~至今使用的是 mac OS 系統作爲開發系統。 Deepin OS是我使用過的最好的Linux系統沒有之

原创 有效提升Python代碼性能的三個層面

使用python進入一個熟練的狀態之後就會思考提升代碼的性能,尤其是python的執行效率還有很大提升空間(委婉的說法)。面對提升效率這個話題,python自身提供了很多高性能模塊,很多大牛開發出了高效第三方包,可謂是百花齊放。下面根據我

原创 Flask小知識集合

全局變量g的使用 flask在上下文中提供了四種變量,分別是: 變量名 上下文 說明 current_app 應用上下文 當前激活程序的程序實例 g 應用上下文 處理請求時用作臨時存儲的對象。每次請求都會重設這個變量

原创 Flask中本地代理的使用

本地代理 當請求到來時應用上下文和程序上下文被推入本地棧中,全局變量current_app,request,g,session都可以使用了。以current_app爲例,current_app代表的是app這個程序實例,但和app並不是同

原创 Flask中本地棧的使用

4種上下文變量 承接上一篇內容。當一個請求到來時,除了request被封裝成全局變量之外,還有三個變量也是同樣被封裝成全局變量,那就是current_app、g、session。上面4個變量之所以能夠使用,是因爲程序上下文生效了。 上下文

原创 Flask中請求數據的優雅傳遞

當一個請求到來時,瀏覽器會攜帶很多信息發送發送服務端。在Django中,每一個處理函數都要傳入一個request的參數,該參數攜帶所有請求的信息,也就是服務端程序封裝的environ(不明白該參數可以參見上一篇flask初探之WSGI)。

原创 Flask依賴的核心模塊werkzeug

Flask的web框架實現 Flask是python Web框架,自然要遵 WSGI 規範,需要同時實現服務端程序+應用程序,並且要豐富完善請求和響應的處理。 Flask自身並沒有實現WSGI,而是依賴werkzeug來實現WSGI程序。

原创 Flask初探之WSGI

Flask是一個使用 Python 編寫的輕量級 Web 應用框架。較其他同類型框架更爲靈活、輕便、安全且容易上手。它可以很好地結合MVC模式進行開發,小型團隊在短時間內就可以完成功能豐富的中小型網站。另外,Flask還有很強的定製性,用

原创 被數據庫延遲加載坑了一把

背景 目前做Flask開發用的數據庫框架是peewee。peewee查詢時默認是延遲加載,也就是說一個查詢語句不會立刻將所有結果返回,而是等到使用這個查詢結果時才真正從數據庫中查詢出來。在這樣一個背景下,就踩了這個坑。 過程 按照我需要處理