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

前言

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

目錄

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

1、Python 語法的簡要說明

每種語言都有本身的語法,不論是天然語言仍是咱們的計算機編程語言,Python 也不例外,編輯器或者解析器根據符合語法的程序代碼轉換成 CPU 可以執行的機器碼,而後執行。html

Python 的語法比較簡單,採用縮進方式。由於以前是寫 JAVA 或者 C++ 偏多,忽然沒了大括號和要注意縮進,是有點不習慣的,不過仍是能夠接受的。並且要養成使用 4 個空格的縮進,能夠在文本編輯器設置 Tab 自動轉換爲 4 個空格。java

Python語法.png

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

更多的說明能夠看看以前的文章:Python代碼規範中的簡明概述編程

2、Python 的基本數據類型

一、整數

Python 能夠處理任意大小的整數,固然包括負整數,在 Python 程序中,整數的表示方法和數學上的寫法如出一轍,例如:1100-80800,等等。編程語言

計算機因爲使用二進制,因此,有時候用十六進制表示整數比較方便,十六進制用 0x 前綴和 0-9,a-f 表示,例如:0xff00,0xa5b4c3d2,等等。編輯器

二、浮點數

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

三、字符串

字符串是以 '' 或 "" 括起來的任意文本,好比 'abc'"123" 等等。請注意,'' 或 "" 自己只是一種表示方式,不是字符串的一部分,所以,字符串 'abc' 只有 a,b,c 這 3 個字符。這個其餘的編程語言也是相似的。編碼

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

在上面那裏提到,字符串能夠用 '' 或者 "" 括起來表示。但是有些時候,咱們字符串自己就包含了 '' 或者 "" ,怎麼辦呢?spa

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

經常使用的轉義字符還有:

\n 表示換行
\t 表示一個製表符
\\ 表示 \ 字符自己複製代碼

具體例子:

Python字符串轉義.png

那上面就有一個問題呢,若是一個字符串包含不少須要轉義的字符,對每個字符都進行轉義會很麻煩。這裏爲了應付這種狀況,咱們能夠在字符串前面加個前綴 r ,表示這是一個 raw 字符串,裏面的字符就不須要轉義了。

Python轉義r.png

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

若是要表示多行字符串,能夠用'''...'''表示,固然你也還能夠在多行字符串前面添加 r ,把這個多行字符串也變成一個raw字符串

多行轉義.png

(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 python3
# -*- coding: utf-8 -*-複製代碼

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

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

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

四、布爾值

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

布爾值能夠用 andornot 運算。

and 運算是與運算,只有全部都爲 True,and 運算結果纔是 True。

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

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

五、空值

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

3、基本數據類型轉換

方法 說明
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 ) 將一個整數轉換爲一個八進制字符串

4、Python 中的變量

一、變量的建立和賦值

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

a=88複製代碼

這裏的 a 就是一個變量,表明一個整數,注意一點是 Python 是不用聲明數據類型的。在 Python 中 = 是賦值語句,跟其餘的編程語言也是同樣的,由於 Python 定義變量時不須要聲明數據類型,所以能夠把任意的數據類型賦值給變量,且同一個變量能夠反覆賦值,並且能夠是不一樣的數據類型。

Python 中的變量.png

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

二、變量的指向問題

咱們來看下這段代碼,發現最後打印出來的變量 b 是 Hello Python

Python變量指向.png

這主要是變量 a 一開始是指向了字符串 Hello Pythonb=a 建立了變量 b ,變量 b 也指向了a 指向的字符串 Hello Python,最後 a=123,把 變量 a 從新指向了 123,因此最後輸出變量 b 是 Hello Python

變量的指向

三、多個變量賦值

Python 容許同時爲多個變量賦值。例如:

a = b = c = 1複製代碼

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

固然也能夠爲多個對象指定多個變量。例如:

a, b, c = 1, 2, "liangdianshui"複製代碼

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

相關文章
相關標籤/搜索