您好,登錄后才能下訂單哦!
學習Python基礎知識部分的時候,經常會用到下劃線,因為下劃線在Python中有一些特殊的意義。今天我們來看一下,下劃線在Python中有哪些應用。
在linux的shell里,當你執行完一條shell命令的時候,會有一個變量$?來表示這個表達式的執行結果,即這個表達式執行成功了還是沒有。而Python中,則是使用_來表示最后一個表達式的值。我們來看代碼示例
>>> 3+5
8
>>> _
8
>>> _*3
24
>>> _
24
在上面的代碼中,首先我們執行3+5,這個加法返回8,同時我們看到下劃線的值也是8,當我們拿下劃線來進行計算的時候,它又被賦予了計算后的結果。
但是這里要注意的是,_僅能接那些沒有變量接收的表達式的值。如果有變量接收表達式的值,那么_的值是上一次運行的結果。例如:
>>> x = 3+8
>>> _
24
我們在這里新增了一個表達式x=3+8,但是_的值并不是11,而是24,即上一次表達式運算的結果
這個時候下劃線的作用就相當于是黑洞,即不想要的值丟給它,它會接收并銷毀。我們看示例代碼
示例1:
x, _, y = (1, 2, 3)
此時我們可以只管x和y的值,而不用管_的值。
示例2:
for _ in range(100):
....
在for循環中,只進行循環,不需要取循環返回的值。
在學習到模塊部分的內容的時候,如果我們想要使用模塊的某個功能,那么我們只需要導入它的某個功能和變量即可。但是如果你是模塊的開發者,你設計的模塊里面,某些功能和函數不想被其他人知道。這個時候下劃線的作用就體現出來了。
它的規則是:不想被導出的變量,使用單下劃線開頭,例如_var,__func()
我們來看一下對應的示例
模塊A(moda.py)的內容
_var1 = 100
var2 = 200
def func1():
print(_var1)
print(var2)
def __func2():
print(_var1)
print(_var2)
然后我們打開python命令行界面,嘗試導入這個模塊中的變量和函數,代碼如下:
>>> from moda import *
>>> var2
200
>>> _var1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '_var1' is not defined
>>> func1()
100
200
>>> __func2()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '__func2' is not defined
在上面的代碼中,我們從moda中導入所有的變量和函數,但是我們嘗試輸出變量名的時候發現只有var2可以正常輸出,函數調用也只有func1()可以正常調用。_var1和__func2()被導入功能給忽略了。這樣就實現了對外隱藏變量和內部函數的作用。例如在func1中我們可以打印出_var1的值,但是外界卻并不知道這個值來自哪里。
例如類定義里常見的__init__
方法,用于類的初始化,__getitem__
方法用于獲取類的屬性等等。魔術方法可以說是類里面最強大的功能之一,這里就不一一介紹了。
這是個從Python3.6版本才加入的特性。我們知道,常規的分隔數字都是使用逗號(,),例如西方使用3個數字分隔。100000分隔的結果是100,0000。但是逗號在python里是用來分隔變量的,因此不能再用來分隔數字。于是Python選擇了使用下劃線來分隔,示例如下:
>>> a = 1000_000
>>> print(a)
1000000
它的作用和逗號是一樣的,使得比較大的數字更方便閱讀。此外,還可以用于分隔二進制,8進制,16進制數字。示例如下:
# 二進制
>>> b = 0b_111_1110
>>> print(b)
126
>>> print(bin(b))
0b1111110
# 八進制
>>> o = 0o12_34
>>> print(o)
668
>>> print(oct(o))
0o1234
#十六進制
>>> h = 0x_0a_ef
>>> print(h)
2799
>>> print(hex(h))
0xaef
以上就是下劃線在Python中的常見用途,希望能對你有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。