python 字符前綴,運算符、換行符、數據類型和變量


補充

  *)/ 表示的除法即使是整數,結果也是浮點數

  *)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的解釋器做了兩件事

  1. 在內存中創建了一個'ABC'的字符串;

  2. 在內存中創建了一個名為a的變量,並把它指向'ABC'

  也可以把一個變量a賦值給另一個變量b,這個操作實際上是把變量b指向變量a所指向的數據

  

  常量

  所謂常量就是不能變的變量,比如常用的數學常數π就是一個常量。在Python中,通常用全部大寫的變量名表示常量:

  但事實上PI仍然是一個變量,Python根本沒有任何機制保證PI不會被改變,所以,用全部大寫的變量名表示常量只是一個習慣上的用法,如果你一定要改變變量PI的值,也沒人能攔住你。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM