Python

A collection of 3 posts
Python

Python 函式的參數傳遞方式:Passed by assignment

典型的參數傳遞方式有二種: * Pass-by-value: 複製參數的值傳入,所以原參數內容不會被影響。 * Pass-by-reference: 傳入參數的參考,會影響原參數內容。 還有少數程式語言使用以下兩種傳遞方式: * Pass-by-name: 將傳入的參數視為變數名稱或是字串,概念類似 string evaluation。 * Pass-by-value-result: 又稱 copy-in, copy-out,不直接傳入變數的參照,反而是將其複製一份傳入參照,最後再把結果指派回原先的變數。 如果以上四種就可以解釋完 Python 的參數傳遞方式,那或許也不需要寫這篇文章了(笑)。嚴格來說,Python 並不屬於以上四種傳遞方式,但是觀念上都是互通的,在這之前,我們必須先了解何謂 Immutable/Mutable。 Immutable Object and Mutable Object Immutable 代表物件產生後就不可以被修改,反之 Mutable 則是可以被修改。舉例來說 Python 中 numbers, boolean
3 min read
Python

Type System

Type System 往往是設計新程式語言時,最先考量的一個重要關鍵。 以下就來針對一般常見四種 Type System 用簡單的範例來介紹,避免混淆: 1. Static Typing 2. Dynamic Typing 3. Structual Typing 4. Duck Typing Static Typing 使用 Static Typing 的語言中,最常見的自然就是大家所知的 C/C++ ,也就是所有的型態都是靜態宣告,而且要明確的指出每個變數的型態,程式範例如下: void foo() { int a =1; int b =2; int c = a + b; } Dynamic Typing 而對於 Dynamic Typing
3 min read
Python

用 C 編寫 Python 的延伸模組 (Python calls C)

「藉助於擁有基於標準函式庫的大量工具、能夠使用低階語言如C和可以作為其他函式庫介面的C++,Python已成為一種強大的應用於其他語言與工具之間的膠水語言。」 – 維基百科 所以讓我們來看看 Python 如何呼叫以 C 語言寫好的程式,見識一下何謂膠水語言(Glue Language)。 以下說明的是 Python 內建的作法,所謂的內建指的是 Python.h 通常安裝完 Python 都會存在於 /usr/lib/python/ 之中。另一種作法是透過 Boost.Python 的 C++ 函式庫。 首先,此範例程式的功用:執行 Shell command ,並且做簡單的加法運算(1+2=3),然後回傳。 我們就先來看一下要編譯成 Python 模組的 C 原始碼吧! include static PyObject *spam_
4 min read