在讀**的時候,我們有時候會遇到別人的**中定義函式時有以下的寫法:
nb(注意): # 後面的部分表示輸出結果。
第一種型別注釋:函式定義中的注釋
class
debug
:def
calculatesum
(self, size:
int)
->
int:
return
sum(
range
(size)
)if __name__ ==
"__main__"
: main = debug(
) result = main.calculatesum(10)
print
(result)
# 45
我們可以看到這裡的引數size
後面有乙個冒號,並且緊跟著整型int
識別符號,在括號外還有乙個->箭頭
並且也跟著乙個整型識別符號int,這究竟是什麼意思呢?其實這是一種特殊的注釋方式,為了讓我們在使用裝飾器等其他函式的時候事半功倍。箭頭後面的int
識別符號告訴使用者,這個函式的返回值應當是乙個整型的,size
後面的識別符號告訴使用者這個函式的輸入引數應該是整型的。並且對於->
後面的識別符號我們可以使用.__annotations__['return']
的方法進行獲取,**如下:
def
f(x)
->
int:
return
int(x)
if __name__ ==
"__main__"
:print
(f.__annotations__[
'return'])
#
我們可以看到f.__annotations__['return']
輸出的結果
,返回的正是我們的注釋型別,此處的f
為所定義函式的名稱。
我們再看乙個例子:
def
calculatesum
(x:'annotating x'
, y:
'annotating y'
, z:
int)
->
float
:print
(x + y + z)
if __name__ ==
"__main__"
: calculatesum(5,
6,7)
# 18
print
(calculatesum.__annotations__[
'return'])
#
我們可以看到此時我們給予函式中的三個引數對用的注釋,x
,y
均為字串型別的注釋,z
為整數型別的注釋,最終當我們給予x
,y
,z
均為整數型別的資料時,獲取了最後的結果18
,由此我們可以看到,對於annotation
,實際上是不影響真實的計算結果的,只是一種提示性的作用,因此要避免亂用。
而print(calculatesum.__annotations__['return'])
的結果也得到了正確的返回值的注釋型別。
實際上上述函式定義的**也等同於,
def
calculatesum
(x:'annotating x'
, y:
'annotating y'
, z:
int)
->
float
:print
(x + y + z)
這種寫法可能更符合我們的通用寫法。
第二種注釋:行間注釋
**如下:
class
debug
:def
__init__
(self)
: self.x1 =
5 self.x2 =
10def
calculatesum
(self)
:# print out the sum of these two numbers
print
(self.x1 + self.x2)
if __name__ ==
"__main__"
: main = debug(
) main.calculatesum(
)
如上述**所示,#
後面的部分就是我們在python
中經常會用到的注釋方法,也叫行間注釋。如這裡的print out the sum of these two numbers
,這種注釋不會通過外部命令被顯示,只是用來告知或者提示閱讀該**的人下一行或者下一段**所要實現的功能。
第三種注釋:位於函式名稱或者類名後面的注釋
**如下:
class
debug
:"""
this is a class for debugging
"""def__init__
(self)
:"""
this funtion only has one property
"""self.x =
5
main = debug(
)
如上述**所示,這種型別的注釋通常使用三個雙引號將注釋內容括起來,如:"""注釋內容"""
,這裡的this is a class for debugging
就是我們對這個類物件的注釋,this funtion only has one property
就是我們對這個初始化__init__(self)
的注釋。這種形式的注釋是為了給使用者在呼叫函式或者類的時候給與足夠的資訊提示。那如何檢視這些注釋呢,請看python注釋檢視方法。因此不是特殊情況不要亂用這種注釋方式,一般的注釋推薦使用行間注釋的形式。 Python中的注釋
object object object object object object 單行注釋以開頭,例如 object object object object object object print 6 輸出6 object object object object object object p...
Python中的注釋
object object object object object object 單行注釋以開頭,例如 object object object object object object print 6 輸出6 object object object object object object p...
python中位運算的注釋
對於初學者來說,位運算用的很少,也比較容易忽視,當真正用到的時候又不免想要再去查閱下,所以總結了一下位的運算。1 與 按位與運算子 參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0 2 或 按位或運算子 只要對應的兩個二進位有乙個為1時,結果位就為1 3 異或 按位異或運算子 當兩...