python語法糖
『壹』 這個是哪裡出錯了 python的列表推導式
題主你好,
你的問題出在不了解列表推導的語法.
先說一下你寫的代碼問題出在哪, 因為列表推導是一種語法糖, 語法糖這東西我的理解就是代碼精簡式的寫法, 你可以簡單的理解為正常的寫法可能要10行, 用語法糖可能1行就搞定了. 優點是可以減少代碼量, 缺點也顯而易見,就是相對於常規寫法一開始學起來理解要困難一些.
列表推導寫法: n = [ j if j*5==10 ]
把你的這個1行的列表推導轉化為常規寫法要3行:
上面代碼就形成了一個完整的閉環了.
所以學習列表推導很關鍵的一點是題主能否在常規代碼與列表推導之間進行轉換, 如果可以的話,題主寫完列表推導後可以將其轉化為常規代碼去看, 如果常規代碼沒問題, 則列表推導自然也就是對的.
-----
擴展閱讀:
網頁鏈接該鏈接中有一些簡單的例子,裡面既給出了列表推導的寫法也給出了相對應的常規寫法,題主可以研究一下這二者是怎麼轉換的, 不難.
=====
希望可以幫到題主, 歡迎追問.
『貳』 python 中 @ 是什麼意思
修飾符,比如說
class A:
@staticmethod
def m(self):
pass
就相當於
class A:
def m(self):
pass
m = staticmethod(m)
其實就是一調用一個函數參數為下行的變數,並且替換它
(2)python語法糖擴展閱讀:
函數修飾符
@用做函數的修飾符,可以在模塊或者類的定義層內對函數進行修飾,出現在函數定義的前一行,不允許和函數定義在同一行。
一個修飾符就是一個函數,它將被修飾的函數作為參數,並返回修飾後的同名函數或其他可調用的東西。
在Python的函數中偶爾會看到函數定義的上一行有@functionName的修飾,當解釋器讀到@這樣的修飾符的時候會優先解除@後的內容,直接就把@的下一行的函數或者類作為@後邊函數的參數,然後將返回值賦給下一個修飾的函數對象。