萬物皆對象,意思是 IronPython 函數有屬性, 並且這些屬性在運行時是可用的。在 IronPython(Python) 中, 函數同其它東西一樣也是對象.
命令列中輸入ipy
例子2.3 訪問BuildConnectionString的函數的 doc string
>>> import first 1
>>> params = {"server":"shanyou.zhang","database":"pubs","uid":"sa","pwd":"secre
t"}
>>> print first.BuildConnectionString(params) 2
server=shanyou.zhang;database=pubs;uid=sa;pwd=secret
>>> print first.BuildConnectionString.__doc__ 3
Build a connection string from a dictionary of parameters.
Returns string.
>>>
第一行將 first程式作為模組匯入。模組是指:可以互動使用的一個程式碼片段, 或者來自一個大規模的 IronPython 程式。 一旦匯入了一個模組, 就可以引用它的任何公用的函數、類或屬性。模組可以通過這種方法來使用其它模組的功能。
當使用在被匯入模組中定義的函數時, 必須包含模組的名字。所以不能只使用 BuildConnectionString, 而應該使用 first.BuildConnectionString。 如果您用過 C# 的類, 對此應該不感到陌生。
訪問函數的 __doc__ 屬性不像您想象的那樣是通過函數調用。
在我們繼續之前, 我想簡要地提一下庫的搜尋路徑。當匯入一個模組時, IronPython 在幾個地方進行搜尋。 明確的, 它會按所有定義在 sys.path 中的目錄進行搜尋。它只是一個list (列表), 您可以容易地查看它或通過標準的list方法來修改它。
例子2.4模組匯入的搜尋路徑
>>> import sys 1
>>> sys.path 2
[u'C://Documents and Settings//Administrator///u684c/u9762//IronPython//IronPyth
on-1.0//Tutorial', u'C://Documents and Settings//Administrator///u684c/u9762//Ir
onPython//IronPython-1.0//Lib']
>>> sys 3
<module 'sys' (built-in)>
>>> sys.path.append('C:/Documents and Settings/Administrator/案頭/IronPython/Iro
nPython-1.0/Tutorial') 4
>>>
1、匯入 sys 模組, 使得它的所有函數和屬性都有效。
2、sys.path 是一個組成當前搜尋路徑的目錄列表。 (您的輸出結果可能有所不同, 這取決於您的作業系統,初始安裝的位置。)Iron Python 將搜尋這些目錄 (按順序) 來尋找一個與您正試著匯入的模組名相匹配的 .py 檔案。
3、實際上, 我沒說實話。真實情況要比這更複雜, 因為不是所有的模組都儲存為 .py 檔案。有一些, 像 sys 模組, 是"內建模組", 它們實際上是置於 Python 內部的。內建模組的行為如同一般的模組, 但是它們的 IronPython 原始碼是停用, 因為它們不是用 IronPython 寫的。 ( sys 模組是用 C #寫的。)
4、在運行時, 通過向 sys.path 追加目錄名, 就可以在 IronPython 的搜尋路徑中增加新的目錄, 然後一旦您試著匯入模組, IronPython 也會在那個目錄中進行搜尋。這個作用在 IronPython 運行時一直生效。
IronPython 中一切都是對象, 並且幾乎一切都有屬性和方法。 所有的函數都有一個內建的 __doc__ 屬性, 它會返回在函數原始碼中定義的 doc string 。 sys 模組是一個對象, 它有一個叫作 path 的屬性。等等。
我們仍然在迴避問題的實質, 究竟何謂對象。 不同的程式設計語言以不同的方式定義 “對象” 。某些語言中, 它意味著 所有 對象 必須 有屬性和方法;另一些語言中, 它意味著所有的對象都可以子類化。在 IronPython 中, 定義是鬆散的;某些對象既沒有屬性也沒有方法 , 而且不是所有的對象都可以子類化 。但是萬物皆對象從感性上可以解釋為:一切都可以賦值給變數或作為參數傳遞給函數
這一點太重要了, 在IronPython 中 萬物皆對象 。字串是對象。列表是對象。函數是對象。甚至模組也是對象, 這一點我們很快會看到。
第一個IronPython程式(之二)
第一個IronPython程式(之一)
安裝 IronPython