1. 程式人生 > >python3基礎知識梳理

python3基礎知識梳理

Python3基礎知識梳理

1、第一個python程式的解釋

hello.py

#! /usr/bin/python                     #python是一門解釋語言可以使用./或source執行

# coding:utf-8                            #編碼格式,python直譯器自己匹配生效無所謂帶-*-不帶

print("hello python!!!\n")            #python2不支援這種輸出,其輸出不帶小括號

2、註釋

# 單行註釋

‘’’

這是多行註釋

‘’’

3、變數以及型別

變數就是用來儲存資料的

變數的資料型別:

Numbers(數字):int、long、float、complex(複數)

布林型別:True、False

String(字串)

List(列表)

Tuple(元組)

Dictionary(字典)

Python中定義變數不需要說明其型別,系統會自動識別,type(變數名稱)方法可以檢視其型別

變數命名:最好使用駝峰法命名,不能使用關鍵字命名,最好不要用雙下滑線命名(特別是開頭)

4、輸入輸出

輸入:

name = input(“請輸入你的名字\n”)   提示語,換行(\n)  python3格式

name = raw_input(“請輸入你的名字”)   python2格式

格式化輸出:

name = “小明”

age = 8

print(“姓名:%s,年齡%d\n”%(name,age))    python3格式

print “姓名:%s,年齡%d\n”%(name,age)     python2格式

格式符號

轉換

%f

浮點型

%s

通過str() 字串轉換來格式化

%d

有符號十進位制整數

5、運算子

運算子

描述

例項

+

兩個物件相加 a + b 輸出結果 30

-

得到負數或是一個數減去另一個數 a - b 輸出結果 -10

*

兩個數相乘或是返回一個被重複若干次的字串 a * b 輸出結果 200

/

x除以y b / a 輸出結果 2

//

取整除

返回商的整數部分 9//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0

%

取餘

返回除法的餘數 b % a 輸出結果 0

**

返回x的y次冪 a**b 為10的20次方, 輸出結果 100000000000000000000

=

賦值運算子

把=號右邊的結果給左邊的變數 num=1+2*3 結果num的值為7

複合運算子

運算子

描述

例項

+=

加法賦值運算子

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

6、資料型別轉換

函式

說明

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 )

將一個整數轉換為一個八進位制字串

7、條件分支

    if condition:

          條件為真執行的操作

    else:

          條件為假執行的操作

    if condition:

         action

   elif condition:

         action

   else:

        action

python可以有效避免“懸掛else”(if else對應關係出錯)

條件表示式(三元操作符)

       small = x ifx<y else y

       如果x<y ,small=x.否則small=y

斷言assert:當這個關鍵字後面的條件為假,程式自動崩潰並丟擲異常

      assert 3>4

      可以利用他置入檢查點

8、  迴圈語句

while 條件:

       滿足條件執行語句

for 臨時變數 in 可迭代物件:

       action

else:

       不滿足條件action

break 跳出整個迴圈

continue 結束本次迴圈進入下一次迴圈

他們只能在迴圈中使用,作用於當前迴圈

9、 字串 列表 元組 字典

字串:

我想應該都不陌生,以下是他的一些常用的方法

count(sub) 統計字串中出現sub的數量

endswith(sub) 以sub結束,返回布林值

startswith(sub) 以sub開始,返回布林值

find(sub) 查詢sub是否存在,如存在返回下標,否者返回-1

join(sub) 以字串做分割符,分割sub

replace(old, new) 替換

split(“sub”) 以sub分割字串

strip() 去除字串左右兩邊的空格

字串切片的使用:>>> tes ="123456"   >>>tes[0:4]   結果:’1234’

列表:

List = [1, ‘dafd’, 12.6,True ]

列表的元素可以是不同型別的

列表是一個可變、可迭代的物件

列表的訪問方式:下標索引,for迴圈迭代輸出,while迴圈輸出

列表的常見操作:

新增(append, extend, insert):

append()  在列表後面追加元素

extend()  可以將集合中的元素逐一新增到列表中去

insert(index, a) 在指定index前新增a元素

修改:List[index] = value

查詢:in ,not in 返回布林值

刪除(del, pop, remove):

del 根據下標進行刪除

pop 刪除最後一個元素

remove 根據元素的值進行刪除

排序(sort, reverse):

sort() 對自身進行排序,預設從小到大,引數reverse=True可改為倒序

reverse() 將list進行逆置

元組:

元組也可以存放不同的資料型別

元組只一個不可變、可迭代的物件

(python中不可修改元組的元素,元素不可刪除,只能進行訪問)

元組的訪問方式:下標索引,for迴圈迭代輸出,while迴圈輸出

元組常見的操作:

元組切片(其原本資料不變):

>>> tt =(1,2,3,"dfsf",12.4)

>>> tt[1:3]

(2, 3)

刪除整個元組:del 元組名

查詢:in, not in 返回布林值

count(sub) 查詢元組中sub元素的數量

字典:

字典是按照鍵值對的方式存放資料的

字典是一個可變、可迭代的物件

字典常見的操作:

修改與新增:

變數名['鍵'] = 資料

若字典中‘鍵’存在,則修改其值

否則新增新的鍵值

刪除(del, clear):

del 即可以刪除字典元素,又可以刪除整個字典

clear() 清空整個字典

len() 測試字典的長度,即鍵值對的個數

keys() 返回一個包含字典所有key的列表

values() 返回一個包含字典所有value的列表

items() 返回一個包含字典所有(鍵:值)元組的列表  例:[(‘name’:’fcd’),(‘age’:20)]

has_key(key) 判斷字典中是否存在key,返回布林值

10、函式

全域性變數和區域性變數:

Python同其他的語言一樣存在全域性變數和區域性變數,但在python的函式中如果不改變全域性變數的值,可以不必宣告,直接引用即可。如果需要改變需要使用global先進行宣告,再使用

函式定義與呼叫:

def 函式名():

       action

函式名()

同其他語言一樣python的函式也有返回值、引數,不過python可以在函式內寫說明文件

檢視函式說明文件help(函式名)

與其他語言相比python比較有特點的引數:收集引數(*args), 自定義引數(**kwargs)

Python中內嵌函式:內部函式呼叫外部函式變數需要nonlocal宣告

函式遞迴同其他語言一樣

匿名函式:使用lambda 返回值:表示式 (這種短小的匿名函式可以當作函式引數進行傳參)

11、模組匯入

以random模組為例:

import random

s = random.randint(1,10) #隨機產生一個1~10的整數

from random import randint()

s = randint(1,10)

12、檔案

檔案的開啟與關閉:

  fp = open(“檔名稱”,”開啟方式”)

檔案開啟方式

訪問模式

說明

r

以只讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。

w

開啟一個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

a

開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。

rb

以二進位制格式開啟一個檔案用於只讀。檔案指標將會放在檔案的開頭。這是預設模式。

wb

以二進位制格式開啟一個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

ab

以二進位制格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。

r+

開啟一個檔案用於讀寫。檔案指標將會放在檔案的開頭。

w+

開啟一個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

a+

開啟一個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。

rb+

以二進位制格式開啟一個檔案用於讀寫。檔案指標將會放在檔案的開頭。

wb+

以二進位制格式開啟一個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

ab+

以二進位制格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。

關閉檔案:fp.close()

檔案的讀寫:

fp.write() 向檔案中寫資料

fp.read() 從檔案中讀資料

fp.readlines() 將檔案中的資料一次性讀取,把每一行當做一個元素存入列表

fp.tell() 獲取檔案當前的位置

fp.seek(offset,from) 定位操作

       offset:偏移量

       from: 0 表示檔案開頭

               1 表示當前位置

               2 表示檔案末尾

檔案系統操作:

模組:打包的檔案系統

os模組:

常用方法:

os.getcwd():返回工作目錄

os.chdir(path):改變工作目錄

os.listdir(path=''):列出檔案目錄

os.mkdir(path):建立目錄

os.makedirs(path):建立遞迴目錄

os.remove(path):刪除檔案

os.removedirs(path):遞迴刪除

os.rename(old,new):檔案重新命名

os.system(command):執行系統的shell命令

os.curdir:指代當前目錄.等價於‘。’

os.pardir:指代上一級目錄

os.sep:輸出作業系統的路徑分隔符

os.linesep:當前平臺使用的行終止符

os.name:指出當前使用的作業系統

13、類和物件

定義類

class 類名:

       方法列表

類名開頭最好大寫

建立物件

物件名 = 類名()

屬性:

Python中定義私有屬性是變數名前加雙下劃線,如 __name

否則是公有屬性

魔法方法:

__init__(self)方法:初始化函式,設定一些預設值。在建立物件後立即被呼叫

__str__(self)方法:設定物件的返回值

__del__(self)方法:當刪除物件時,python直譯器會自動呼叫

繼承:

單繼承:class NameClass(BaseClass1)

多繼承:class NameClass(BaseClass1, BaseClass2,BaseClass3)

重寫父類方法:

所謂重寫,就是子類方法與父類方法同名,子類中的方法將會覆蓋父類中的方法

多型

所謂多型就時定義與執行不一致

靜態方法和類方法

類方法:類物件所擁有的方法,需要用裝飾器@clsaamethod來標記為類方法,對於類方法第一個引數必須是類物件,一般以cls作為第一個引數。它可以通過例項物件引用,也可通過類物件引用

靜態方法:需要通過@staticmethod類進行修飾,不必有引數。它可以通過例項物件引用,也可通過類物件引用

14、異常

常見標準異常:

AssertionErron/AttributeError/EOFError/IndexError/KeyError

/NameError/OSError/OverflowError/SyntaxError/TypeError/ZeroDivisionError

捕獲異常:

try:

        檢測範圍

exceptException[as reason]:

        出現異常後的處理程式碼 print('程式碼')

exceptException[as reason];

        出現異常後的處理程式碼 print('daimai'+str(reason))       

except(Error1,Error2):

        處理異常的程式碼

try:

        檢測範圍

except Exception[as reason]:

        處理異常的程式碼

finally:

        無論如何都會處理的程式碼

raise語句丟擲異常

raise Exception('指示程式碼')