基本的文法
- 肯定嚴格區分大小寫之類的
- 一行就是一條語句,每一條語句以換行結束,如果一行想寫多條語句,每一條語句要以;隔開
- 一條語句需要多行編寫的時候,在一行的末尾以\結束,下一行和這行就是同一條語句
- python是嚴格縮進的,縮進代表的是代碼塊
- 在python中#表示注釋
- python中使用變量是不需要聲明的,直接給變量指派就行了,而且python是動态類型的語言,可以為變量賦任何類型的值,指派後又可以修改成任意類型的值
-
python的數值分為三種:整數,浮點數,複數
整數int
在python中所有的整數都是int類型的,而且它不像其他語言那樣有大小限制的,python的int類型是沒有限制的,可以是一個無限大的整數,如果數字的長度過于長,還可以用下劃線進行分割,例如a=45_46_45,這裡a的值就是454645,編譯的時候将_忽略了
浮點數float
複數型:complex,複數是由實數部分和虛數部分構成的數,python中表示為x+yj,j為虛數的機關
python中使用複數類型的注意點:
虛數的機關必須使用j或J表示
虛部不能單獨存在
實部和虛部都是浮點數
-
python的不同進制的表示
二進制:以0b開頭
八進制:以0o開頭
十六進制:以0x開頭
- print()函數的參數
print(1,2,3,sep="#") 顯示1#2#3,sep的作用是設定每個參數之間的分割符,預設是空格
還有一個end參數,end的作用是在末尾輸出的内容,預設是換行符\n
- 在IDLE環境就是按ALT+/進行提示補全,Ipython是使用TAB鍵進行補全
- pip工具的使用,在指令行裡面輸入
pip list
#可以檢視已經安裝的python軟體包,
輸入
pip list --outdated
可以檢視可以更新的python包
輸入
pip instal 軟體包名
安裝python軟體包名
輸入
pip install --upgrade 軟體包名
更新軟體包
輸入
pip uninstall 軟體包名
解除安裝軟體包名
輸入
檢視軟體包的詳細資訊pip show 軟體包名
-
Anaconda開發環境,Anaconda是個內建的開發環境,本身就配置了很多的python包,在Anaconda裡面可以使用Anaconda Prompt視窗進行對python安裝包進行管理,在Anaconda裡面可以使用pip指令,也可以使用conda指令對安裝包進行管理
輸入
conda list
顯示目前環境的所有包
輸入
conda search 軟體包名
搜尋軟體包
輸入
conda update 軟體包名
更新軟體包
輸入
conda remove 軟體包
删除軟體包名
Anaconda的環境管理
在Anaconda Prompt視窗可以管理虛拟環境,就是可以建立一個不同的環境,比如2.x和3.x的環境
可以使用
conda create -n 環境名字 python=3.7 包的名字
建立一個新的環境
使用
conda env list
檢視python的虛拟環境
使用
conda activate 環境名稱
切換環境
使用
conda deactivate
退出虛拟環境
使用
或者conda remove -n 環境名 --all
conda env remove -n 環境名
進行删除環境
Ipython的_符号使用
- | 顯示最近的一次輸出結果 |
__ | 兩個下劃線顯示最近的第二個輸出結果 |
_數字 | 顯示指定的數字的輸出結果 |
_i數字 | 顯示指定數字序号的表達式 |
還有查曆史記錄的功能
顯示曆史記錄,直接輸入
history
顯示指定序号的曆史記錄
history -n 序号
曆史記錄裡面搜尋内容
history -g 字元串
自省
IPython中使用?來檢視已有的變量或者函數等相關資訊
也可以使用函數help(a)或者dir(a)
Ipython的magic指令
IPython将%開頭的指令稱為magic指令,預設的%可以省略,例如
13. python軟體包
qrcode | 用于生成二維碼 |
字元串
使用時需要用單引号(’’)或者雙引号("")引起來,兩者不能混合着用,相同的引号不能嵌套着用
長字元串
使用三個引号來表示長字元串,’’‘或者""",長字元串可以換行,而且還會保留文本中的格式
10. 轉義字元
python可以使用(反斜杠)作為轉義字元,例如:
\‘表示’
\“表示”
\t表示四個空格,就是一個tab鍵
\n表示換行
\\表示反斜杠
\uxxxx表示利用Unicode進行編碼的,比如在Unicode編碼裡面,第0048個是H,如果你寫a=’\u0048’,a就表示字元H.為什麼是四個數字?因為Unicode編碼裡面用四位`進行編碼
10. 格式化字元串(四種方法)
①:兩個字元串可以進行加法連接配接,但是不可以和其他資料類型進行加法運算
②:print(變量1,變量2),這裡列印後變量1和變量2也是拼接起來的,而且這裡是沒有資料類型限制的,兩個變量什麼類型都行,不同類型也可以
③建立字元串的時候可以指定占位符,例如:
a=‘hello%s’%變量 #這裡就是用變量替換了字元串a的%s的占位符
%s #這個表示任意的占位符,在%s的位置可以填充字元串,整數,浮點數等等,
而且這裡的占位符還可以做限制,例如%2.3s #這個表示這個占位符最少有兩位,如果不足兩位就在前面填充空格補完整到兩位,如果超過三位就不要後面的
%f #這個是浮點數的占位符,這裡的%4.1f 和上面的就有點差別了,4還是不夠四位補空格,但是1就是小數點後面保留一位小數
%d #這個是整數的占位符
④格式化字元串,就是可以通過在字元串前面添加一個f來建立一個格式化字元串,在格式化字元串中是可以直接加入變量的,比如a=f’啦啦啦{x1}{x2}’ #這裡的x1和x2是一個變量,什麼類型都可以
又或者可以這樣:%和format
①%格式(py2.x的舊形式)
格式:%[flag] [ width ][.precision]type
flag是對齊方式
- | 左對齊 |
+ | 右對齊,在前面顯示加号補齊 |
右對齊,顯示的數字前面用0填充 |
width是字元串的占用長度
precision是指定數值類型保留的小數點位數
type是指定的格式符
%c | 格式化字元 |
%s | 格式化字元串 |
%d | 格式化整數 |
%o | 格式化無符号八進制數 |
%x | 格式化無符号十六進制數 |
%X | 格式化無符号十六進制數 |
%f | 小數,可指定小數點後面的精度 |
%e | 科學及算法格式表示 |
%g | 根據值的大小決定使用%f還是%e |
②format格式(推薦使用)
格式:"{替換的格式符}".format(參數)
參數:比對的替換内容
替換格式符的文法:[[fill]align] [sign] [width ] [,] [.precision][type]
fill是設定要填充的字元,預設是空格
align是設定對齊方式,^,<,>分别是居中,左對齊,右對齊
sign設定數值型資料前的符号,+表示在正數前面加正号,-表示正數前不變,空格表示在正數前加空格
width表示字元串占的寬度
,表示為數字添加千位分隔符
precision表示保留的小數位數
type表示格式化類型,type和前面的%格式取值差不多,多了個%,%表示浮點數按照百分比的形式輸出
# 第0個數用百分比,第1個數用科學計算法,均保留2位小數
In: '{0:.2%}和{1:.2e}'.format(0.1234, 123456)
Out: '12.34%和1.23e+05'
# 長度為10,保留2位小數,使用","千位分隔符,右對齊,長度不夠用“#”填充
In: '{:#>10,.2f}'.format(1234.5678)
Out: '##1,234.57'
- 字元串複制,就是将字元串和一個數字進行乘法運算,這時就會将字元串複制到那個數字的次數
-
布爾值(Boolean,在python裡面簡寫成bool)
一共有兩個True和False,
其實bool的資料類型也是屬于整形,True相當于1,False相當于0,1+True等于2的
- None(空值),就什麼都沒
- 類型檢查的函數:type() #這個函數傳入一個變量,傳回這個變量的資料類型
-
對象(object)
python也是面向對象的語言,對象是記憶體中專門用來存儲指定資料的一塊區域,它實際就是一個容器,上面的數值,字元串,bool,None都是對象
-
對象的結構:對象裡面都會存儲這三種資料:id,type,value
id:就是這個對象的辨別,每一個對象都隻有一個唯一的id,如果要檢視,可以通過id()函數來檢視對象的id,這個id是由解釋器生成的,一旦建立就永遠不可能改變,在cpython中,id就是對象的記憶體位址
type:python是強類型的語言,對象一旦建立,類型就不能修改
value:對象中存儲的具體資料,可變對象的值可以改變,不可變對象的值不能改變,int ,str,Boolean…的值都是不可以改變的
17. 變量和對象的關系
在變量中不是直接将python的對象直接存儲進去,而是存儲對象的id,在python中,變量就好像給對象起了一個别名.
如果你執行了a=10 a=b a=20 #這時候b裡面存儲的值是沒有改變的還是10,就是b裡面的id沒有變,是以python裡面的變量是互相獨立的,其中一個改變了不會影響其他的
18. 類型轉換
不是說python是強類型語言嗎?類型怎麼還可以轉換呢?
其實是這樣的,類型轉換不是改變這個對象本身的類型,而是建立一個新的需要的類型的對象,然後将目前對象的值指派給新的對象的值
對于類型轉換有四個函數int(),float(),str(),bool()
int() #将其他的對象類型轉化成整型
規則:
True—>1 False---->0
浮點數就直接删了小數點後面的東西,直接取整
字元串,将合法的整數字元串轉化成對于數字,不合法報錯ValueError
其他的和int()差不多,說下bool()
bool()
将其他對象轉化成布爾值,任何對象都可以轉換成bool值,
規則:所有的表示空的對象都轉化成False,例如0,none,其他的都轉換成True
eval(str)
這個函數是将str轉換成表達式,然後計算表達式,将結果傳回
例如eval(“1+2”) 的結果就是3
ord(x) #傳回字元x對應的ASCII或者Unicode編碼
chr(x) #傳回整數對應的Unicode字元是什麼
hex(x) #将整數x轉換成十六進制字元串
oct(x) #将整數x轉換成八進制字元串
19. 運算符
算術運算符
數學中的±/就不說了,還有
// 表示整除,保留計算後的整數,傳回一個整數,
** 表示幂運算,比如2 ** 3等于8
指派運算符
=,+=,-=,=,/=,**=,//=,%= #簡單,不多說
注意一下:就是對于浮點數運算,傳回的結果還是浮點數,比如10.0//4的結果是2.0
python中指派的快捷用法
a,b,c=10,20,30
#得到a=10,b=20,c30
#交換變量的值
a,b=b,a
#這樣就将a和b的值進行了交換
位運算
~ | 按位取反 |
& | 按位與 |
| | 按位或 |
^ | 按位異或 |
>> | 按位右移 |
<< | 按位左移 |
關系運算符
/>,/>=,/<,/<=,==.!= #不多說
注意一下:
①就是如果是兩個字元串進行大于(等于)或小于(等于)的運算時,比較的是字元串對應的Unicode編碼,比如’a’>‘b’ #False,因為a的編碼在b的前面
如果字元串是多位的字母,這時就是逐位進行比較的,而且是前面如果比較出來大小,後面的就不再進行比較了,比如’5’<‘1546’ ,這裡是False的,因為’5’和’1’比較,發現’5’比’1’大,是以就直接傳回False,後面的不再進行比較了.利用這個特性,可以對英文的字元串進行按照字母排序,但是如果裡面有中文就不行了,而且這樣對中文排序好像也沒什麼特殊的意義
②這裡的比較==和!=比較的是兩個對象的value(值),而不是id,隻要是值是一樣的就傳回True,比如(1 ==True) #這裡傳回的是True,因為他們兩個的值都是1
③如果要想比較兩個對象的id是否一樣,有is和is not
is是比較兩個對象是否是同一個對象,比較的是id
is not相反
邏輯運算符
and:邏輯與
邏輯運算的與運算
python的與運算是短路的與運算,如果第一個就是False了,就不會理第二個值是什麼
or:邏輯或
邏輯運算的或運算
python的或運算也是短路的或運算,如果第一個就是True,就不會理第二個值是什麼
not:邏輯非
對于布爾值是取反操作,
對于非布爾值是将它轉化成布爾值再取反
非布爾值的與或運算
python對非布爾值進行與或運算的時候,python會将它們當作布爾值進行運算,最終會傳回其中一個原值
與運算規則:本來就是找False,如果第一個值是False,就不會看第二個值,直接傳回第一個值,否則傳回第二個值
或運算規則:本來就是找True ,如果第一個值是True,就不會看第二個值,直接傳回第一個值,否則傳回第二個值
再python中獨特的邏輯運算符用法:連着寫,比如:
print(10<20<30) #True
這裡相當于10<20 and 20<30