中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python基礎語法-內存管理-運算符-程序控制

發布時間:2020-06-09 17:01:02 來源:網絡 閱讀:614 作者:Python熱愛者 欄目:編程語言

1 Python 基礎語法

所有語言都有它自己規定的格式,Python也不例外,下面從幾個方面來了解。

1.1 注釋

?在Python中主要的使用的注釋方式是#號,當然在某些情況下三對單引號也是可以的,比如在函數中可以作為函數的說明。


Python基礎語法-內存管理-運算符-程序控制

1.2 縮進

C語言使用的是花括號來表示層級關系,但是看起來不簡潔,挺難看,而Python使用的是縮進的方式表示層級關系,并且約定4個空格為一個層級。

1.3 續行

當我們一行的代碼超過了一屏顯示的長度以后,多數情況下為了直觀,我們會另起一行,接著些,在Python中在行尾使用?\?標識續行,但如果在表達式或者某一段代碼中使用了括號,那么Python認為括號內是一個整體,內部跨行不需要使用\。

1.4 標識符

????????很多時候,我們寫代碼的過程中會對我們需要的數據進行存儲并命名,方便后續使用,這個命名被稱為標識符,針對標識符Python進行了如下要求:

一個名字,用來指代一個值

只能是字母、數字下劃線的組合

只能以字母或者下劃線開頭

不能是Python的關鍵字,例如def、class就不能作為標識符

Python是大小寫敏感的

????????在我們寫代碼的過程中最好遵循下列約定:

不允許使用中文

不允許使用歧義單詞,例如class_

在Python中不要隨便使用下劃線開頭的標識符

1.5 轉義序列

????????python中內置了很多特殊的符號,比如換行、制表符什么的,部分含義如下:

\\:單個\表示轉義,\\?就指代?\?這個符號。表示把\后面的字符進行轉義,不用特殊方式進行轉換。

\t:制表符,一般用來進行輸出格式調整,比如對齊等

\r:回車符

\n: 換行符

1.6 數字

在Python中數字主要分為三種類型:整型,浮點數,復數。

整型:在Python3中,不區分long和int,所有整型均為int類型,當然還包括了不同進制,比如2進制,8進制,16進制等,都為int類型。需要注意的是Python中的bool型屬于整型的子類,所以bool的兩個值,用整型可以表示為,0:False,非0:True。

浮點數:即帶小數點的float型

復數:用于科學計算,比如1+2j等

1.7 字符串

在Python中,使用'(單引號),"(雙引號)括起來表示引用字符的序列,使用''',""",則可以跨行,并且自由的使用單雙引號。除此之外還可以在字符串前加一定的符號來確切的表示字符串。

r: 字符串前加r或者R,表示該字符串不做任何處理,所見即所得

f: 3.6版本開始新增的前綴,表示格式化字符串,例如變量引用


Python基礎語法-內存管理-運算符-程序控制

1.8 其他

????????在Python中還有一些地方和其他語言有很大區別,比如:

常量:本身指代一旦賦值就不能被改變的標識符,但是Python中是沒有這個概念的,換句話說就是,Python中,只要你看的到的東西,是都可以進行修改的。

字面常量:一個單獨的量,看字面意思就知其含義,比如12,就表示數字12

變量:賦值后,可以改變值的標識符。

注意:在Python中是不需要提前申明變量的類型的,所以變量的賦值即定義

total =2500# 定義了一個total變量,它的值是2500。 賦值即定義

2 Python 運算符

在Python中,運算符是比較重要的知識了,因為很多地方都需要知道多個數據的大小關系、邏輯關系,當然賦值也是需要用到運算符的,根據類型的不同,主要分為賦值運算符、算數運算符、關系運算符、邏輯運算符以及位運算符。

2.1 賦值運算符

我們日常使用的=號就屬于賦值運算符的一種,在Python還有如下算數運算符:

=:賦值,例如:x=3,y='abc'

+=?:自加,例如:x+=2,則表示x=x+2

-=:自減,例如:x-=2,表示x=x-2

*=:自乘,例如:x=2,表示x=x2

/=:自除,例如:x/=2,表示x=x/2

%=:自取余,例如:x%=2,表示x=x%2。 x對2取余數,假如x=6,那么取余為0

當把數字賦值給一個變量的時候不用加引號,而賦值字符串給變量的時候就需要加引號了,否則python認為你賦值的是另一個變量。

2.2 算數運算符

????????數學計算中的+,-,* 等都屬于算數運算符的一種,其他的運算符如下:

+:加,用來計算數字,如果字符串、列表等相加,等于是把兩個對象拼到一起

-:減,同數學減

*:乘,同數學乘

/:除,4/3,默認是整除,為了得到小數,可以把其中一個變量變成浮點型,4.0/3或4/3.0

//:表示只取整數,4.0/3 答案是1.33333,如果用4.0//,因為取整則,答案是1

%:表示取余數,10%2余0,10%3余1

**:表示乘方 2**3 表示2的3次方

2.3 關系運算符

????????關系運算符顧名思義就是判斷關系的,比如大于,小于啊,等等,需要注意的是返回值為布爾值:即True或者False。更多的符號有:

>:大于,例如1>2,值是False

<:小于,例如1<2,值是True

>=:大于等于,例如1>=2,值是False

<=: 小于等于,例如1<=2,值是True

==:是否等于,例如1==2,值是False

!=:不等于,例如 1!=2,值是True

2.4 邏輯運算符

邏輯運算符主要包含了三個:and,or,not

and:邏輯與,只要有1個是false那么值就是False,1==2 and 1<2 ,值是False,1!=2 and 1<2,值是Frue

or:邏輯或,只要有一個是true那么值就是true,1=2 and 1<2 ,值是true

not:邏輯非,取反 not 1<2,值是true

邏輯運算符又被稱為短路運算符:

and 如果第一個表達式為False,后面就沒必要計算了,這個邏輯表達式一定為False

or如果第一個表達式為True,后面就沒必要計算了,這個邏輯表達式一定為True

2.5 位運算符

????????故名思議,位運算符主要是針對位進行的計算的,它比加減運算略快,通常也比乘除法運算要快很多。說到位就不得不提補碼了,因為計算機存儲負數時使用的都是補碼。

2.5.1 原碼、反碼、補碼、負數表示法

????????計算機當初因為成本、復雜等各種原因,在進行加減法計算的時候,會把減法變為加法進行計算,如何理解呢?例如5-1,在計算機中進行計算的時候實際上用的是5+(-1),而負數在內存中并不會直接寫個-0b1,負數在計算機中使用的是補碼進行存儲和運算的,計算機中有關數字的都有什么瑪?什么是補碼?

原碼:即人類可讀的二進制位(0b101,0b1)

反碼:正數的反碼與原碼相同;負數的反碼符號位不變其余按位取反

補碼:正數的補碼與原碼相同;負數的補碼符號位不變其余按位取反后+1

需要注意的是:負數在計算機中使用補碼進行存儲,比如-1在計算機存儲的是1111 1111,負數補碼的補碼就表示負數本身。正數的原碼反碼補碼都是相同的,計算機存儲內存中的數字都為二進制位,當我們想要查看具體代表的值時,計算機會轉換為人類可讀的原碼進行顯示,即:如果最高的符號位是0,那么認為它是正數,不進行去補,而最高的符號位如果是1,那么它會認為它是負數,會按照負數的取補的規則進行計算后展示。

例題:計算機,計算 5 - 1 的過程


Python基礎語法-內存管理-運算符-程序控制

例題:計算~12


Python基礎語法-內存管理-運算符-程序控制

2.5.2 位運算符

????????針對位的運算符主要有:& | ~ ^ << >>.

&:按位與,即按位相乘(1101 & 0001 , 與出來是0001)

|:按位或,即按位相加,不進位(1101 | 0001,或出來是1101)?0乘任何數是0,1+任何數是1

^:按位異或

~:取反

<<:左移(位)

>>:右移(位),例如32 >> 3 等于32//8 , 結果是4

位運算符,日常使用的不多,但是如果你想做一個高級程序員,那么位運算是你必備的技能哦

2.6 成員、身份運算符

in/not in 成員測試,測試一個元素是否在一個序列中

is /is not 統一性的測試

2.7 運算符優先級


Python基礎語法-內存管理-運算符-程序控制

小結:

算數運算符?>?位運算符?>?身份運算符?>?成員運算符?>?邏輯運算符

記不住的話,記得用括號

長表達式,多用括號。

注意:在Python中,賦值即定義,如果一個變量已經定義,賦值相當于重新定義

3 Python 內存管理

????????計算機的內存大多是線性編址的(1001,1002,1003門牌號,挨著排列的),現在有一個變量var1需要1001~1007空間,var2需要1008~1012空間,如下圖


Python基礎語法-內存管理-運算符-程序控制

過了一段時間以后,var1中的1002,和1005不用了,var2的1010也不用了,內存就變成了如下的情況:


Python基礎語法-內存管理-運算符-程序控制

這時又來了一個 var3 需要申請 3個空間,在當前情況下就沒辦法進行分配了


Python基礎語法-內存管理-運算符-程序控制

這種情況就是我們常說的內存空洞了,也叫內存碎片化,如果沒辦法進行碎片整理,那么這些分散的內存空間將沒有辦法被重新使用

3.1 Python的內存特性

變量無需事先聲明,也不需要指定類型,這是動態語言的特性

Python使用引用計數記錄所有對象的引用數。

當對象的引用數變為0,它就可以被垃圾回收GC

當對變量進行賦值時,同時會增加該對象的引用計數

函數或代碼塊運行完畢,變量會消亡,那么引用計數會減少

3.2 Python的GC管理

Python在對內存進行管理時會像Java那樣對內存進行分類,Java中將內存分為了老生代,新生代,持久化代,而Python中則分成了0,1,2三代,其中0代可以理解為臨時存儲,1代為短期存儲,2代為長期存儲,當應用申請內存時,會根據內存情況先分配0帶給程序使用,然后定期檢查各個區的使用情況,如果某個程序在0區待的夠久,那么在 Python 啟動GC的時候,就會把它從0區移動到1區,同理在1區時間夠久的,移動到2區。當然在啟動GC的時候還會檢查引用計數為0的對象,然后清理掉。

需要注意的是,Python啟動GC的同時,不能進行其它的任務。頻繁的垃圾回收將大大降低Python的工作效率。如果內存中的對象不多,就沒有必要總啟動垃圾回收。所以,Python只會在特定條件下,自動啟動垃圾回收。當Python運行時,會記錄其中分配對象(object allocation)和取消分配對象(object deallocation)的次數。當兩者的差值高于某個閾值時,垃圾回收才會啟動。


Python基礎語法-內存管理-運算符-程序控制

所以:

Python編程中一般無需關心變量的存亡,一般也不用關心內存的管理,由Python的GC統一進行垃圾回收

當有關Python性能問題的時候,就需要考慮變量引用的問題,盡量不要釋放內存,交由Python GC來操作,除非你更懂它。


Python基礎語法-內存管理-運算符-程序控制

4 程序控制

Python的程序控制主要分為順序,分支,循環,這也和大多數語言是相同的。

順序結構:按照先后順序一條一條執行,比如:先起床,再刷牙,再吃飯

分支結構:根據不同的情況判斷,條件滿足后執行相應的操作,比如你去買個西紅柿,如果看見西瓜,就買兩個(真正的程序員會買回來兩個西紅柿的,別問我為什么,哈哈)

循環結構:條件滿足就反復執行,不滿足就不執行或者不再執行(循環完畢)

4.1 分支結構

計算機之所以能做很多自動化的任務,因為它可以自己做條件判斷。在Python中主要通過if以及else的搭配來完成條件判斷的工作。條件判斷主要有三種基本用法。

4.1.1 單分支

顧名思義即如果怎么樣,就怎么樣。(if)


Python基礎語法-內存管理-運算符-程序控制

表達式:是將不同的數據(包括變量、函數)用運算符號按一定規則連接起來的一種式子。

4.1.2 多分支

多分支有分為兩種情況:

如果怎么樣,就怎么樣,否則,怎么樣。(if、else)

如果1怎么樣,就怎么樣,如果2怎么樣,就怎么樣...,否則,怎么樣(if、elif、else)


Python基礎語法-內存管理-運算符-程序控制

4.1.3 分支嵌套

????????分支嵌套,就是將多個兩個或多個if判斷進行層級嵌套,完成更精確的判斷。


Python基礎語法-內存管理-運算符-程序控制

4.1.4 小結

條件的寫法非常多,可以寫一個表達式或者多個表達式都可以,表達式的值為0,就表示false。

if就是判斷,主要就是對表達式的邏輯值進行判斷

邏輯值(bool)包含了兩個值:

True:表示非空的量(比如:string、tuple、list、set、dictionary),所有非零數。

False:表示0,None,空的量(空字符串,空字典,空列表,空即可,空元祖)等。這些對象又可以成為False等價

4.2 循環

為了讓計算機能反復執行某一操作,我們需要循環語句來完成。Python中的循環主要有兩種:for循環和while循環。

4.2.1 for 循環

基本所有語言都有for關鍵字,它的曝光率遠遠超過其它關鍵字,但每個語言有它自己的格式,在Python中它的格式為


Python基礎語法-內存管理-運算符-程序控制

在很多情況下,我們需要循環一定次數,我們一般使用range函數來構建可迭代對象。


Python基礎語法-內存管理-運算符-程序控制

?range是一個函數,接受1個或三個變量用于生成可迭代對象,可以理解它是一個生成器,如果不對range進行迭代,那么它就是一個生成器對象,不會直接計算數據,只有迭代,或者使用list函數才可以獲取其生成的值,一般稱這種方式為惰性求值。在Python2.x中是會直接生成列表的

4.2.2 for循環的else語句

else語句是for循環正常結束后要執行的語句,如果for循環被終止(比如滿足某條件跳出循環,break等),那么就不會執行else后面的語句,它的格式為:


Python基礎語法-內存管理-運算符-程序控制

例子:


Python基礎語法-內存管理-運算符-程序控制

4.2.3 while循環

????????for 循環主要去對列表、字符串、文件的行數等有次數的循環上,while 一般在無限循環,或者在某些有條件的控制上,直到表達式變為假(或者有一個break),才退會出while循環,表達式是一個邏輯表達式,必須返回一個True或False。


Python基礎語法-內存管理-運算符-程序控制

練習:判斷輸入的時候是空字符,是的話,就退出循環


Python基礎語法-內存管理-運算符-程序控制

while循環和for循環一樣都含有else語句,當while循環正常執行完畢,就會被觸發執行。


Python基礎語法-內存管理-運算符-程序控制

4.2.4 Python循環控制

Python中的循環控制主要有三種方式,即:continue、break、pass。

continue:繼續,當滿足條件后,跳過本次循環。

break:退出,當滿足某一個條件后,終止循環。

pass:占位符,僅僅起到占位的左右,沒有其他效果。

需要注意的是:

continue和break是循環的控制語句,只影響當前循環,包括while、for循環

如果循環嵌套,continue和break也只影響語句所在的那一層循環

continue和break不是跳出語句塊,所以if exp: break 不是跳出if,而是終止if外的break的所在的循環

練習:給定一個不超過5位數的正整數,判斷該數的位數,一次打印出萬位,千位,百位,十位,個位的數字


Python基礎語法-內存管理-運算符-程序控制


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

行唐县| 大城县| 贵德县| 泽库县| 衡东县| 延吉市| 黄山市| 沅陵县| 宁南县| 富阳市| 治县。| 双柏县| 昌吉市| 交口县| 邛崃市| 孟村| 开鲁县| 衡南县| 桂林市| 蒲城县| 错那县| 平顶山市| 麻江县| 德阳市| 四会市| 耒阳市| 饶河县| 榆中县| 张家界市| 商城县| 临夏县| 城固县| 新津县| 邵阳县| 克拉玛依市| 揭西县| 阿拉尔市| 桂平市| 晋宁县| 余姚市| 恩平市|