天天看點

python的一些基礎知識:基本的文法,字元串,長字元串,格式化字元串(四種方法),變量和對象的關系,類型轉換,運算符

基本的文法

  1. 肯定嚴格區分大小寫之類的
  2. 一行就是一條語句,每一條語句以換行結束,如果一行想寫多條語句,每一條語句要以;隔開
  3. 一條語句需要多行編寫的時候,在一行的末尾以\結束,下一行和這行就是同一條語句
  4. python是嚴格縮進的,縮進代表的是代碼塊
  5. 在python中#表示注釋
  6. python中使用變量是不需要聲明的,直接給變量指派就行了,而且python是動态類型的語言,可以為變量賦任何類型的值,指派後又可以修改成任意類型的值
  7. python的數值分為三種:整數,浮點數,複數

    整數int

    在python中所有的整數都是int類型的,而且它不像其他語言那樣有大小限制的,python的int類型是沒有限制的,可以是一個無限大的整數,如果數字的長度過于長,還可以用下劃線進行分割,例如a=45_46_45,這裡a的值就是454645,編譯的時候将_忽略了

    浮點數float

    複數型:complex,複數是由實數部分和虛數部分構成的數,python中表示為x+yj,j為虛數的機關

    python中使用複數類型的注意點:

    虛數的機關必須使用j或J表示

    虛部不能單獨存在

    實部和虛部都是浮點數

  8. python的不同進制的表示

    二進制:以0b開頭

    八進制:以0o開頭

    十六進制:以0x開頭

  9. print()函數的參數
print(1,2,3,sep="#")  顯示1#2#3,sep的作用是設定每個參數之間的分割符,預設是空格
還有一個end參數,end的作用是在末尾輸出的内容,預設是換行符\n      
  1. 在IDLE環境就是按ALT+/進行提示補全,Ipython是使用TAB鍵進行補全
  2. pip工具的使用,在指令行裡面輸入​

    ​pip list​

    ​​#可以檢視已經安裝的python軟體包,

    輸入​​

    ​pip list --outdated​

    ​​可以檢視可以更新的python包

    輸入​​

    ​pip instal 軟體包名​

    ​​安裝python軟體包名

    輸入​​

    ​pip install --upgrade 軟體包名​

    ​​更新軟體包

    輸入​​

    ​pip uninstall 軟體包名​

    ​​ 解除安裝軟體包名

    輸入​​

    ​pip show 軟體包名​

    ​ 檢視軟體包的詳細資訊
  3. 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數字 顯示指定數字序号的表達式
python的一些基礎知識:基本的文法,字元串,長字元串,格式化字元串(四種方法),變量和對象的關系,類型轉換,運算符
python的一些基礎知識:基本的文法,字元串,長字元串,格式化字元串(四種方法),變量和對象的關系,類型轉換,運算符

還有查曆史記錄的功能

顯示曆史記錄,直接輸入​

​history​

​​ 顯示指定序号的曆史記錄​

​history -n 序号​

曆史記錄裡面搜尋内容​

​history -g 字元串​

自省

IPython中使用?來檢視已有的變量或者函數等相關資訊

也可以使用函數help(a)或者dir(a)

python的一些基礎知識:基本的文法,字元串,長字元串,格式化字元串(四種方法),變量和對象的關系,類型轉換,運算符

Ipython的magic指令

IPython将%開頭的指令稱為magic指令,預設的%可以省略,例如

python的一些基礎知識:基本的文法,字元串,長字元串,格式化字元串(四種方法),變量和對象的關系,類型轉換,運算符
python的一些基礎知識:基本的文法,字元串,長字元串,格式化字元串(四種方法),變量和對象的關系,類型轉換,運算符

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'      
  1. 字元串複制,就是将字元串和一個數字進行乘法運算,這時就會将字元串複制到那個數字的次數
  2. 布爾值(Boolean,在python裡面簡寫成bool)

    一共有兩個True和False,

    其實bool的資料類型也是屬于整形,True相當于1,False相當于0,1+True等于2的

  3. None(空值),就什麼都沒
  4. 類型檢查的函數:type() #這個函數傳入一個變量,傳回這個變量的資料類型
  5. 對象(object)

    python也是面向對象的語言,對象是記憶體中專門用來存儲指定資料的一塊區域,它實際就是一個容器,上面的數值,字元串,bool,None都是對象

  6. 對象的結構:對象裡面都會存儲這三種資料: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