距離Python聖誕學習狂歡夜
還有4天
點選進入詳細瞭解
↓↓↓
final作用域的程式碼一定會被執行嗎?
正常的情況下,finally作用域的程式碼一定會被執行的,不管是否發生異常。哪怕是呼叫了sys.exit函式,finally也是會被執行的,那怎麼樣才能讓finally程式碼不執行了。
上面的程式碼主要是透過讓流程停滯在try作用域裡,從而實現了需求。上面的程式碼不排除有點投機取巧的意思,但是我們實習了題目的需求不是嗎。
可以對含有任意的元素的list進行排序嗎?
正常情況下:
那是不是以為著,任何list都可以呼叫sort函式進行排序了?
python裡1j是一個特殊符號代表-1的平方根,出現這個問題的原因是sort函式呼叫的物件的 lt 函式來比較兩個物件的,而複雜的數字型別是不可比較的,也就說沒有實現 lt 函式,所以比較不了。因此,對於list裡包含的物件如果都是可以比較的,也就是說實現了 lt 函式,那麼對list呼叫sort函式是沒問題的。
Python可是使用++x或者x++之類的操作嗎?
-
1.++x操作是可以的,但是這個操作產生的結果和C語言裡該操作產生的結果是不一樣的,Python裡++x操作裡的加好只是一個一元運運算元,所以,++x等價於+(+x),所以++x == x。
-
2.x++操作是不合法的,雖然有些情況下,x++看著是合法的,比如:x++-y,但其實這個運算式等價於x+(+(-y)) = x-y,所以正常情況下,x++是不合法的。
Python裡如何實現類似於C++裡的cout<
實現的方法如下:
這地方並不是展示了一個新的python語法,這隻是對python的str物件進行了封裝。
Python裡如何實現C++裡的printf函式?
在python2中,print是一個運算式,python3裡是個函式。所以在python2裡,我們可以這麼做:
def printf(format, *args): print format % args,
上面的程式碼雖然只有一行,但是,有些地方還是需要註意的。第一個地方,就是最後使用了都好結尾,這樣的話會更像c++的printf函式,如果想換行,則需要傳入換行符。第二個地方是這個程式碼會在最後多列印一個空格,如果不想要這個空格,可以使用sys.stdout.write函式。第三的方面,這行程式碼除了更像C++風格的printf,還有其他好處嗎?當然是有的,引數是比較靈活的。
Python裡逗號等號(,=)是什麼意思?
你可以能見過下麵的程式碼:
>>> x ,= range(1)
>>> x0
實際上,沒有逗號等號(,=)這種運運算元,上面的程式碼等價於 (x,) = range(1)。 這隻是一個賦值陳述句,在左邊有一個元組,意味著將元組的每個元素賦給右邊的相應元素; 在這種情況下,x被賦值為0
下麵的程式碼是否意味著python裡有階乘的運運算元?
比如下麵的程式碼:
assert 0!=1
assert 3!=6
assert 4!=24
assert 5!=120
其實上面的程式碼並不是階乘的結果,只是有意的構造程式碼的結果,實際上,上面的程式碼等價於:
assert 0 != 1
assert 3 != 6
assert 4 != 24
assert 5 != 120
這樣一看,其實assert判斷是不等於的關係,所以都是True。
如何快速的給Python的物件增加屬性
通常我們的做法是,在物件定義的時候,定義相關的屬性,那如何自由的新增物件屬性了。
如何定義一個包含預設值的dict
在python2.7之前,必須定義一個類來處理這樣的需求,現在,可以使用collections.defaultdict和collections.Counte來實現。
如何計算函式的執行時間
當然,python還有很多現成的輪子,可以更好的計算程式每個步驟的詳細資訊。
如何實現單例樣式
網上有很多方法,但是我知道的最簡單的方式如下:
實現的方法如下:
這地方並不是展示了一個新的python語法,這隻是對python的str物件進行了封裝。
Python裡如何實現C++裡的printf函式?
在python2中,print是一個運算式,python3裡是個函式。所以在python2裡,我們可以這麼做:
def printf(format, *args): print format % args,
上面的程式碼雖然只有一行,但是,有些地方還是需要註意的。第一個地方,就是最後使用了都好結尾,這樣的話會更像c++的printf函式,如果想換行,則需要傳入換行符。第二個地方是這個程式碼會在最後多列印一個空格,如果不想要這個空格,可以使用sys.stdout.write函式。第三的方面,這行程式碼除了更像C++風格的printf,還有其他好處嗎?當然是有的,引數是比較靈活的。
Python裡逗號等號(,=)是什麼意思?
你可以能見過下麵的程式碼:
>>> x ,= range(1)
>>> x0
實際上,沒有逗號等號(,=)這種運運算元,上面的程式碼等價於 (x,) = range(1)。 這隻是一個賦值陳述句,在左邊有一個元組,意味著將元組的每個元素賦給右邊的相應元素; 在這種情況下,x被賦值為0
下麵的程式碼是否意味著python裡有階乘的運運算元?
比如下麵的程式碼:
assert 0!=1
assert 3!=6
assert 4!=24
assert 5!=120
其實上面的程式碼並不是階乘的結果,只是有意的構造程式碼的結果,實際上,上面的程式碼等價於:
assert 0 != 1
assert 3 != 6
assert 4 != 24
assert 5 != 120
這樣一看,其實assert判斷是不等於的關係,所以都是True。
如何快速的給Python的物件增加屬性
通常我們的做法是,在物件定義的時候,定義相關的屬性,那如何自由的新增物件屬性了。
如何定義一個包含預設值的dict
在python2.7之前,必須定義一個類來處理這樣的需求,現在,可以使用collections.defaultdict和collections.Counte來實現。
如何計算函式的執行時間
當然,python還有很多現成的輪子,可以更好的計算程式每個步驟的詳細資訊。
如何實現單例樣式
網上有很多方法,但是我知道的最簡單的方式如下: