用 google 來協助寫程式

Kiwi lee
ccClub
Published in
6 min readMay 1, 2018

--

前言

前面的基礎課程教會了大家 python 這個語言的特性,也帶各位認識了 python 的 package numpy,在未來中會有更多好用的 package 我們將介紹給大家。注意我這邊使用的是 “介紹”,因為相較於基礎課程,python package 的學習,我們更講究的是方法尋找的能力。

課堂上我們會教導你這個套件主要的功能,如 numpy 主要處理矩陣、pandas 則像是 python 版的 excel,一些關於套件的概要介紹,不會涵蓋所有的 function,因為說實在的,如我也不會將全部的 function 記下來,只會記住最重要的核心,而其他有些功能背下來只會佔腦袋空間。

所以我們在課堂上教大家的是,知道套件主要的功能為何,基本的 function 有哪些,其他的就交給網路來告知我們吧。寫程式時,google 會協助我們找到解法,Stackoverflow 是我們的好朋友。

延伸閱讀-1:勇敢做唯一的自己:台大教授郭瑞祥的人生管理學 中的 人生管理第 3 課 走出去吧!勇敢投資自己,迎向未來
內文如下:
「上課的學習,就像是告訴你什麼是雞蛋、什麼麵粉;而下課後的作業,則是要勾起你的好奇心,讓你試試看,若把雞蛋、麵粉混和,是會變成蛋糕或義大利麵?在結果出來之前,沒人知道你會玩出什麼花樣,這不正是樂趣的所在?」

延伸閱讀-2:工程師寫 Code 的聰明省力法:Google 一次我可以寫 10 行程式碼

Search

How to search

  1. 明確化你的目標
  2. 正確的在 google 下對關鍵字
  3. 一個一個點開網站找解法,並套用。但不要直接 copy-paste,同樣情況的任務不會出現兩次,所以要去思考解法的來由
  4. 最後我會將我的問題及解法用 markdown 語法簡單的記錄起來(範例在下面會提到)

延伸閱讀-1:Essential Copying and Pasting From Stack Overflow

延伸閱讀-2:SlideShare- Markdown可以做什麼

Where to search

  1. Stackoverflow
    最主要找尋的地方,類似 programmer版的知識+
  2. Github issue
    通常 python package 的原始碼(source code) 都會放在 github 上,若有問題,有些人也會在這個平台發問。
    例如:https://github.com/numpy/numpy/issues
  3. CSDN: 大陸的程式部落格

Example

下面的範例是我之前想要用 sqlalchemy 將資料載入到 pandas.Dataframe 的格式中,但我不想先轉成 dict 再轉成 pandas.Dataframe,所以想查找看看有沒有辦法優化。

  1. Why

Want to read data from sql database directily without any transform or boring work

簡易描述我的目標

2. How

1. 因為我不知道在 pandas 的語法有沒有,所以我先查有沒有更快速的方法將 sqlalchemy 的資料轉換進 pandas.Dataframe,我下的關鍵字是 sqlalchemy pandas dataframe 就是這麼簡單的就找到我要的。

2. 通常在 stackoverflow 只會獲得一個 function 名字,所以有時我會直接去找對應這個 function 的官方文件,以求更貼近我要的功能

3. 如上點所述, Stackoverflow 只有寫
df = pd.read_sql(query.statement, query.session.bind)
相對的在 pandas 的官方文件中則補上了相關的參數資訊
pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)

3. Sample code on sqlalchemy

  • Add ‘statement’ after sqlalchemy query
  • session.bind is your sql_link
pd.read_sql(
session.query(Complaint).filter(Complaint.id == 2).statement,
session.bind
)

簡單的記錄我對於 function 的了解

4. Other

  • read_sql_table
    Read SQL database table into a DataFrame.
  • read_sql_query
    Read SQL query into a DataFrame.

在查找官方文件時,發現的 function,面對這些,我只會稍微留意,不會特別去記住。現在的知識不是用背的,而是當你要用的時候,懂的去哪裡找到。

5. Reference website

Conclusion

這篇主要是分享我寫程式時如何解決我未知的地方,寫程式永遠會有不懂的地方,而網路則是我們的老師,懂得如何去詢問他,將得到的東西及解法記錄下來 (coding note),內化成自己的東西。

Medleytext https://medleytext.net/

延伸閱讀:How to Not Suck at Coding, Part 1

--

--