最近要開始新的項目,工做又開始忙起來了,不過仍是天天要抽時間來寫博客,但不可能作到日更,由於一篇博客,寫的時間仍是挺長的。Gitbook 同時更新喔。javascript
每種語言都有本身的語法,不論是天然語言仍是咱們的計算機編程語言,Python 也不例外,編輯器或者解析器根據符合語法的程序代碼轉換成 CPU 可以執行的機器碼,而後執行。html
Python 的語法比較簡單,採用縮進方式。由於以前是寫 JAVA 或者 C++ 偏多,忽然沒了大括號和要注意縮進,是有點不習慣的,不過仍是能夠接受的。並且要養成使用 4 個空格的縮進,能夠在文本編輯器設置 Tab 自動轉換爲 4 個空格。java
以 # 開頭的語句是註釋,其餘每一行都是一個語句,當語句以冒號 : 結尾時,縮進的語句視爲代碼塊。要注意的是 Python 程序是大小寫敏感的,若是寫錯了大小寫,程序會報錯。python
更多的說明能夠看看以前的文章:Python代碼規範中的簡明概述編程
Python 能夠處理任意大小的整數,固然包括負整數,在 Python 程序中,整數的表示方法和數學上的寫法如出一轍,例如:1
,100
,-8080
,0
,等等。編程語言
計算機因爲使用二進制,因此,有時候用十六進制表示整數比較方便,十六進制用 0x 前綴和 0-9,a-f 表示,例如:0xff00,0xa5b4c3d2,等等。編輯器
浮點數也就是小數,之因此稱爲浮點數,是由於按照科學記數法表示時,一個浮點數的小數點位置是可變的。整數和浮點數在計算機內部存儲的方式是不一樣的,整數運算永遠是精確的(除法也是精確的),而浮點數運算則可能會有四捨五入的偏差。ui
字符串是以 '' 或 "" 括起來的任意文本,好比 'abc'
,"123"
等等。請注意,'' 或 "" 自己只是一種表示方式,不是字符串的一部分,所以,字符串 'abc'
只有 a,b,c 這 3 個字符。這個其餘的編程語言也是相似的。編碼
在上面那裏提到,字符串能夠用 ''
或者 ""
括起來表示。但是有些時候,咱們字符串自己就包含了 ''
或者 ""
,怎麼辦呢?spa
那這個時候就須要對字符串的某些特殊字符進行「轉義」,Python 字符串用 \
進行轉義。跟 JAVA 也是同樣的。
經常使用的轉義字符還有:
\n 表示換行
\t 表示一個製表符
\\ 表示 \ 字符自己複製代碼
具體例子:
那上面就有一個問題呢,若是一個字符串包含不少須要轉義的字符,對每個字符都進行轉義會很麻煩。這裏爲了應付這種狀況,咱們能夠在字符串前面加個前綴 r
,表示這是一個 raw 字符串,裏面的字符就不須要轉義了。
可是,要注意的一點是,可是r'...'
表示法不能表示多行字符串,也不能表示包含'
和"
的字符串。
若是要表示多行字符串,能夠用'''...'''
表示,固然你也還能夠在多行字符串前面添加 r
,把這個多行字符串也變成一個raw字符串
咱們都知道計算機只能處理數字,若是要處理文本,就必須先把文本轉換爲數字才能處理。最先的計算機在設計時採用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 編碼
布爾值和布爾代數的表示徹底一致,一個布爾值只有 True
、 False
兩種值,要麼是 True
,要麼是 False
,在 Python 中,能夠直接用 True、False 表示布爾值(請注意大小寫),也能夠經過布爾運算計算出來。
布爾值能夠用 and
、or
和 not
運算。
and
運算是與運算,只有全部都爲 True,and 運算結果纔是 True。
or
運算是或運算,只要其中有一個爲 True,or 運算結果就是 True。
not
運算是非運算,它是一個單目運算符,把 True 變成 False,False 變成 True。
基本上每種編程語言都有本身的特殊值——空值,在 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 程序中,變量是用一個變量名錶示,能夠是任意數據類型,變量名必須是大小寫英文、數字和下劃線(_)的組合,且不能用數字開頭,好比:
a=88複製代碼
這裏的 a
就是一個變量,表明一個整數,注意一點是 Python 是不用聲明數據類型的。在 Python 中 =
是賦值語句,跟其餘的編程語言也是同樣的,由於 Python 定義變量時不須要聲明數據類型,所以能夠把任意的數據類型賦值給變量,且同一個變量能夠反覆賦值,並且能夠是不一樣的數據類型。
這種變量自己類型不固定的語言稱之爲動態語言,與之對應的是靜態語言。靜態語言在定義變量時必須指定變量類型,若是賦值的時候類型不匹配,就會報錯。例如 Java 是靜態語言。
咱們來看下這段代碼,發現最後打印出來的變量 b 是 Hello Python
。
這主要是變量 a 一開始是指向了字符串 Hello Python
,b=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。