一、python的優缺點
優點:
- 優美、清晰、簡單
- 高級語言
- 開發效率高
- 可移植性、可拓展性、可嵌入性
缺點:
- 運行速度慢
- 代碼不能加密
- 線程不能利用多CPU
二、python2與python3的區別
代碼:
- python2:代碼混亂,重復代碼較多,冗余
- python3:代碼崇尚優美、清晰、簡單
print:
- python2:print是一個語句
- python3:print是一個函數
input:
- python2:raw_input()接收字符串,input()接收數字
- python3:input()接收的全部是字符串
編碼方式:
- python2:默認編碼是ASCII碼(若想使用中文:#_*_coding:utf-8_*_)
- python3:默認編碼是utf-8,支持中文
不等運算符:
- python2:可以使用!=或者><
- python3:只能使用!=
創建迭代計數器:
- python2:xrange
- python3:range
repr:
- python2:repr可以是語句
- python3:只允許使用repr()函數
文件:
- python2:可以使用!=或者><
- python3:只能使用!=
整型:
- python2:存在long型
- python3:全部為int型
修改語法:
- python2:字典的keys,values,items以及map,filter,reduce返回的都是一個列表
- python3:字典的keys,values,items以及map,filter,reduce返回一個可迭代對象
新增語法:
- python2:print和exec語句,無nolocal等方法
- python3:print和exec改為函數,新增nolocal等方法
繼承:
- python2:默認經典類(新式類需要(object))
- python3:只有新式類
三、開發的種類
編譯型
缺點:排錯慢,開發效率低,不可移植
優點:執行效率高
典型:C語言,go語言
解釋型
缺點:執行效率低
優點:排錯快,開發效率高,可移植
典型:python,PHP
混合型
典型:java,C#
四、python的種類
Cpython:基於C語言開發的
lpython
Jpython
PyPy:目前執行最快的
五、變量與常量
常量:一直不變的量,約定俗稱,全部大寫為常量
變量:把程序的運行結果存放在內存中,以便后期代碼的調用
要求:
- 必須由數字、字母、下划線組成
- 不能以數字開頭
- 不能是關鍵字
- 不能是中文,不能太長,要有可描述性
- 官網推薦下划線old_boy和駝峰體OldBoy
六、語句
if語句
elif分支判斷
while語句
flag(標志位)
break(完全結束循環)
continue(跳出本次循環)
else(循環正常退出執行)
for語句
break(完全結束循環)
continue(跳出本次循環)
else(循環正常退出執行)
in,not in
s = '老男孩alexwusir' print('老男孩' in s) # True print('老男孩wusir' in s) # False print('老男' in s) # True print('老男' not in s) # False # 結果表明在一個字符串中,用一個母字符串中包含的定義的子字符串必須是連續的為True,不連續是False,in表示包含,not in表示非包含
七、邏輯運算符
# and or not # 第一種:前后都是比較運算。 # 優先級:()> not > and > or 同一個優先級,從左至右依次計算。 print(1 > 2 and 3 < 4 and 3 > 2 or 2 < 3) # True print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1) # True print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8) # False # 第二種:前后都是數值運算。 ''' x or y if x True,則 return x,否則 return y ''' print(1 or 3) # 1print(2 or 3) # 2 print(0 or 3) # 3 print(-1 or 3) # -1 print(1 and 2) # 2 print(0 and 2) # 0 # 第三種:混合。 print(1 > 2 or 3 and 4) # 4 print(2 or 2 > 3 and 4) # 2 print(0 or 2 > 3 and 4) # False #數據類型轉換: ''' int ---> bool 非0即True,0為False bool---> int True 1 False 0 print(int(True)) print(int(False)) print(bool(100)) print(bool(0)) '''
八、格式化輸出
#% 占位符 s str 字符串 d digit 數字 #第一種: name = input('請輸入你的姓名:') age = input('請輸入你的年齡:') hobby = input('請輸入你的愛好:') msg = '我叫%s,今年%d歲,愛好%s' % (name,int(age),hobby) print(msg) #第二種 dic = {'name':'老男孩','age':51,'hobby':'無所謂'} msg = '我叫%(name)s,今年%(age)d歲,愛好%(hobby)s' % dic print(msg) #在格式化輸出中單純的顯示% 用%% 解決。 name = input('請輸入你的姓名:') age = input('請輸入你的年齡:') msg = '我叫%s,今年%d歲,學習進度為1%%' % (name,int(age)) print(msg)
九、編碼
一、基本概念
1,發電報:滴滴滴滴 實際是高低電平。
密碼本:
今 0000 0001
天 0000 0101
喝 0000 0011
酒 0000 1100
去 0001 1010
呀 0001 0001
0010010 1000011 1100101 010001
2,計算機在存儲,和傳輸的時候, 01010101
初期密碼本:
asiic 包含數字,英文,特殊字符。八位
01000001 01000010 01000011 A B C
8位 = 1 byte 表示一個字符。
萬國碼unicode,將所有國家的語言包含在這個密碼本。
初期:16位,兩個字節,表示一個字符。
A : 00010000 00010010
中: 00010010 00010010
升級:32位,四個字節,表示一個字符。
A : 00010000 00010010 00010000 00010010
中: 00010010 00010010 00010010 00010010
資源浪費。
升級:utf-8。最少用8位(一個字節),表示一個字符。
英文:a :00010000 用8位表示一個字符。
歐洲:00010000 00010000 16位兩個字節表示一個字符。
亞洲 中 :00010000 00010000 00010000 24位,三個字節表示一個字符。
utf-16
gbk:國標。
只包含:英文中文。
英文:a :00010000 8位,一個字節表示一個字符。
中文:中:00010000 00010000 16位,兩個字節表示一個字符。
gb2312.....
8 bit = 1byte
1024byte=1kb
1024kb = 1MB
1024MB = 1GB
1024GB = 1TB
二、用法
存儲和傳輸是0101,但是不可以使用Unicode編碼進行傳輸
python3中的編碼:python3中str在內存中的編碼方式是Unicode。python3中的str不能直接存儲和發送。
bytes的編碼方式是非Unicode(UTF-8,GBK,GB2312....)
對於英文:str表現形式: s = 'qiujie'
內部編碼為:Unicode
byte表現形式s = b'kuoiea'
內部編碼形式為非unicode
對於中文:str表現形式: s = '中國'
內部編碼為:Unicode
byte表現形式s = b'\xe4\xb8\xad\xe5\x9b\xbd'
內部編碼形式為非unicode
encode編碼:將str類型轉換成byte類型
decode解碼:將byte類型轉換成str類型
s = 'alex' s1 = s.encode('utf-8') # unicode ---> utf-8 編碼 s3 = s1.decode('utf-8') # utf-8 ---> unicode 解碼 print(s3) # s = 'alex' # s1 = s.encode('gbk') # unicode ---> gbk 編碼 # s3 = s1.decode('gbk') # gbk ---> unicode 解碼 # print(s3) #gbk ---> utf-8 # s = 'alex' # s1 = s.encode('gbk') # print(s1) # # s2 = s1.decode('gbk').encode('utf-8') # print(s2)
python基礎思維導圖鏈接:https://www.processon.com/view/link/5ae71b80e4b019d3a919be99
