幾個 Python 進階學習的候選名單

提醒:目前最棒的進階學習是 Python Deep Dive 系列課課程,第二屆剛展開,感興趣的朋友,歡迎加入 共學的行列

我以過來人的經驗,強列推薦想進階自己 Python 能力的朋友,去上這系列的課程。

我們在上完第一屆 Python Deep Dive 系列課課程後,討論過幾個可以繼續精進的方向。

目前正在進行的是 Python Design Patterns 設計模式 的課程。

不過主題雖然很好,但講師卻沒能像 Python Deep Dive 的 Dr. Fred Baptiste 一樣,讓我們高度滿意。

所以你可以看到,在前面 Python Design Patterns 設計模式的說明中,我們也列了其他的參考資訊。


What’s Next?

由於 Design Patterns 也即將結束,以下列出幾個繼續精進的學習方向。

1. CS50: Introduction to Computer Science

2. Automate the Boring Stuff with Python Programming

這堂課已經很久了,講師是 Amazon Python 書籍熱門作者 Al Sweigart,Python 排行榜前 50 名中,有四本他的書。

對作者感興趣的朋友,可以參考本文最下方的延伸閱讀 Python 原文書的一點觀察

這堂課的目標很單純,利用 Python 將你懶得自己做的事自動化完成。

在今天,相信搭配 ChatGPT 的協助,可以讓你做事更輕鬆如意。

Automate the Boring Stuff with Python Programming
類別:Development > Programming Languages > Python ║ 內容:9.5 hours ║ 原價:NT$1,990
建立:2015-09-21 ║ 更新:2023-02-01 ║ 註冊:1,107,958人 ║ 語言:English ║ 字幕:有 ║ 評分:4.63 (110,298人)

3. Taking Python to Production: A Professional Onboarding Guide

這堂課是資料科學版主 Howard 兄推薦的,不過他補充說明:這門課程的重點不是 Python,而是相關的軟體工程技能。

Taking Python to Production: A Professional Onboarding Guide
類別:Development > Software Engineering > Linux Command Line ║ 內容:28 hours ║ 原價:NT$1,790
建立:2023-02-19 ║ 更新:2023-10-30 ║ 註冊:409人 ║ 語言:English ║ 字幕:有 ║ 評分:4.85 (42人)

4. Dr. Fred Baptiste 的 YouTube 課程

Python Deep Dive 的講師 Dr. Fred Baptiste 在 YouTube 有個頻道,影片持續更新,有些還沒有開課的主題,可能有研讀的價值。


延伸閱讀

Python Roadmap 學習路線圖

Python 原文書的一點觀察

我看了一下,發表一下個人感想(純個人感想):

  1. For 哈佛 CS50 課程: 其實 哈佛 CS50 課程 for Python 區其實只有兩門課程,一門是講資訊科學,這把年紀了,要我再重學資訊科學扎基礎,我興趣缺缺,而另一門是教 python 語言,課程大綱還不錯,但與之前學過的,重疊性很高,這很像是拚另一門 Python 百日馬,但我跑一遍百日馬就夠了
  2. Python Automation 部分,我之前就有注意過,也很感興趣,畢竟 Python 的支援模組套件多,能有人帶著我們,知道一些好用的套件使用於日常各種情境上,也很有趣。我其實曾在 Udemy 買了另一門這類課程是中文的,但因為買的課多,但平時上班外,時間其實也不多,暨要磨現在上班的程式技術,也要邊繼續學 python,因此課程當時只是先買著,但還沒開始看,是中文的,對岸出的,連結在這裡: https://www.udemy.com/course/python-auto/
    這門課和 Sky 兄貼的推薦的課內容也蠻類似的,都有帶點基礎課程,然後接著就是一些應用的案例,不過比較起來,我較偏向我原先買的這門課,因為相較之下,基礎的內容較少些,直接就切到一些應用案例,再則是中文的,感覺學起來理解更快速些。
  3. For “Taking Python to Production: A Professional Onboarding Guide” 這門課,是還蠻實用的,不過其實講的是比較周邊的部分,比方說如何上傳 Github 及版控,如何打包程式成模組,以及如何做好測試等等,這些都是蠻實用的技術。是可考慮的後期接續課程之一。
    不過我有找到也是類似但是中文的課,如下面這個連結: https://www.udemy.com/course/python-awesome-tools/
    如果以能更省力學習的話,我會更推這門課,畢竟內容相近,但這課是中文的(得念三遍),學起來對我這種英文聽力不是很好的人可能會省力些~

以上只是我純粹的個人感想,沒有任何批判的味道,其實不論學哪個課程,只要有花心思在上面,都能有所收穫。

另外我有找到幾個我個人認為也很不錯的題目,如下面所列的,這些其實是我用 Clean Code,Refactoring 的關鍵字查詢篩選出來的,也提供大家參考:
https://www.udemy.com/course/pythonpython-a/
(這門課有點 Python Deep Dive 味道,但有點精華版的感覺,感覺是把 Python Deep Dive 的課程大綱濃縮到這門課裡,此外它是中文的課程)

https://www.udemy.com/course/python-best-practices-write-clean-python-code/
(這個課程是我找的這幾個裡面最喜歡的一個,可能會趁黑五先買下,它也有點 Python Deep Dive 的味道,但前者較偏向解說,而這門課則較偏向實踐)

https://www.udemy.com/course/python-exercises-for-beginners-solve-coding-challenges/
(這個課程有意思的是,每個小節都是練習題,蠻可以磨練 python 技術的)

https://www.udemy.com/course/python-scientific-x/
(這個和上一個一樣,但是改成以解決科研題目為主的 Python 練習)

https://www.udemy.com/course/discrete-math-with-python-and-javascript/
(最後這門課,其實是 Sky 兄之前推過的 Python 全攻略講師 Wilson Ren 開的課,因為我非資訊科班出身,但據說演算法算是科班人出身的必修學分之一,學好演算法對一些特定的程式問題,能有更好的解決思路,因此我對演算法也高度有興趣,而這門課正好用 Python 在講演算法)
提供大家多一些選擇參考,或許晚上聚會時,可以一起稍微做些討論~

在解決最近發生突然無法收看 Udemy 影片問題之後,剛剛收看之餘,也下定決心把購物車裡擺的這門課( https://www.udemy.com/course/python-best-practices-write-clean-python-code/ )敗下去了,也許後面等設計模式課程結束之後,找時間再來寫些筆記跟大家分享~

1個讚

感謝 @ChrisWei 兄分享!

我還沒有看 Chris 兄分享的這些課程,先把課程資訊列給大家參考:

Python Best Practices: Learn to Write Clean Python Code
類別:Development > Programming Languages > Python ║ 內容:6.5 hours ║ 原價:NT$1,490
建立:2021-01-11 ║ 更新:2023-09-03 ║ 註冊:1,398人 ║ 語言:English ║ 字幕:有 ║ 評分:4.82 (158人)

Python自动化办公+数据爬虫+可视化Web站点
類別:Development > Data Science > Python ║ 內容:42 hours ║ 原價:NT$1,490
建立:2021-04-21 ║ 更新:2021-04-16註冊:77人 ║ 語言:Simplified Chinese ║ 字幕:無 ║ 評分:3.91 (9人)

Python高級課程:如何創建/發佈/維護/參與Opensource Software
類別:Development > Programming Languages > Python ║ 內容:6 hours ║ 原價:NT$1,320
建立:2017-08-15 ║ 更新:2023-07-28 ║ 註冊:879人 ║ 語言:Simplified Chinese ║ 字幕:有 ║ 評分:4.83 (70人)

Python编程的术与道:Python语言进阶
類別:Development > Programming Languages > Python ║ 內容:14 hours ║ 原價:NT$1,790
建立:2022-01-31 ║ 更新:2022-02-01註冊:49人 ║ 語言:Simplified Chinese ║ 字幕:無 ║ 評分:5.00 (2人)

Python Exercises for Beginners: Solve 100+ Coding Challenges
類別:Development > Programming Languages > Python ║ 內容:11 hours ║ 原價:NT$1,490
建立:2021-04-20 ║ 更新:2023-10-27 ║ 註冊:3,039人 ║ 語言:English ║ 字幕:有 ║ 評分:4.62 (287人)

Master Python programming by solving scientific projects
類別:Development > Programming Languages > Python ║ 內容:37 hours ║ 原價:NT$1,990
建立:2020-08-27 ║ 更新:2023-10-31 ║ 註冊:10,398人 ║ 語言:English ║ 字幕:有 ║ 評分:4.67 (1,143人)

離散數學與演算法 (Python, JavaScript)
類別:Teaching & Academics > Math > Discrete Math ║ 內容:32 hours ║ 原價:NT$4,790
建立:2020-09-18 ║ 更新:2023-10-01 ║ 註冊:3,425人 ║ 語言:Traditional Chinese ║ 字幕:有 ║ 評分:4.72 (322人)

延伸閱讀:✨【選課指南】10分鐘學會挑選最熱門的線上課程

1個讚

因為幫 Python 基礎學習的朋友,向 Fred 老師索取 Python 3 Fundamentals 的優惠碼,順便和他說明我們的情形:上完 Python Deep Dive 4 堂課和一堂 Design Patterns。

我請教他對我們的 後續 Python 進階學習,有什麼建議,以下是他的回覆,中譯是 ChatGPT 做的,有空再來檢查潤飾。


Hi Sky,

Wow, congratulations to you and your group! That’s quite a commitment and long hard work to have stuck to it for so long!

哇,恭喜你們團隊!能夠一直堅持下去真是一項不小的承諾和長時間的辛勤工作!

A next step might be to learn async programming using Python’s asyncio library. I would initially skip threading and multi-processing - asyncio is much more useful and relevant for Python (I have a YouTube video that explains the difference between these things).

下一步你可以考慮學習使用 Python 的 asyncio 庫進行非同步編程。一開始我建議略過線程和多進程,因為 asyncio 對於 Python 來說更加有用和相關(我有一個 YouTube 影片解釋這些概念的區別)。

I don’t know of any good courses on asyncio (I have been wanting to create one for a while now, just not getting the time to do it) - but I did like the book “Programmer’s Python: Async” by Mike James. Beware of older YouTube videos (or courses) on asyncio - a lot has changed fairly quickly over the last few years, and I often see quite outdated stuff that is misleading.

我不知道有哪些好的 asyncio 課程(我一直想創建一個,只是一直沒有時間去做) - 但我喜歡 Mike James 的書《Programmer’s Python: Async》。要注意一下關於 asyncio 的舊 YouTube 影片(或課程) - 在過去的幾年裡有很多變化,我經常看到相當過時且誤導的東西。

I also have a few videos on type hinting (basic intro), and dataclasses (two videos, in-depth) that you could check out.

我還有一些有關類型提示(基本介紹)和數據類(兩個影片,深入)的影片,你可以參考一下。

I am generally not a big fan of these design pattern courses - nothing wrong with design patterns per se, except that it sometimes stops developers from thinking critically about a problem and coming up with their own, sometimes far more appropriate and context specific, solutions. These design patterns sometimes are also just too academic - they’re great generalizations of certain ideas, but that’s also their weakness - they are too generalized and often make your code far more complex than it needs to be. But the ideas they demonstrate are good to know as you write your own code.

我一般不是那麼喜歡這些設計模式的課程 - 設計模式本身沒有問題,只是有時它會阻止開發者對問題進行批判性思考,並提出自己的解決方案,有時這些解決方案可能更加合適且特定於上下文。這些設計模式有時候也太學術化了 - 它們是對某些思想的很好的概括,但這也是它們的弱點 - 它們太過於泛化,往往使代碼變得比實際需要更複雜。但它們展示的思想在你編寫自己的代碼時是不錯的了解。

I would highly recommend that you actually start writing Python projects - maybe you could do that as a group - that would also expose you to using collaborative development tools such as git (and GitHub, or GitLab, both of which have totally free usage tiers). You could basically collaborate on some project. That way you get to use the Python you learned, and then start learning more things as you start adding functionality such as databases, querying external resources, looking for 3rd party libraries to help out, etc. I think you would benefit a lot from coming doing something like this - it will probably be difficult at first because you’ll suddenly be facing trying to work with other tools that may not even be Python specific, but which can be used from within Python.

我強烈建議你實際開始編寫 Python 項目 - 也許你可以作為一個團隊來做 - 這也會讓你接觸使用協作開發工具,如 git(以及 GitHub 或 GitLab,這兩者都有完全免費的使用層級)。你可以基本上共同開發一個項目。這樣你就可以使用你學到的 Python,然後在添加功能時開始學習更多東西,比如數據庫、查詢外部資源、尋找第三方庫等。我認為你會從這樣的做法中受益很多 - 起初可能會有一些困難,因為你突然要開始使用可能甚至不是 Python 特定的其他工具,但這些工具可以從 Python 中使用。

I guess it depends on your specific goals - but if it is becoming software engineers, you’ll need to move beyond just programming languages. So things like git, various databases (postgres, redis, mongoDB for example), queues (elasticMQ, RabbitMQ for example), Docker, and other tools which software engineers have to use to build an entire application - and best way to start learning them is to start using them - it’s a bit challenging at first, but you quickly become acustomed to them, as well as gaining the ability to more quickly learn new topics as you need them. As I said though, it depends on your specific goals - maybe it’s AI, in which case what I just said may not apply immediately, and you’d be better served learning about the various Python based AI libraries that are available first. Or maybe you want to write REST APIs, in which case you would want to study the Pydantic library (I have a course coming on taht shortly), asyncio, and the FastAPI framework. So, it kind of depends on where your interests lie.

我猜這取決於你的具體目標 - 但如果你的目標是成為軟件工程師,你需要超越只是編程語言。諸如 git、各種數據庫(例如 postgres、redis、mongoDB)、隊列(例如elasticMQ、RabbitMQ)、Docker 和其他軟件工程師必須使用的工具來構建整個應用程序 - 開始學習它們的最佳方式就是開始使用它們 - 起初可能有點挑戰,但你很快就會適應它們,並且獲得更快地學習新主題的能力。儘管如此,這取決於你的具體目標 - 也許是 AI,那麼我剛才說的可能不立即適用,你最好首先了解一下可用的各種基於 Python 的 AI 庫。或者也可能是你想編寫 REST API,那麼你會想學習 Pydantic 庫(我即將推出一門課程),asyncio 和 FastAPI 框架。所以,這有點取決於你的興趣所在。

Anyways, good luck on your continuing journey! - and let me know if you have more questions, or some specific set of goals/interests in mind.

無論如何,祝你在你的學習之旅上好運!如果有更多問題,或者有特定的目標/興趣,請隨時告訴我。

Best regards!

Fred.


我把上述 Fred 老師提到的主題,以影片/原始碼的方式並列在下方,方便大家查閱:

Fred 老師提及的 YouTube 影片(依提及次序):

  • AsyncIO(41:05)

  • type hinting(36:32)

  • dataclasses I(1:07:41)

  • dataclasses II(1:12:32)

  • Pydantic:有兩則影片。如果大家感興趣,我建議等老師的課程上架後,再一起精進。

AsyncIO

補充:老師提及的書 Mike James 的書《Programmer’s Python: Async》

https://www.amazon.com/Programmers-Python-processes-Something-Completely/dp/1871962765

提醒:本書電子版 雖然便宜許多,但它的版面是固定的(不會隨著螢幕大小改變換行處,你可以想像成 pdf 檔),不方便觀看。

type hinting (basic intro)

裡面的 type-hinting.ipynb

dataclasses (two videos, in-depth)

裡面的 dataclasses_part_1.ipynb & dataclasses_part_2.ipynb

實作是王道

開始實作,如果是團隊共同開發一個專案,還能學習到程式語言外的協作開發工具,例如 git(GitHub 或 GitLab,這兩者都有完全免費的使用層級)。然後在開始增加功能(例如資料庫、查詢外部資源、第三方函式庫等)時,學習到更多東西。

延伸閱讀:我對共同學習的一些想法

以終為始

作為一個程式設計師,你要學會的,絕不只是一種程式語言而已。

例如 git、各種資料庫(例如 postgres、redis、mongoDB)、佇列(例如 elasticMQ、RabbitMQ)、Docker,以及程式設計師必須用來建立整個應用程式的其他工具。

開始學習它們的最佳方式就是開始使用它們。

一開始有點挑戰性,但你很快就會習慣它們,並且能夠在需要時更快地學習新主題。

Pydantic

如果想編寫 REST API,最好學習 Pydantic 庫(我很快就會開設課程)、asyncio 和 FastAPI 框架。

在老師的 Pydantic 課程上線前,可以先看老師 YouTube 頻道的這兩部影片:

裡面的 pydantic.ipynb

裡面的 Migrating to Pydantic V2.ipynb

AI

如果想學 AI,最好先了解各種可用的基於 Python 的人工智慧庫。

我們曾共學過基於 Python 的人工智慧庫:

✅ 【共筆】OpenAI Python API 共學課程:進度、筆記和錄影

2️⃣ 【共筆】Mastering OpenAI Python APIs:進度、筆記和錄影

✅【共筆】fast.ai Practical Deep Learning:進度、筆記和錄影