首頁 > 軟體

python中對%、~含義的解釋

2022-05-19 19:00:31

%有哪幾種含義?

查詢手冊

翻看《The Python Libary Reference》python庫指南中附錄index部分(P1899):

% (percent):
datetime format, 198, 594, 596
environment variables expansion (Windows), 377, 1798
interpolation in configuration files, 493
operator, 31
printf-style formatting, 51, 65

根據index中用法索引逐項來看:

  • datetime format:表示日期格式
  • environment variables expansion 環境變數擴充套件
  • interpolation in configureation files 插入設定檔案
  • operator:取餘
  • printf-style formatting:輸出格式化

環境變數擴充套件:

Expands environment variable placeholders %NAME% in strings like REG_EXPAND_SZ:
    ExpandEnvironmentStrings('%windir%')
    'C:\Windows'

插入設定檔案

  • home_dir: /Users
  • my_dir: %(home_dir)s/lumberjack
  • my_pictures: %(my_dir)s/Pictures

範例:

cls_info = ['%sn(%d %s)'% (estimator_conf['name'],
                            estimator_conf['complexity_computer'](estimator_conf['instance']),
                            estimator_conf['complexity_label']) 
                            for estimator_conf in configuration['estimators']]

~含義是什麼?

查手冊:

~ (tilde)
home directory expansion, 377
operator, 32

除了表示家目錄外,表示操作符按位元取反(the bits of inverted)

~5=-6
~-11=10

可以理解為取0為第一個正數,取座標軸對稱點。

解析見下 ↓↓↓↓↓↓↓

按位元取反運運算元

按位元取反運運算元~很少用到,今天看《byte of Python》書中舉例,這裡學習一下,再複習一下計算機的基礎知識。

按位元取反運運算元,用來對一個二進位制數按位元取反,即將0變1,將1變0,按理說十進位制的5(0000 0101)按位元取反應該為(1111 1010)十進位制250,但是在Python中運算結果並非如此,結果如下:

>>> ~-6
5

計算機中的符號數有三種表示方法,即原碼、反碼和二補數。三種表示方法均有符號位和數值位兩部分,符號位都是用0表示“正”,用1表示“負”,而數值位,三種表示方法各不相同。在計算機系統中,數值一律用二補數來表示和儲存。原因在於,使用二補數,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。

  • 正整數的二補數是其二進位制表示,與原碼相同 。
  • 負整數的二補數,將其對應正數二進位制表示所有位取反(包括符號位,0變1,1變0)後加1。

Python按位元取反運算:

>>> ~-6
5

運算分析:

-6的二補數是+6(0000 0110)取反後再+1,為(1111 1001)+(0000 0001)=(1111 1010),也就是計算機中-6是用(1111 1010)來儲存的,(1111 1010) 按位元取反得到(0000 0101)這就是答案5

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com