Python發展的未來方向
- 數據分析
- 自然語言處理
- 社交網絡分析
- 人工智能
- 深度學習
- 計算機視覺
- 網絡爬蟲
- 量化交易
- …
Python語言特點
- 語法簡潔,實現相同功能,代碼量相當於其他語言的1/10~1/5
- 跨平臺,可用於大部分操作系統,集羣,服務器,甚至小設備(樹莓派)上
- 可擴展,可與其他編程語言集成,如C,C++,Java等
- 開放源碼,Python和大部分支持庫及工具都是開源的
- 多用途,可用於快速,交互式代碼開發,也可用於構建大型應用程序,如科學計算,數據處理,人工智能等
- 類庫豐富,除了自身提供的幾百個內置庫,開源社區還貢獻了十幾萬個第三方庫,擁有良好的編程生態…
1.配置
軟件安裝完成配置了sublime的插件,運行了第一個hello world程序,可以在終端和IDE運行。
2.變量
字符串 方法 . upper()、.lower()、.title()首字母大寫
去除空白 .lstrip() .strip() .rstrip()
整數和浮點型
str() 轉化爲字符串
註釋 #…
import this 常看隱藏
3.列表
array[-1] 返回最後一個數組元素,以此類推。下標從0開始
.append() 在最後面追加新的列表元素
.insert(index,data)在列表的指定索引位置插入新的元素
del 語句 刪除 del array[index]
.pop(index) 刪除指定索引位置的值,默認刪除最後一個元素
.remove(value)刪除列表中指定值的元素
.sort()排序 按字母 反向可設置 sort(reverse=True )永久性排序,會改變原數組
sorted() 臨時排序,不改變原數組
.reverse(列表) 倒着排序
len() 獲取列表長度 不是方法,沒有.len()
4.操作列表
range(start,end , 步長 ) 生成系列數字
list( ) 可以將range()的結果轉換爲列表
統計運算 min() max() sum()
列表解析 array=[x2 for x in range(1,10)]
*切片 使用列表的一部分 print(array[start:end])
元組 不可修改的列表 使用括號包閉 array=(200,400)可以重新賦值但不能修改元素
設置代碼格式 縮進 (四個空格) 行長 空行 Python改進方案 PEP8
5.if語句
== 比較
and 連接多個條件
or 同上,一個成立即可
…in…
…not in…
if …if if 多個if獨立語句
if-else
if-elif-else 只執行一個代碼塊
輸出1-9序列:
num_arrays = [1,2,3,4,5,6,7,8,9]
for num_array in num_arrays:
if num_array == 1:
print('1st')
elif num_array == 2:
print("2nd")
elif num_array == 3:
print("3rd")
else:
print(str(num_array)+"th")
print("all over")
6.字典
鍵值對,用{ }包含,逗號隔開
for key, value in dictionary.items(): 其中key,value名稱可以任意
Python不關心鍵值對的添加順序,只關心鍵值對的關聯關係。
.items() 遍歷字典鍵值對列表
.keys() 遍歷字典的鍵,返回列表
.values() 遍歷字典的值,返回列表
1.在字典中存儲列表
2.在列表中存儲字典
3.在字典中存儲字典
item = []
for item_nums in range(30):
item_array = {'cyk':'xxxx'}
item.append(item_array)
for item_new in item[:5]:
print(item_new)
7.用戶輸入和while循環
input() 輸入並用變量保存
int() 轉化爲數值
% 求模運算符
raw_input() Python 2.7中輸入
while
flag = True 使用標誌,用於會有多個條件發生變化時break 不繼續執行,退出整個循環
continue 不繼續執行,回到循環開頭,根據條件判斷是否繼續循環
使用while循環處理列表和字典
8.函數 def
實參和形參
文檔字符串 ‘’’’’’ ‘’’’’’ 描述函數內容
位置實參 實參與形參位置一一對應
關鍵字實參 在調用時採用鍵值對,不考慮順序 (形參=實參)
返回值 return
切片表示法 [ : ] 創建列表副本,不會影響原列表(會花時間和內存創建副本,一般不用)
*arrays 傳遞任意數量的實參 ,顯示爲元組
**info 傳遞任意數量的實參,存儲到字典中
引用模塊 import module_name 調用 module_name.function_name()
引用模塊方法 from module_name import function_name1,2,3 調用 function_name()
創建別名 from module_name import function_name as fn 調用 fn()
給模塊指定別名 import module_name as mn
導入所有函數 from module_name import * 調用:直接調用函數 實踐中一般不用,採用具體導入和句點表示法
函數編寫指南
函數名: 全部小寫和下劃線,描述性文字
文檔字符串’’’’’’ ‘’’’’’’ 描述函數功能
給形參指定默認值,以及函數調用中的關鍵字實參,不要加空格
def fun_name(parameter_0,parameter_1='temp')
fun_name(para_0,para_1='temp1')
9.類、面向對象編程
class Dog() 類名首字母大寫
Python 2.7 中創建類 class Dog(object)
init(self) self 表示指示實例本身的引用,不需要傳參 init() 特殊的方法
以self爲前綴的變量可以供類中所有方法使用
class Dog():
def __init__(self, name, age):
self.name = name
self.age = age
def dog_run(self):
print(self.name +" run")
def dog_jump(self):
print(self.name +" jump")
dog = Dog('ss', 13)
dog.dog_jump()
繼承
class Son(Father):
def __init__(self,A,B,C):
super().__init__(A,B,C)
python 2.7 需要兩個實參:子類名和對象
class Son(Father):
def __init__(self,A,B,C):
super(Son,self).__init__(A,B,C)
模塊和類的相互引用 引用語句中不加括號 import module_name 調用: module_name.class_name
from module_name import ClassName
from module_name import * 不推薦使用
類編碼風格
類名:駝峯法命名法 ClassName, 不使用下劃線
類和模塊都需要文檔字符串描述功能 ‘’’’’‘說明’’’’’’
類使用一行空行分隔方法,模塊使用兩行空行分隔類。
10.文件和異常
異常:Python創建的特殊對象
with open('file.txt') as new_name:
temp = new_name.read()
print(temp)
with 在不再需要訪問文件時將其關閉,比close() 要好,python會自動在合適的時機關閉
文件路徑: 相對路徑 絕對路徑
window中使用\來劃分,Linux和OS X中使用/劃分
file_path='home\files\file_name.txt'
with open(file_path) as new_name:
.readlines() 逐行讀取
.replace(old, new)
.split() 將字符串按空格劃分成列表
open(‘地址’,‘w’) 寫入文件
讀取模式:‘r’(默認)
寫入模式:‘w’ 會清空原文件內容,不存在則新建
附加模式:‘a’ 以追加方式寫入文件,不存在則新建
讀寫模式:‘r+’.write() 寫入文件 不會自動換行,要加\n
錯誤處理:
將可能引發錯誤的代碼放入 try-except結構中,依賴於try成功執行的代碼放入else中
try:
.....
except 錯誤類型:
....
else:
.....
ZeroDivisionError FileNotFoundError
使用pass跳過錯誤,不執行任何操作except
ZeroDivisionError:
pass
.count(字符串) 計算字符串在原字符串中出現了多少次,區分大小寫
使用JSON結構存儲數據
json.dump(參數1,參數2) 1:要存儲的對象 2:被存儲的地方
json.load(文件名) 讀取json數據
import json 導入json
重構:將代碼劃分成一系列完成具體工作的函數,這樣的過程叫做重構。重構讓代碼更清晰,更易於理解和維護。
return None 不返回任意值
11.測試代碼
Python模塊 unittest
單元測試: 用於測試函數的某個方面沒有問題
測試用例:一組單元測試,用於測試函數在各種測試下都符合要求
全覆蓋測試:包含一整套單元測試,用於測試函數在各種情況下都沒問題,一般難以實現,用於後期。
測試方法名必須以test開頭
import unittest 導入測試模塊
繼承 unittest.TestCase類
self.assertEqual(first, second) 斷言方法 覈實得到的結果與期望的結果是否一致
結果如下:
句點表示一個測試通過了
OK表示所有的單元測試都通過了
測試沒有通過:
unittest.TestCase中的斷言方法
setUp()方法 用於設置一系列實例及屬性,並在測試方法中直接使用這些實例相當於創建全局變量和實例。
def setUp(self):
運行測試用例,每完成一個單元測試,都打印一個字符。. 表示通過
E 測試引發錯誤
F 斷言失敗
因此在運行測試用例時,在輸出的第一行看到的句點和字符串各不相同。
The End
以上,希望對你梳理python知識點有用。