Year: 2017

  • inspect — 探測 Python 物件內容 — 你所不知道的 Python 標準函式庫用法 11

    inspect — 探測 Python 物件內容 — 你所不知道的 Python 標準函式庫用法 11

    inspect – 探測 Python 物件內容 The inspect module provides several useful functions to help get information about live objects such as modules, classes, methods, functions, tracebacks, frame objects, and code objects. For example, it can help you examine the contents of a class, retrieve the source code of a method, extract and format the argument list for…

  • (那些過時的) Python 字串格式化以及 f-string 字串格式化

    (那些過時的) Python 字串格式化以及 f-string 字串格式化

    在 Python 裡頭,目前的最新版本 (3.6.2) 中總共有 3 種不同的方式來達成字串格式化 (String format)。分別是 %-formatting、str.format 以及 f-string。本文將會逐一介紹這些 Python 的字串格式化方式。 01. %-formatting 偉大的 C 語言字串格式化深入我們的生活,Python 自然也不意外的會有這個功能。 >>> ‘Python version: %.1f’ % (3.6) ‘Python version: 3.6’ >>> ‘We have %d apple, %d banana’ % (10, 20) ‘We have 10 apple, 20 banana’ >>> ‘Hello, %s’ % (‘Denny’) ‘Hello Denny’ 從今天開始,忘了它。 02. str.format…

  • secrets — 生成用於密碼層級的亂數 — 你所不知道的 Python 標準函式庫用法 10

    secrets — 生成用於密碼層級的亂數 — 你所不知道的 Python 標準函式庫用法 10

    secrets – 生成用於密碼層級的亂數 The secrets module is used for generating cryptographically strong random numbers suitable for managing data such as passwords, account authentication, security tokens, and related secrets. Source code: Lib/secrets.py secrets 模組的用意,是為了要在 Python 內提供一個適用於密碼層級的亂數產生機制,透過 secrets 我們可以輕鬆的產生密碼強度的亂數以及亂數選擇元素,從而避免使用者使用 random 模組來產生隨機亂數並將之用於密碼上。這個模組目前只在 Python 3.6 以後的版本才有,請各位更新到最新版本來使用。 01. Quickstart Tutorial 產生密碼強度的隨機亂數: >>> import secrets >>> secrets.token_bytes() b’\x1c\xc7\xd0H\xddY\xdb\x00\xf2\xe0\xd9%\xa2<|T\xcf\xe5\x937\xbc\x15(\xce~p\xca9\xc3u\xed)’ >>> secrets.token_bytes() b’\x13 \x87\xa2\x95]\n\xec\x80\x16=)\x11}4\x17\x07\xf8\t\x99\x16\xb3\xaf\x97u\x8a\x08uY*\xa8\x83′ >>> 產生密碼強度的隨機字串 >>> secrets.token_hex() ‘e41210fd028b4fdb8d6d58f9f22a080068afc1478b866d09a7d220c0229031cd’…

  • tracemalloc — 記憶體配置除錯 — 你所不知道的 Python 標準函式庫用法 09

    tracemalloc — 記憶體配置除錯 — 你所不知道的 Python 標準函式庫用法 09

    tracemalloc – 記憶體配置除錯 The tracemalloc module is a debug tool to trace memory blocks allocated by Python. Source code: Lib/tracemalloc.py 透過 tracemalloc 將可以記錄下 Python 的記憶體區塊配置狀況,同時透過這些記錄來輸出有用的記憶體配置資訊,例如說執行記憶體配置的檔案以及行數、記憶體區塊大小等。也可以透過比對兩個不同的記憶體區塊快照,來找出記憶體洩漏的問題。 01. Quickstart Tutorial 我們透過 start() 開始記憶體除錯的功能: >>> import tracemalloc >>> tracemalloc.start() 結束時使用 stop() 結束除錯: >>> tracemalloc.stop() 想要記錄下當前的記憶體配置就使用 snapshot(): >>> snap = tracemalloc.take_snapshot() 認識這三個基本 API 後,我們就可以開始應用 tracemalloc。 # tm_snap_stats.py import tracemalloc import sys #…

  • 防禦駕駛的能力是需要刻意練習的

    防禦駕駛的能力是需要刻意練習的

    …… 也就是海軍所謂的「行動後報告」。教練在討論時會不斷逼問學員:飛行時注意到什麼?採取了什麼行動?為什麼這麼做?有哪些失誤?本來還可以怎麼做?必要時也會播放雙方交鋒的影片,並提供當天雷達錄下的資訊,指出空戰中發生的細節。教練在詢問過程中和詢問結束後會建議學員以不同的方式作戰、要留意的地方,以及面對不同情境時該有的思維,然後隔天在空中從頭到尾操作一次。…… —— 《刻意練習:原創者全面解析,比天賦更關鍵的學習法》 騎車不是件簡單的事情,你必須要時時刻刻注意到路面上來自四面八方的訊息,例如前方車輛的動向、後照鏡的狀況、右側的行人與切出物等。透過防禦駕駛,我們可以讓自身在路面上更警覺,更能預測危險的來源,從而避免車禍的發生。 本文前面引用的段落,來自於書籍《刻意練習:原創者全面解析,比天賦更關鍵的學習法》第五章的中間。這是當時美軍在越戰時訓練飛行員使用的方式,透過這樣刻意的練習,盤問自身有什麼地方能夠加強,能夠避免等等,讓美軍的空戰戰績在越戰有了顯著的提升。 防禦駕駛的訓練也應該相同,除了理解基本的知識外,更應該要刻意練習自己的心態以及預測能力。幸好,台灣是個寶島,在寶島上面有著源源不絕的三寶,滿滿的交通行車素材讓我們可以輕鬆的為自己的防衛駕駛能力刻意的練習。 步驟如下: 在 Youtube 上隨便選一個機車或汽車車禍影片集。 觀察每一個車禍的發生。 問自己:車禍前注意到什麼?採取了什麼行動?為什麼會出現車禍?雙方有哪些失誤?本來還可以怎麼做?放到不同背景下要怎麼防範?自己會怎麼做? 回到第一點。 下面就帶大家來實作一遍刻意練習: 詢問自己這些問題: 車禍前注意到什麼? 機車行徑於車陣中,應注意兩側汽車空檔處欲切入之來車,以及汽車開啟車門。但並非靠近路口處。 採取了什麼行動? 直接切出空檔。 為什麼會出現車禍? 沒有觀察後方來車,沒有看後照鏡,沒有打方向燈。主因為直接切出。 雙方有哪些失誤? 從內側切出之機車在切出時應注意後方來車。直行車應放慢速度,並且假定各個車輛空檔會有三寶直接切出。 本來還可以怎麼做? 直行車在這種狀況下除了要觀察前方車輛外,也應該要觀察斜前方車陣中有沒有車子,以及這些車子有沒有想要切出來的意圖,或是可能切出來的機會,如果有就應該要放慢速度,或是使用喇叭提醒要切出的車輛注意。 切出去的車子在切出時應該假定後方一定有車子會撞到自己,逼迫自己透過後照鏡或是轉頭向後查看車輛。待後方無車後或是有安全空間才能切出。 放到不同背景下要怎麼防範? 如果車陣內機車遇到有路口的地方,還需要注意路口是否有車進行大迴轉或是因為車輛造成的死角中突然切出來。此時遇到路口應該放慢速度,並且使用喇叭提醒其他用路人。 自己會怎麼做? 自己想。 換另外一段影片試試看: 車禍前注意到什麼? 路口淨空,綠燈。 採取了什麼行動? 無減速持續向前。 為什麼會出現車禍? 近路口時右側出現機車。 雙方有哪些失誤? 汽車速度可以放低。機車不應以這種方式切出。 本來還可以怎麼做? 汽車行經這種小路口應放慢速度,預想會有人或機車切出造成車禍。經過有死角的路口時鳴按喇叭提醒其他用路人。 機車要遵守號誌以及道路交通規範。 放到不同背景下要怎麼防範? 自己會怎麼做? 自己想。 台灣因為是寶島的關係,三寶頗多,各位可以上 Youtube 以關鍵字「車禍、機車、汽車」或是英文「Bike crash、car crash」搜尋相關的車禍影片,透過這些影片的訓練,來讓自己避免到大部分的車禍。

  • 常用日文觀光句子

    常用日文觀光句子

    觀光前惡補…… 我沒有這個東西:私 OOO ありません 請問哪邊可以買票: 廁所在哪邊:トイレはどちらですか? まっすぐに行いってから、右みぎへ曲まがってください (直走右轉) まっすぐに行いってから、左ひだりへ曲まがってください (直走左轉) 請問有水嗎:お水ありますか 我要這個:これをください 可以用信用卡嗎:クレジットカードは使つかえますか? 我要用信用卡付款:クレジットカードでお願ねがいいたします 可以試用嗎:ためしてみてもいいですか 可以看這個商品嗎:すみません、これ、ちょっと見せてもらえますか。   Reference 日語會話-購物篇 【旅遊日語】在日本的餐廳會用到的13句日語表達! 〜はどこ/どちらですか。(~在哪裡) – 知惠塾語文工作室 [旅遊情境會話] 情境一: 如何在車站內買票 – 音速語言學習(日語)

  • atexit — 程式關閉時回呼 — 你所不知道的 Python 標準函式庫用法 08

    atexit — 程式關閉時回呼 — 你所不知道的 Python 標準函式庫用法 08

    atexit – Exit handlers The atexit module defines functions to register and unregister cleanup functions. Functions thus registered are automatically executed upon normal interpreter termination. atexit runs these functions in the reverse order in which they were registered; if you register A, B, and C, at interpreter termination time they will be run in the order C, B, A. 官方介紹文件:29.8. atexit — Exit handlers atexit 套件用來註冊當程式結束時要執行的函式。被 atexit 註冊的函式,會在程式正常結束的時機點被執行。執行的順序為先註冊後執行…

  • enum — 枚舉型態 — 你所不知道的 Python 標準函式庫用法 07

    enum — 枚舉型態 — 你所不知道的 Python 標準函式庫用法 07

    enum – Support for enumerations An enumeration is a set of symbolic names (members) bound to unique, constant values. Within an enumeration, the members can be compared by identity, and the enumeration itself can be iterated over. 官方介紹文件:8.13. enum — Support for enumerations enum 是 Python 裏用來建立枚舉形態的標準函式庫。enum 算是比較新的標準函式庫,學習 enum 可以讓你輕鬆建立枚舉,改寫以前單獨使用 const variable 的狀況。 01. Quickstart Tutorial 從今天開始,讓我們把這樣枚舉的 Code: #…

  • concurrent.futures —  創立非同步任務 — 你所不知道的 Python 標準函式庫用法 06

    concurrent.futures — 創立非同步任務 — 你所不知道的 Python 標準函式庫用法 06

    concurrent.futures – Launching parallel tasks The concurrent.futures module provides a high-level interface for asynchronously executing callables. 官方介紹文件:17.4. concurrent.futures — Launching parallel tasks concurrent.futures 提供了一組高階 API 給使用者操作非同步執行的任務。透過 ThreadPoolExectuor 執行 thread 層級的非同步任務,或是使用 ProcessPoolExecutor 執行 process 層級的非同步任務。兩者的 API 介面都相同,同樣繼承於 Executor。 01. Quickstart Tutorial 第一個範例的 target function 使用大家最喜歡的遞迴費氏數列: def fib(n): if n < 2: return 1 return fib(n – 1) + fib(n – 2)…

  • linecache — 你所不知道的 Python 標準函式庫用法 05

    linecache — 你所不知道的 Python 標準函式庫用法 05

    linecache – Random access to text lines The linecache module allows one to get any line from a Python source file, while attempting to optimize internally, using a cache, the common case where many lines are read from a single file. 官方介紹文件:11.9. linecache — Random access to text lines linecache 這個模組旨在讓其他 Python library 能夠高效率的取得其他模組或套件的原始碼,在整個標準函式庫中被 import 了 21 次,主要是被 traceback 以及…