python3.6基礎知識
Python中預設的編碼格式是 ASCII格式,在沒修改編碼格式時無法正確列印漢字,所以在讀取中文時會報錯。
解決方法為只要在檔案開頭加入# -*-coding: UTF-8 -*-或者#coding=utf-8就行了
注意:#coding=utf-8的=號兩邊不要空格。
注意:Python3.X原始碼檔案預設使用utf-8編碼,所以可以正常解析中文,無需指定 UTF-8編碼。
所有 Python檔案將以.py為副檔名。
Python 識別符號
在 Python裡,識別符號由字母、數字、下劃線組成。
在 Python中,所有識別符號可以包括英文、數字以及下劃線(_),但不能以數字開頭。
Python
以下劃線開頭的識別符號是有特殊意義的。以單下劃線開頭_foo的代表不能直接訪問的類屬性,需通過類提供的介面進行訪問,不能用from xxx import *而匯入;
以雙下劃線開頭的__foo代表類的私有成員;以雙下劃線開頭和結尾的__foo__代表 Python 裡特殊方法專用的標識,如__init__()代表類的建構函式。
Python 可以同一行顯示多條語句,方法是用分號;分開
Python 保留字元
下面的列表顯示了在Python中的保留字。這些保留字不能用作常數或變數,或任何其他識別符號名稱。
所有 Python的關鍵字只包含小寫字母。
and |
exec |
not |
assert |
finally |
or |
break |
for |
pass |
class |
from |
|
continue |
global |
raise |
def |
if |
return |
del |
import |
try |
elif |
in |
while |
else |
is |
with |
except |
lambda |
yield |
多行語句
Python語句中一般以新行作為為語句的結束符。
但是我們可以使用斜槓( \)將一行的語句分為多行顯示,如下所示:
total = item_one +
item_two + \
item_three
語句中包含 [], {}或 () 括號就不需要使用多行連線符。如下例項:
days = ['Monday','Tuesday', 'Wednesday',
'Thursday','Friday']
Python 引號
Python 可以使用引號( ' )、雙引號( " )、三引號( ''' 或 """ )來表示字串,引號的開始與結束必須的相同型別的。
其中三引號可以由多行組成,編寫多行文字的快捷語法,常用於文件字串,在檔案的特定地點,被當做註釋。
word = 'word'
sentence = "這是一個句子。"
paragraph = """這是一個段落。
包含了多個語句"""
Python註釋
python中單行註釋採用 #開頭。
python 中多行註釋使用三個單引號(''')或三個雙引號(""")。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 檔名:test.py
'''
這是多行註釋,使用單引號。
這是多行註釋,使用單引號。
這是多行註釋,使用單引號。
'''
"""
這是多行註釋,使用雙引號。
這是多行註釋,使用雙引號。
這是多行註釋,使用雙引號。
"""
Python空行
函式之間或類的方法之間用空行分隔,表示一段新的程式碼的開始。類和函式入口之間也用一行空行分隔,以突出函式入口的開始。
空行與程式碼縮排不同,空行並不是Python語法的一部分。書寫時不插入空行,Python直譯器執行也不會出錯。但是空行的作用在於分隔兩段不同功能或含義的程式碼,便於日後程式碼的維護或重構。
記住:空行也是程式程式碼的一部分。
Print 輸出
print 預設輸出是換行的,如果要實現不換行需要在變數末尾加上逗號,
# 不換行輸出
print x,
print y,
變數賦值
Python 中的變數賦值不需要型別宣告。
每個變數在記憶體中建立,都包括變數的標識,名稱和資料這些資訊。
每個變數在使用前都必須賦值,變數賦值以後該變數才會被建立。
等號(=)用來給變數賦值。
等號(=)運算子左邊是一個變數名,等號(=)運算子右邊是儲存在變數中的值。
多個變數賦值
Python允許你同時為多個變數賦值。例如:
a = b = c = 1
以上例項,建立一個整型物件,值為1,三個變數被分配到相同的記憶體空間上。
您也可以為多個物件指定多個變數。例如:
a, b, c = 1, 2,"john"
以上例項,兩個整型物件1和2的分配給變數 a和 b,字串物件 "john"分配給變數 c。
標準資料型別
在記憶體中儲存的資料可以有多種型別。
例如,一個人的年齡可以用數字來儲存,他的名字可以用字元來儲存。
Python 定義了一些標準型別,用於儲存各種型別的資料。
Python有五個標準的資料型別:
· Numbers(數字)
· String(字串)
· List(列表)
· Tuple(元組)
· Dictionary(字典)
Python數字
數字資料型別用於儲存數值。
他們是不可改變的資料型別,這意味著改變數字資料型別會分配一個新的物件。
當你指定一個值時,Number物件就會被建立:
var1 = 1
var2 = 10
您也可以使用del語句刪除一些物件的引用。
del語句的語法是:
delvar1[,var2[,var3[....,varN]]]]
您可以通過使用del語句刪除單個或多個物件的引用。例如:
del var
del var_a, var_b
Python支援四種不同的數字型別:
· int(有符號整型)
· long(長整型[也可以代表八進位制和十六進位制])
· float(浮點型)
· complex(複數)
- Python 還支援複數,複數由實數部分和虛數部分構成,可以用 a + bj,或者 complex(a,b) 表示, 複數的實部 a 和虛部 b 都是浮點型。
Python字串
字串或串(String)是由數字、字母、下劃線組成的一串字元。
python的字串列表有2種取值順序:
· 從左到右索引預設0開始的,最大範圍是字串長度少1
· 從右到左索引預設-1開始的,最大範圍是字串開頭
如果你要實現從字串中獲取一段子字串的話,可以使用變數 [頭下標:尾下標],就可以擷取相應的字串,其中下標是從 0 開始算起,可以是正數或負數,下標可以為空表示取到頭或尾。
比如:
s ='ilovepython'
s[1:5]的結果是love。
加號(+)是字串連線運算子,星號(*)是重複操作
printstr[2:]#輸出從第三個字元開始的字串
printstr *2# 輸出字串兩次
printstr +"TEST"#輸出連線的字串
Python列表
List(列表)是 Python中使用最頻繁的資料型別。
list = ['runoob',786 , 2.23,'john',70.2]
Python元組
元組是另一個數據型別,類似於List(列表)。
元組用"()"標識。內部元素用逗號隔開。但是元組不能二次賦值,相當於只讀列表。
tuple = ('runoob',786 , 2.23,'john',70.2)
Python 字典
字典(dictionary)是除列表以外python之中最靈活的內建資料結構型別。列表是有序的物件集合,字典是無序的物件集合。
兩者之間的區別在於:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。
字典用"{ }"標識。字典由索引(key)和它對應的值value組成。
dict = {}
dict['one'] ="This is one"
dict[2] ="This is two"
tinydict = {'name':'john','code':6734,'dept':'sales'}
printdict['one']#輸出鍵為'one' 的值
printdict[2]#輸出鍵為 2 的值
printtinydict#輸出完整的字典
printtinydict.keys()#輸出所有鍵
printtinydict.values()#輸出所有值
Python資料型別轉換
有時候,我們需要對資料內建的型別進行轉換,資料型別的轉換,你只需要將資料型別作為函式名即可。
以下幾個內建的函式可以執行資料型別之間的轉換。這些函式返回一個新的物件,表示轉換的值。
Python算術運算子
以下假設變數: a=10,b=20:
運算子 |
描述 |
例項 |
+ |
加 -兩個物件相加 |
a + b 輸出結果 30 |
- |
減 -得到負數或是一個數減去另一個數 |
a - b 輸出結果 -10 |
* |
乘 -兩個數相乘或是返回一個被重複若干次的字串 |
a * b 輸出結果 200 |
/ |
除 - x除以y |
b / a 輸出結果 2 |
% |
取模 -返回除法的餘數 |
b % a 輸出結果 0 |
** |
冪 -返回x的y次冪 |
a**b 為10的20次方,輸出結果 100000000000000000000 |
// |
取整除 -返回商的整數部分 |
9//2 輸出結果 4 , 9.0//2.0輸出結果 4.0 |
Python賦值運算子
以下假設變數a為10,變數b為20:
運算子 |
描述 |
例項 |
= |
簡單的賦值運算子 |
c = a + b 將 a + b的運算結果賦值為 c |
+= |
加法賦值運算子 |
c += a 等效於 c = c + a |
-= |
減法賦值運算子 |
c -= a 等效於 c = c - a |
*= |
乘法賦值運算子 |
c *= a 等效於 c = c * a |
/= |
除法賦值運算子 |
c /= a 等效於 c = c / a |
%= |
取模賦值運算子 |
c %= a 等效於 c = c % a |
**= |
冪賦值運算子 |
c **= a 等效於 c = c ** a |
//= |
取整除賦值運算子 |
c //= a 等效於 c = c // a |
Python邏輯運算子
Python語言支援邏輯運算子,以下假設變數 a為 10, b為 20:
運算子 |
邏輯表示式 |
描述 |
例項 |
and |
x and y |
布林"與" -如果 x 為 False,x and y返回 False,否則它返回 y的計算值。 |
(a and b) 返回 20。 |
or |
x or y |
布林"或" -如果 x 是非 0,它返回 x的值,否則它返回 y 的計算值。 |
(a or b) 返回 10。 |
not |
not x |
布林"非" -如果 x 為 True,返回 False。如果 x 為 False,它返回 True。 |
not(a and b) 返回 False |
Python成員運算子
除了以上的一些運算子之外,Python還支援成員運算子,測試例項中包含了一系列的成員,包括字串,列表或元組。
運算子 |
描述 |
例項 |
in |
如果在指定的序列中找到值返回 True,否則返回 False。 |
x 在 y序列中 , 如果 x 在 y序列中返回 True。 |
not in |
如果在指定的序列中沒有找到值返回 True,否則返回 False。 |
x 不在 y序列中 , 如果 x 不在 y序列中返回 True。 |
Python身份運算子
身份運算子用於比較兩個物件的儲存單元
運算子 |
描述 |
例項 |
is |
is 是判斷兩個識別符號是不是引用自一個物件 |
x is y,類似 id(x) == id(y) ,如果引用的是同一個物件則返回 True, 否則返回 False |
is not |
is not 是判斷兩個識別符號是不是引用自不同物件 |
x is not y,類似 id(a) != id(b)。如果引用的不是同一個物件則返回 結果 True,否則返回 False。 |
注:id()函式用於獲取物件記憶體地址。
is 與 ==區別:
is 用於判斷兩個變數引用物件是否為同一個, ==用於判斷引用變數的值是否相等。
Python提供了for迴圈和while迴圈(在Python中沒有do..while迴圈):
迴圈型別 |
描述 |
在給定的判斷條件為 true時執行迴圈體,否則退出迴圈體。 |
|
重複執行語句 |
|
你可以在while迴圈體中巢狀for迴圈 |
迴圈控制語句
迴圈控制語句可以更改語句執行的順序。Python支援以下迴圈控制語句:
控制語句 |
描述 |
在語句塊執行過程中終止迴圈,並且跳出整個迴圈 |
|
在語句塊執行過程中終止當前迴圈,跳出該次迴圈,執行下一次迴圈。 |
|
pass是空語句,是為了保持程式結構的完整性。 |
迴圈使用 else語句
在 python中,while … else在迴圈條件為 false時執行 else 語句塊:
例項
#!/usr/bin/pythoncount =0whilecount <5: printcount," is less than 5"count =count + 1else:printcount," is not less than 5"
迴圈使用 else語句
在 python中,for … else表示這樣的意思,for中的語句和普通的沒有區別,else中的語句會在迴圈正常執行完(即 for不是通過 break 跳出而中斷的)的情況下執行,while … else也是一樣。
例項
fornuminrange(10,20):# 迭代 10到 20 之間的數字
foriinrange(2,num):# 根據因子迭代
ifnum%i ==0: #確定第一個因子
j=num/i#計算第二個因子
print'%d等於 %d * %d' %(num,i,j)
break#跳出當前迴圈
else: # 迴圈的 else部分
printnum,'是一個質數'
建立類
使用 class 語句來建立一個新類,class 之後為類的名稱並以冒號結尾:
class ClassName:
'類的幫助資訊' #類文件字串
class_suite #類體
類的幫助資訊可以通過ClassName.__doc__檢視。
class_suite 由類成員,方法,資料屬性組成。
self代表類的例項,而非類
類的方法與普通的函式只有一個特別的區別——它們必須有一個額外的第一個引數名稱,按照慣例它的名稱是 self。
classTest:
defprt(self):
print(self)
print(self.__class__)
t = Test()
t.prt()
單下劃線、雙下劃線、頭尾雙下劃線說明:
· __foo__:定義的是特殊方法,一般是系統定義名字,類似__init__()之類的。
· _foo:以單下劃線開頭的表示的是 protected型別的變數,即保護型別只能允許其本身與子類進行訪問,不能用於from moduleimport *
· __foo:雙下劃線的表示的是私有型別(private)的變數,只能是允許這個類本身進行訪問了
Python pass語句
Python pass是空語句,是為了保持程式結構的完整性。
pass 不做任何事情,一般用做佔位語句。
Python隨機數函式
隨機數可以用於數學,遊戲,安全等領域中,還經常被嵌入到演算法中,用以提高演算法效率,並提高程式的安全性。
Python包含以下常用隨機數函式:
函式 |
描述 |
從序列的元素中隨機挑選一個元素,比如random.choice(range(10)),從0到9中隨機挑選一個整數。 |
|
隨機生成下一個實數,它在[0,1)範圍內。 |
|
改變隨機數生成器的種子seed。如果你不瞭解其原理,你不必特別去設定seed, |