2012-05-10 83 views

回答

6

python中的變量和函數之間沒有區別(都是python中的第一類對象)。所以如果沒有真正運行代碼並且測試callable(var)是真的,那幾乎是不可能的。

而且總有一些情況下,這樣的行爲是令人困惑的:

class Dummy(object): 
    pass 
foo = Dummy() 
if False: 
    foo() 
foo.__call__ = lambda self: 'meow' 
foo.x = 'y' 
foo() 

你什麼時候將突出foo的功能呢?直到__call__賦值之後才能調用它,但對同一對象使用不同的語法高亮顯示會相當混亂。當然這個例子很愚蠢。但它很容易地顯示出爲什麼你不可能在Python中做你想做的事情。使用繼承和元類可以使它變得更加複雜。

+0

+1。好吧,但語法高亮的主要原因是代碼中更好的方向。 naught101可能需要在定義中以及何時調用該函數時(即,在括號後面)強調函數名稱。問題是,如果這是一個好主意*尿尿風*;) – pepr

+0

如果你是一個喜歡金色淋浴的perv然後是! ;) – ThiefMaster

+0

採取的點。就錯誤的問題而言,答案很好。我想知道是否值得用相同的顏色突出顯示函數和變量,或者如果這或多或少會突出顯示所有內容? – naught101