A Programmer's Blog

Understanding Python Decorators

Decorator 是一個 Python 中較為進階的語法,因為較難理解故常被提出來討論。這邊提供一個簡潔的說明。

假設有一名為 func 的 function 被名為 decor1 和 decor2 的二 decorator 修飾如下:

@decor1
@decor2
def func(*args, **kwargs):
    pass

則當我們如下呼叫 func() 時:

func(*args, **kwargs)

可以將之理解為:

decor1(decor2(func))(*args, **kwargs)

更詳細的說明可以參考:

  1. Understanding Python Decorators in 12 Easy Steps!
  2. How can I make a chain ...

Implementations of DFS and BFS in Python

DFSBFS 在資料結構裡有教,是很基礎的演算法。

Edd Mann 的網誌上看到 Python 的實作,由其中學到 yield from 的用法。下面利用 yield from 的特性,將該網誌中提到的實作改寫成 generator 的型式。同步放在 Gist 上:DFSBFS

DFS

def dfs(graph, start, visited=set()):
    if start in visited:
        return
    yield start
    visited.add(start)
    for vertex in graph[start ...

My Ubuntu GNOME Tweaks

以 Ubuntu GNOME 14.04 LTS 英文語系為基礎。

安裝軟體

Firefox 附加元件

設定

7z

sudo apt install p7zip-full

ClipIt

剪貼簿管理程序,安裝的主要目的是要他同步剪貼簿的功能。因為 X11 的剪貼簿在「貼上」時,若來源程序已暫停或結束,會因無法讀取來源而無法貼上 ...