python知識要點


  • 編譯:將源代碼轉換成目標代碼的過程
  • 解釋:將源代碼逐條轉換成目標代碼同時逐條運行目標代碼的過程
    • c語言是編譯型語言;python是解釋型語言
  • Python的特點:語法簡潔;與平台無關;粘性擴展;開源理念;通用靈活;強制可讀;支持中文;模式多樣;類庫豐富

 

  • Python的注釋格式:
  1. 單行注釋:以#開頭
  2. 多行注釋:以'''三個單引號來作為開頭和結尾        
  • Python的變量命名規則:長度沒有限制,允許采用大寫字母、小寫字母、數字、下划線和漢字等字符來給變量命名,但不允許首字符為數字,同時中間不能出現空格。
  • 關鍵字
Python關鍵字
False None True    
and as assert break class continue
def del elif else except finally
for from global if import in
is lambda nonlocal not or pass
raise return try while

eval函數(本質為脫最外層引號)

可以使用eval()嵌套input()進行實現輸入需要的類型

  input()輸出為str類型

  注意“:”的使用(在函數定義,遞歸條件使用的情形下需要使用:)


數據類型(char不是python數據類型)
基本數據類型(整數、浮點數、復數)

int float complex

浮點數最多精確15位

復數x:實部:x.real

     虛部:x.imag

//:整數商 輸出數據類型為int

/:商    輸出數據類型為float(xx.x)

**:冪函數(x**y和pow(x,y)意義相同


字符串(輸入輸出、★切片)

字符串定義時可以使用單引號、雙引號和三引號來表示,其中單引號和雙引號為單行字符串,使用單引號時可以將雙引號作為字符串一部分,使用雙引號時可以將單引號作為字符串一部分,三引號可以表示單行或多行,換行時,會在字符串內添加一個元素\n

基本字符串操作

基本字符串操作
操作符 描述
x+y 連接兩個字符串x和y
x*n或n*x 復制n次字符串x
x in s 如果x為s的子串,返回true;否則返回false
str[i] 索引,返回字符串str的第i個元素
str[N:M] 切片,范圍索引第N個元素到第M-1個元素

 

 len(x)  返回字符串x的長度,也可以應用在其他組合數據類型中

內置字符串處理方法
方法 描述
str.lower 返回字符串str的副本,全部字符小寫
str.upper 返回字符串str的副本,全部字符大寫
str.split(sep="*",maxsplit=-1) 返回一個列表,由str被sep分割后的狀態構成,maxsplit默認為-1(全部分割)指定maxsplit=x則最多分割x次
str.replace(old,new,count) 返回字符串str的副本,count未給定,則所有old字符串被替換成new,否則替換前count次
str.join(iterable(可迭代類型)) 返回一個新字符串,由可迭代類型變量iterable中每個元素構成,元素間用str分隔

 

集合:列表:元組:字符串:

int(3.14)== 3
int(9.9)== 9
float(3)== 3.0

表達式取位寬最長的數據類型
★if(0.1+0.2==0.3)  

false (float的數據處理)

  • pow(x,y,z)=(x**y)%z,其中參數z可以省略

特殊格式化控制字符

特殊的格式化控制字符
\a 蜂鳴,響鈴
\b 向后退一格
\f 換頁
\n 換行,光標移動到下行首行
\r 回車,光標移動到本行首行
\t 水平制表
\v 垂直制表
\0 NULL,什么都不做

 

  • 函數定義(語法形式)

def 函數名():

  .....

  return 返回值

其中函數名不能是python內的關鍵字,沒有返回值時,函數默認返回None

  • 全局變量:
    • 作用域:全局作用域
    • 生命周期:程序運行期間一直存在
  • 局部變量:
    • 作用域:局部作用域
    • 生命周期:程序運行出局部作用域,變量即被釋放

變量聲明:

1.簡單數據類型變量

(1)簡單數據類型變量無論是否與全局變量重名,僅在函數內部創建和使用,函數退出后變量被釋放,對同名全局變量無影響

(2)簡單數據類型變量在函數中作為全局變量(global)聲明后,該全局變量保留且值受到函數的影響

2.組合數據類型變量

(1)組合數據類型變量若在函數內部沒有真實創建,且有其同名全局變量,則內部可以直接調用並修改全局變量的值

(2)組合數據類型變量若在函數內部真實創建(未真實創建且沒有同名全局變量則報錯),則在函數結束時被釋放,對同名全局變量無影響

(3)組合數據類型變量在函數中作為全局變量(global)聲明后,該全局變量保留且值受到函數的影響

 

 

 

 

 

程序控制結構 

  • 程序的基本結構有三種:
    • 順序結構
    • 分支結構
      • 單分支
      • 雙分支
    • 循環結構
      • 條件循環
      • 遍歷循環

循環的使用

分支結構根據條件判斷結果選擇不同的向前執行路徑

循環結構根據條件判斷結果能夠向后反復執行

  • 循環保留字:
    • break:跳出當前所在的循環,程序從循環后繼續執行
    • continue:跳出本次循環,但將繼續遍歷剩余循環列表
  • 流程圖的基本元素有:
    • 起止框
    • 判斷框
    • 處理框
    • 輸入/輸出框
    • 注釋框
    • 流向線
    • 連接點

遞歸調用(程序題)
1.階乘

 

 其中round()函數作用是四舍五入取最接近的整數

2.字符串反轉

 

組合數據類型

  • 元組、列表、字符串有序
  • 集合、字典無序
  • 集合符號是{}
  • 列表符號是[]
  • 元組符號是()
  • 字符串是''' ''' 或" "或' '

一、集合類型

```
集合是多個元素的無序組合
集合元素之間無序,每個元素唯一,不可重復
*集合元素不可更改,不能說可變數據類型
```

```
集合用{}表示,元素間用","分隔
建立集合類型用{}或set()
建立空集合類型,必須使用set()
```

操作符(未要求)

集合類型數據的操作符
操作符 描述
S|T (並) S和T內所有元素
S-T (差) 在S但不在T內的元素
S&T (交) 同時在S和T內的元素
S^T (補) S和T內非相同的元素
S<=T或S<T 判斷S和T的子集關系
S>=T或S>T 判斷S和T的包含關系
S|=T (並) 更新S集合 包括S和T內的所有元素
S-=T (差) 更新S集合 在S但不在T內的元素
S&=T (交) 更新S集合 同時在S和T內的元素
S^=T (補) 更新S集合 S和T內非相同的元素

 

處理方法(未要求)

集合類型的處理方法
方法 描述
S.add(x)  如果x不在集合S內,則將x添加到S
S.discard(x) 移除S中元素x,如果x不在S中,不報錯
S.remove(x) 移除S中元素x,不如x不在S中,產生KeyError異常
S.clear() 移除S內所有元素
S.pop() 隨機取出s內一個元素並刪除,若S為空,產生KeyError異常
S.copy() 返回S的一個副本
len(S) 返回S的元素個數
x in S 判斷S中元素x,在S內返回True,否則返回Flase
x not in S 判斷S中元素x,不在S內返回True,否則返回Flase
set(x) 將其他類型變量x變為集合類型

 

應用

數據去重:利用集合無重復元素的特點
包含關系比較

 

二、序列類型


```
序列是一維元素向量,元素類型可以不同
類似數學元素序列:S0,S1,S2……
元素間由序號引導,通過下標訪問序列的特定元素
序列類型是一個基類類型
包含:*字符串類型 *元組類型 *列表類型
```

操作符(未要求)

序列類型的操作符
x in S  判斷序列S中元素x,在S內返回True,否則返回Flase
x not in S 判斷序列S中元素x,不在S內返回True,否則返回Flase
S+T 連接兩個序列S和T(S、T必須為同類型)
S*n或n*S 將序列s重復n次
S[i] 索引,返回S中第i而元素,i是序列序號
S[i:j:k]  分片,返回S中的第i到j個元素以k為步數的子序列(k默認為1,可省略)
len(S) 返回序列S的長度,即元素個數
min(S) 返回序列S的最小元素,元素需可比較
max(S) 返回序列S的最大元素,元素需可比較
S.index(x) 返回序列S第一次出現x的位置
S.index(x,i,j) 返回序列S從i開始到j位置第一次出現x的位置
S.count(x) 返回序列中出現x的總次數

 

應用場景:

```
元組用於元素不改變的應用場景,固定搭配場景
列表更加靈活,是最常用的序列類型
列表的最主要作用:表示一組有序數組,進而進行操作
```

1.元組類型

```
元組是序列類型的一種擴展
元組的一種序列類型,一旦創建不能修改
使用()或tuple()創建,元素間用","分隔
可以使用或不使用()
```

2.列表類型

```
列表是一種序列類型,創建后可以被隨意修改
使用[]或list()創建,元素間用“,”分割
列表中各元素的類型可以不同
```

操作符(**重要)

列表類型的操作符
操作符 描述

ls[i]=x 

替換列表ls第i元素為x
ls[i:j]=lt 用lt替換ls中的第i到j-1個元素
ls[i:j:k]=lt 用列表lt替換ls切片后所對應的元素子列表
del ls[i] 刪除ls的第i元素
del ls[i:j:k] 刪除ls中第i到第j-1以k為步長的元素
ls+=lt 更新ls,將lt元素增加到ls中
ls*=n 更新列表ls,其元素重復n次
ls.append(x) 在列表ls最后增加元素x
ls.clear 刪除所有元素
ls.copy() 生產新列表,賦值所有元素
ls.insert(i,x) 在ls第i位置增加元素x
ls.pop(i) 將第i元素取出並刪除,默認從列表末尾刪除元素,ls為空時報錯
ls.remove(x) 將ls中出現的第一個x刪除
ls.reverse() 將ls內的元素反轉

 文件操作:

***必須將程序保存到要打開的文件的路徑

 

 

 

 在python shell中必須更改工作目錄,當然在實際程序編寫過程中可以將文件或程序的位置更改

文件讀取方法的區別 

文件內容讀取方法
操作方法 含義
<file>.readall() 讀入整個文件內容,返回一個字符串或字節流*
<file>.read(size=-1) 從文件中讀入整個文件內容,若給出size則讀前size長度的字符串或字節流
<file>.readline(size=-1) 從文件中讀入一行內容,若給出size則讀該行前size長度的字符串或字節流
<file>.readlines(hint=-1) 從文件中讀入全部行內容,每行返回一個列表,若給出hint則讀入前hint行的內容

 

 <file>.readall()方法似乎在現版本的python不再適用

注意:每次讀取后指針指向最后,需要seek(0)命令回到開始
每次進行文件讀取時需要使用open命令打開文件

在操作完成后需要使用close命令關閉文件,釋放文件的使用授權,不關閉文件句柄則會無法進行文件刪除等操作,同時及時關閉文件能夠避免超出操作系統的限制的問題

第三方庫(選擇):

第三方庫
從數據分析到人工智能
數據分析 數據可視化 文本處理 機器學習

numpy

pandas

Scipy

Matplotlib

seaborn

mayayi

PyPDF2

NLTK

Python-docx

Sciket-learn

TensorFlow

MXNet

從web解析到網絡空間
網絡爬蟲 web信息提取 web網站開發 網絡應用開發

Requests

Scrapy

pyspider

BeautifulSoup

Re

Python-Goose

Django

Pyramind

Flask

WeRoBot

aip

MyQR

從數據分析到人工智能

數據分析: 
numpy 
pandas 
SciPy 

數據可視化:
Matplotlib  
seaborn  
mayavi  

文本處理:
PyPDF2(處理pdf)
NLTK(自然語言文本處理)     
Python-docx(處理word) 

機器學習:
Scikit-learn(最基本最優秀的機器學習之一)
TensorFlow
MXNet(基於神經網絡,自動駕駛、機器翻譯、語音識別)

從web解析到網絡空間

網絡爬蟲:
Requests(最友好,頁面級)
Scrapy(最主要最專業的框架之一)
pyspider(強大的web頁面爬取)

web信息提取:
BeautifulSoup(HTML和XML的解析庫)
Re(正則表達式解析處理)
Python-Goose(提取文章類型)

web網站開發:
Django(最流行web應用框架,MTV模式)
Pyramid(規模適中)
Flask(簡單規模小快速)
規模:Django>Pyramid>Flask

網絡應用開發:
WeRoBot(微信公眾號開發框架)
aip(百度AI開放平台接口)
MyQR(二維碼生成)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM