草根學 Python(二)基本數據類型和變數

前言

最近要開始新的項目,工作又開始忙起來了,不過還是每天要抽時間來寫博客,但不可能做到日更,因為一篇博客,寫的時間還是挺長的。Gitbook 同時更新喔。

目錄

一、Python 語法的簡要說明

每種語言都有自己的語法,不管是自然語言還是我們的計算機編程語言,Python 也不例外,編輯器或者解析器根據符合語法的程序代碼轉換成 CPU 能夠執行的機器碼,然後執行。

Python 的語法比較簡單,採用縮進方式。因為之前是寫 JAVA 或者 C++ 偏多,突然沒了大括弧和要注意縮進,是有點不習慣的,不過還是可以接受的。而且要養成使用 4 個空格的縮進,可以在文本編輯器設置 Tab 自動轉換為 4 個空格。

以 # 開頭的語句是注釋,其他每一行都是一個語句,當語句以冒號 : 結尾時,縮進的語句視為代碼塊。要注意的是 Python 程序是大小寫敏感的,如果寫錯了大小寫,程序會報錯。

更多的說明可以看看之前的文章:Python代碼規範中的簡明概述

二、Python 的基本數據類型

1、整數

Python 可以處理任意大小的整數,當然包括負整數,在 Python 程序中,整數的表示方法和數學上的寫法一模一樣,例如:1,100,-8080,0,等等。

計算機由於使用二進位,所以,有時候用十六進位表示整數比較方便,十六進位用 0x 前綴和 0-9,a-f 表示,例如:0xff00,0xa5b4c3d2,等等。

2、浮點數

浮點數也就是小數,之所以稱為浮點數,是因為按照科學記數法表示時,一個浮點數的小數點位置是可變的。整數和浮點數在計算機內部存儲的方式是不同的,整數運算永遠是精確的(除法也是精確的),而浮點數運算則可能會有四捨五入的誤差。

3、字元串

字元串是以 或 "" 括起來的任意文本,比如 abc ,"123" 等等。請注意, 或 "" 本身只是一種表示方式,不是字元串的一部分,因此,字元串 abc 只有 a,b,c 這 3 個字元。這個其他的編程語言也是類似的。

(1) Python 中的字元串和字元串轉義

在上面那裡提到,字元串可以用 或者 "" 括起來表示。可是有些時候,我們字元串本身就包含了 或者 "" ,怎麼辦呢?

那這個時候就需要對字元串的某些特殊字元進行「轉義」,Python 字元串用 進行轉義。跟 JAVA 也是一樣的。

常用的轉義字元還有:

n 表示換行nt 表示一個製表符n 表示 字元本身n

具體例子:

那上面就有一個問題呢,如果一個字元串包含很多需要轉義的字元,對每一個字元都進行轉義會很麻煩。這裡為了應付這種情況,我們可以在字元串前面加個前綴 r ,表示這是一個 raw 字元串,裡面的字元就不需要轉義了。

但是,要注意的一點是,但是r...表示法不能表示多行字元串,也不能表示包含和"的字元串。

如果要表示多行字元串,可以用...表示,當然你也還可以在多行字元串前面添加 r ,把這個多行字元串也變成一個raw字元串

(2) 字元串的編碼問題

我們都知道計算機只能處理數字,如果要處理文本,就必須先把文本轉換為數字才能處理。最早的計算機在設計時採用8個比特(bit)作為一個位元組(byte),所以,一個位元組能表示的最大的整數就是255(二進位11111111=十進位255),0 - 255被用來表示大小寫英文字母、數字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母 A 的編碼是 65,小寫字母 z 的編碼是 122。

如果要表示中文,顯然一個位元組是不夠的,至少需要兩個位元組,而且還不能和 ASCII 編碼衝突,所以,中國制定了 GB2312 編碼,用來把中文編進去。

類似的,日文和韓文等其他語言也有這個問題。為了統一所有文字的編碼,Unicode 應運而生。Unicode 把所有語言都統一到一套編碼里,這樣就不會再有亂碼問題了。

Unicode 通常用兩個位元組表示一個字元,原有的英文編碼從單位元組變成雙位元組,只需要把高位元組全部填為 0 就可以。

因為 Python 的誕生比 Unicode 標準發布的時間還要早,所以最早的Python 只支持 ASCII 編碼,普通的字元串 ABC 在 Python 內部都是 ASCII 編碼的。

Python 在後來添加了對 Unicode 的支持,以 Unicode 表示的字元串用u...表示。

不過在最新的 Python 3 版本中,字元串是以 Unicode 編碼的,也就是說,Python 的字元串支持多語言。就像上面的例子一樣,我的代碼中沒有加u...,也能正常顯示。

不過由於 Python 源代碼也是一個文本文件,所以,當你的源代碼中包含中文的時候,在保存源代碼時,就需要務必指定保存為 UTF-8 編碼。當Python 解釋器讀取源代碼時,為了讓它按 UTF-8 編碼讀取,我們通常在文件開頭寫上這兩行:

#!/usr/bin/env python3n# -*- coding: utf-8 -*-n

第一行注釋是為了告訴 Linux/OS X 系統,這是一個 Python 可執行程序,Windows 系統會忽略這個注釋;

第二行注釋是為了告訴 Python 解釋器,按照 UTF-8 編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。

申明了 UTF-8 編碼並不意味著你的 .py 文件就是 UTF-8 編碼的,必須並且要確保文本編輯器正在使用 UTF-8 without BOM 編碼

4、布爾值

布爾值和布爾代數的表示完全一致,一個布爾值只有 True 、 False兩種值,要麼是 True,要麼是 False,在 Python 中,可以直接用 True、False 表示布爾值(請注意大小寫),也可以通過布爾運算計算出來。

布爾值可以用 and、or 和 not 運算。

and 運算是與運算,只有所有都為 True,and 運算結果才是 True。

or 運算是或運算,只要其中有一個為 True,or 運算結果就是 True。

not 運算是非運算,它是一個單目運算符,把 True 變成 False,False 變成 True。

5、空值

基本上每種編程語言都有自己的特殊值——空值,在 Python 中,用 None 來表示

三、基本數據類型轉換

方法說明int(x [,base ])將x轉換為一個整數long(x [,base ])將x轉換為一個長整數float(x )將x轉換到一個浮點數complex(real [,imag ])創建一個複數str(x )將對象 x 轉換為字元串repr(x )將對象 x 轉換為表達式字元串eval(str )用來計算在字元串中的有效 Python 表達式,並返回一個對象tuple(s )將序列 s 轉換為一個元組list(s )將序列 s 轉換為一個列表chr(x )將一個整數轉換為一個字元unichr(x )將一個整數轉換為 Unicode 字元ord(x )將一個字元轉換為它的整數值hex(x )將一個整數轉換為一個十六進位字元串oct(x )將一個整數轉換為一個八進位字元串

四、Python 中的變數

1、變數的創建和賦值

在 Python 程序中,變數是用一個變數名表示,可以是任意數據類型,變數名必須是大小寫英文、數字和下劃線(_)的組合,且不能用數字開頭,比如:

a=88n

這裡的 a 就是一個變數,代表一個整數,注意一點是 Python 是不用聲明數據類型的。在 Python 中 = 是賦值語句,跟其他的編程語言也是一樣的,因為 Python 定義變數時不需要聲明數據類型,因此可以把任意的數據類型賦值給變數,且同一個變數可以反覆賦值,而且可以是不同的數據類型。

這種變數本身類型不固定的語言稱之為動態語言,與之對應的是靜態語言。靜態語言在定義變數時必須指定變數類型,如果賦值的時候類型不匹配,就會報錯。例如 Java 是靜態語言。

2、變數的指向問題

我們來看下這段代碼,發現最後列印出來的變數 b 是 Hello Python 。

這主要是變數 a 一開始是指向了字元串 Hello Python ,b=a 創建了變數 b ,變數 b 也指向了a 指向的字元串 Hello Python,最後 a=123,把 變數 a 重新指向了 123,所以最後輸出變數 b 是 Hello Python

3、多個變數賦值

Python 允許同時為多個變數賦值。例如:

a = b = c = 1n

以上實例,創建一個整型對象,值為 1,三個變數被分配到相同的內存空間上。

當然也可以為多個對象指定多個變數。例如:

a, b, c = 1, 2, "liangdianshui"n

以上實例,兩個整型對象 1 和 2 的分配給變數 a 和 b,字元串對象 "liangdianshui" 分配給變數 c。


推薦閱讀:

已經有了各省的數據,如何將信息以可視化的方式顯示在地圖上?順便問一下python有相關的第三方包沒?
高德API+Python解決租房問題
windows下anaconda 安裝報錯, errno9,怎麼解決?
pandas 怎麼根據一列的數據的值的情況判斷來生成另外一列的數值?

TAG:Python | Python入门 | Python教程 |