補充
*)/ 表示的除法即使是整數,結果也是浮點數
*)python表示的整數是沒有大小限制的。而某些語言根據其儲存長度是有大小限制的。例如Java對32位整數的范圍限制在-2147483648
-2147483647
。
python表示的浮點數也沒有大小限制,但是超出一定的范圍就會表示為inf(無限大)
運算符
python運算符 **
a**b(b個a連乘)
python 邏輯運算符 按位邏輯運算"$" "|" "^" ">>" "<<"
參考鏈接:https://blog.csdn.net/wxy_csdn_world/article/details/80759915
$是 按位 邏輯與 運算
比如:5 & 6,5和6轉換為二進制是101和110,此時101 & 110=100,100轉換為十進制是4,所以5 & 6=4
| 是 按位 邏輯或 運算
比如5|6,就是101|110,得到111=7,所以最后結果為7
^ 是按位 邏輯異或 運算(異或會將都是1或者都是0的結果改變,並不是不變的)
比如5^6,其實是101^110,結果是011,所以5^6的答案是3
>> 是左移一位,>>2 是左移兩位的意思(轉化位二進制,然后相應的添兩個0)
>>> print ('1 << 2:', 1 << 2) 1 << 2: 4 (1變為100)相當於1*2*2) >>> print ('4 << 2:', 4 << 2) 4 << 2: 16 >>> print ('5 << 2:', 5 << 2) 5 << 2: 20
<<是右移一位 >>2是右移兩位的意思
>>> print ('5 >> 2:', 5>>2) 5 >> 2: 1#沒有特別的計算方法吧 >>>
python字符前綴
參考鏈接:https://blog.csdn.net/weixin_42165585/article/details/80980739
1.無前綴和u前綴
即以Unicode編碼儲存,可以存儲中文,字符默認創建就是這種
Unicode編碼通常使用兩個字節存儲一個字符
u'a' 即 u'\u0061' 實際內存中為 [0000 0000] [0110 0001]
2.b前綴
字符串儲存為Ascll碼,無法存儲中文
>>> test_str=b'測試' File "<stdin>", line 1 SyntaxError: bytes can only contain ASCII literal characters. >>>
每個字符由一個字節(8位)表示
b'a' 即 b'\x61' 實際內存中為 [0110 0001]
3.r前綴
r前綴與前面的兩種不是一樣的東西,它主要是解決特殊字符和轉義字符的問題,其中的所有字符均視為普通字符和三引號差不多
>>> print('a\ta') a a >>> print('''a\ta''')#三引號是什么,反正不是這個 a a >>> print(r'a\ta') a\ta
注意:#b前綴的結果是原樣輸出的,前面的b代表該字符串是一個字節數組
>>> print(b'a\ta') b'a\ta' >>> print(u'a\ta') a a >>>
python \r與\b的應用、光標的含義
參考鏈接:https://www.jianshu.com/p/eb5c23cd6e34
\r 能將光標定位到當前行的行首
\b則是將光標回退一位
光標的含義:
光標后面的輸出內容均會消失,光標回退后,后面位置的內容都會被抹除
print('按下回車開始計時,按下 Ctrl + C 停止計時。') print('第2行\r',end='mark')#這一行會消失,因為“第2行”輸出后,\r會將光標回退到行首,然后輸出end指定的內容即為“mark” #注意上面沒有換行符了,默認的end是\n print('第3行“第三行”不會消失') print('第3行\r“第3行”會消失')#因為輸出了第三行后,光標回退到行首,即后面的內容“第3行”被抹除了 print('第3行\b“行”會消失')#“\b"回退1位 print('第4行\r')#這個為什么沒有被抹除呢,看下面這一行 print('第4行\ra')#結合輸出結果來看,這個光標移到行首,后面的內容並不是立即被抹除的,而是輸出一位,抹除一位 print('第5行\r')#所以這一行輸出了”第5行“后,光標被移到行首了,然后輸出了默認的end值”\n",但是這樣的話結果中的第5行前不是應該有個空行嗎? #輸出 lient' '--host' 'localhost' '--port' '5819' 'c:\Users\Administrator.SC-201605202132\Envs\sort\app\forTest.py' 按下回車開始計時,按下 Ctrl + C 停止計時。 mark第3行“第三行”不會消失 “第3行”會消失 第3“行”會消失 第4行 a 4行 第5行
*)寫一個輸出進度的
import time def test(): for i in range(100): time.sleep(0.1) print('當前正運行第%d/%d次測試\r'%(i,100),end='')#必須要有這個end,要不沒有用 print('append content')#而且這一行也不能有,其實也沒必要有,因為如果后面一定有序列輸出的,還不如分多次在附加內容輸出后立即輸出次數序列 if __name__=="__main__": test()
數據類型和變量
靜態語言和動態語言
靜態語言在定義變量的時候就必須要指定變量的類型,如果賦值的時候和變量的類型不匹配就會報錯例如java就是靜態語言
int a = 123; // a是整數類型變量 a = "ABC"; // 錯誤:不能把字符串賦給整型變量
相應的變量本身類型不固定的語言稱為動態語言,Python就是動態語言
python支持多種數據類型,在計算機內部,可以把所有的變量看作為一個對象,而變量在程序中就是用於指向這些對象的,對變量的賦值就是把變量和對象關聯起來
對變量賦值x = y
是把變量x
指向真正的對象,該對象是變量y
所指向的。隨后對變量y
的賦值不影響變量x
的指向。
理解變量在內存中的表示:
a='ABC'
python的解釋器做了兩件事
-
在內存中創建了一個
'ABC'
的字符串; -
在內存中創建了一個名為
a
的變量,並把它指向'ABC'
。
也可以把一個變量a
賦值給另一個變量b
,這個操作實際上是把變量b
指向變量a
所指向的數據
常量
所謂常量就是不能變的變量,比如常用的數學常數π就是一個常量。在Python中,通常用全部大寫的變量名表示常量:
但事實上PI
仍然是一個變量,Python根本沒有任何機制保證PI
不會被改變,所以,用全部大寫的變量名表示常量只是一個習慣上的用法,如果你一定要改變變量PI
的值,也沒人能攔住你。