Python基礎-數據類型-字符串和編碼

一、簡介

  1. 龜叔 Guido van Rossum 在1989年聖誕節期間編寫的一個編程語言。
  2. Python爲我們提供了非常完善的基礎代碼庫,覆蓋了網絡、文件、GUI、數據庫、文本等大量內容,被形象的稱爲‘內置電池’。
  3. Python的定位:優雅、明確、簡單
  4. Python的缺點:運行速度慢,代碼不能加密
  5. 安裝Python,去https://www.python.org/downloads/windows/ 網址下載最新版的window上的Python。
  6. Python文件以.py爲擴展名;運行此類型文件需要Python解釋器去執行。CPython是剛纔下載安裝Python的時候自帶的,它是用C語言開發的,所以叫CPython。在命令行下運行Python就是啓動CPython解釋器。

二、開始

  1. 命令行模式和交互模式
    1. cmd代開命令提示符就進入了命令行模式,輸入Python就進入了交互模式,再次輸入exit()就退出了交互模式,進入了命令行模式。
  2. 新建hello.py文件,裏面寫入print('hello world, this is my first python') ,然後cd進入該目錄,用Python hello.py 命令來執行該文件。
  3. 在Python交互式模式下,可以直接輸入代碼,然後執行,並立刻得到結果。在命令行模式下,可以直接運行.py文件。
  4. I/OPython中,輸入是input(),輸出是print()

三、Python基礎

  1. 輸入,輸出,input和print
  2. 加註釋:#開頭
  3. 基礎的if else判斷

  1. Python特殊字符轉義,r'' 表示字符串不進行轉義,就是字符串本身意思

  1. 多行換行...

  1. 動態語言,變量賦值
    1. a = 1; a = 'abc'   a這個變量是動態的,類型是隨時可以被更改的
    2. 而在java中就是靜態語言變量,int a = 1;a = 'abc' 就會報錯
  2. 變量在內存中的存儲
    1. a = 1 ,定義的時候,Python幹了兩件事
    2. 先在內存中創建了一個1 這個整數
    3. 然後在內容中創建了名爲a的變量,並把它指向1
    4. 也可以 b = a ,這個操作實際上就是把變量b指向變量a所指向的數據

  1. Python中的除法
    1. /   : 10 / 3 返回3.3333333333333335
    2. //:10 // 3  返回3 ,只取整數部分
    3. %:10 %3  返回1,取餘數,
  2. Python中,整數和浮點數沒有大小的限制

四、字符編碼

  1. 計算機只處理數字,最早的計算機設計時採用8比特作爲一個字節byte,所以,一個字節能表示的最大的整數就是255。所以如果要表示更大的整數,就必須用更多的字節。比如兩個字節可以表示的最大整數是65535.
  2. 由於計算機是美國人發明的,因此最早只有127個字符被編碼進計算機了,也就是大小寫英文字母數字和一些符號,這個編碼表就是ASCII表。
  3. 但是要處理中文一個字節不夠,至少要2個字節,還不能和ASCII衝突,所以,中國製定了GB2312編碼,用來把中文編碼進去。
  4. 但是,世界上百種語言,各國都有自己的標準,不可避免的會有衝突,在多語言混合的文本中,顯示出來就會有亂碼。
  5. 因此,Unicode應運而生,它把所有的語言編寫到一套編碼裏面,這樣就不會有亂碼了。一般在Unicode中用2個字節表示一個字符。ASCII用1個字節表示一個字符
  6. 但是,如果文本都用英文的話,用Unicode編碼比ASCII多一倍的存儲空間,在存儲和傳輸上不划算。
  7. 因此,出現了把Unicode編碼轉爲‘可變長編碼’的UTF-8編碼。utf-8把一個Unicode字符根據不同的數字大小編成1-6個字符,常用的英文編寫爲1個字節,漢字通常是3個字節,很生僻的字符編成4-6字節。
  8. 在現在計算機內存中,統一使用Unicode編碼,當需要保存到硬盤或需要傳輸的時候,轉爲utf-8
  9. 用記事本編輯的時候,從文件讀取的utf-8字符被轉化爲Unicode到內存中,編輯完成後,保存的時候再把Unicode轉爲utf-8保存文件

五、Python的字符串

  1. 最新的Python3版本中,字符串以Unicode編碼。
  2. 對於單個字符的編碼,有ord()函數獲取字符的整數表示,chr()函數把編碼轉爲對應的字符

  1. encode()可以把Unicode格式的str編碼爲指定的bytes
    1. 如下,但是含有中文的str無法用ASCII編碼,因爲中文編碼超過了ADCII的範圍,會報錯

  1. 反過來,如果我們從網絡或磁盤讀取了字節流,讀到的數據就是bytes,要把bytes轉爲str,就需要decode()
    1. 如果bytes中包含無法解碼的字節,decode會報錯

    1. 如果bytes中只包含一小部分無效字節,可以加參數errors=’ignore‘,忽略錯誤字節

以下是小部分無效字節時的解析:

  1. 如果要計算str包含多少字符,可以用len()計算
    1. 如果str換成bytes,len計算的字節數,len('ABC') 返回3

  1. 由於Python源代碼也是一個文本文件,所以,當源代碼包含中文的時候,保存源碼時,需要指定保存爲utf-8。可以在文件開頭寫着兩行:
    1. 第一行告訴Linux/OS系統,這是要給Python可執行程序,window會忽略這行註釋
    2. 第二行告訴Python解釋器按照utf-8讀取代碼

  1. 佔位符

舉例:

輸出結果:

 

發佈了28 篇原創文章 · 獲贊 8 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章