笨辦法學Python - 習題4: Variables and Names

一、習題 4: 變量(variable)和命名

**學習目標:**瞭解Python中變量的定義,學習定義簡明易記的變量名html

變量:變量是存儲內存中的值,就是每定義一個變量就會在內存中開闢一個空間。基於變量的類型。解釋器會分配指定的內存,並解決什麼數據能夠被存儲到內存中。python

在Python中使用變量時,變量不須要提早定義,只須要給變量賦值便可,賦值的過程就是建立這個變量的過程。可是若是要使用這個變量,必需要給這個變量賦值。學習

1547469161143

變量的命名規則:spa

  • 變量名只能是字母、數字、下劃線的任意組合,可是不能是數字開頭,且不能包含空格
  • 不能使用Python預留的關鍵字
  • Python支持中文變量名,可是通常不建議使用
  • 變量名要有意義,有描述性,簡明,通常採用駝峯式命名方法

習題四中的練習代碼是:3d

# 定義汽車數量的變量car ,並給變量car賦值爲100
cars = 100

# 定義汽車內空間的變量space_in_a_car ,併爲其賦值4.0
space_in_a_car = 4.0

# 定義司機人數的變量drivers , 併爲其賦值30
drivers = 30

# 定義乘客數量的變量drivers , 併爲其賦值30
passengers = 90

# 定義沒法行駛的車輛數量的變量cars_not_driven ,其值爲上面定義的cars變量和drivers變量相減爲70
cars_not_driven = cars - drivers

# 再定義能夠形式的車輛數量變量cars_driven , 而後將變量drivers的值賦值給變量cars_driven
cars_driven = drivers

# 定義最大拼車容量的變量carpool_capacity,將變量cars_driven和變量space_in_a_car值作乘法爲120.0
carpool_capacity = cars_driven * space_in_a_car

# 定義變量平均每輛車中的乘客數量變量average_passengers_per_car ,將變量passengers和變量cars_driven值作除法獲得結果爲3
average_passengers_per_car = passengers / cars_driven

# 下面是打印輸出變量所表明的值
print "There are", cars, "cars avaiable."

print "There are only", drivers, "drivers avaiable."

print "There will be", cars_not_driven, "empty cars today"

print "We can transport", carpool_capacity, "people today."

print "We have", passengers, "to carpool today."

print "We need to put about", average_passengers_per_car, "in each car."

上述代碼的運行結果爲:code

C:\Python27\python.exe D:/pythoncode/stupid_way_study/demo4/Exer4-1.py
There are 100 cars avaiable.
There are only 30 drivers avaiable.
There will be 70 empty cars today
We can transport 120.0 people today.
We have 90 to carpool today.
We need to put about 3 in each car.

在上面練習代碼時,不注意程序運行後報了個錯:htm

1547470233524

緣由:報錯提示是說在第19行car_pool_capacity這個變量沒有定義,咱們知道變量在使用前必需要先賦值,可是上面賦值的變量是carpool_capacity,和寫錯的變量名差了一個下劃線,說明這是兩個變量,不能混用。對象

二、加分習題:

  1. 我在程序裏用了 4.0 做爲 space_in_a_car 的值,這樣作有必要嗎?若是隻用 4 會有什麼問題?
  2. 記住 4.0 是一個「浮點數」,本身研究一下這是什麼意思。
  3. 記住 = 的名字是等於(equal),它的做用是爲東西取名,記住 _ 是下劃線字符(underscore)。
  4. 將 python 做爲計算器運行起來,就跟之前同樣,不過這一次在計算過程當中使用變 量名來作計算,常見的變量名有 i , x , j 等等。

三、個人答案:

一、我在程序裏用了 4.0 做爲 space_in_a_car 的值,這樣作有必要嗎?若是隻用 4 會有什麼問題blog

沒有必須,由於在Python2中,整數運算中只有除法運算中才會產生小數部分被捨棄的狀況,乘法中並不會產生丟棄小數部分的狀況,Python3中默認是都不會捨棄小數部分。內存

二、浮點數的概念?

這個問題具體詳情見上一章浮點數的定義,這裏就不作過多的贅述了。

三、 = (等號)的名字是等於(equal),它的做用是爲東西取名

變量的賦值就是採用 「=」 來實現的,就是把等號右邊的值賦給等號左邊的變量

四、擴展:

變量的賦值不只僅是單純的變量賦值,還涉及到內存的分配,因此賦值的變量和不賦值的變量時不同的,下面來舉個栗子:

4.一、我名字變了嗎?

name1 = "Kang"   #定義變量name1,並賦值爲Kang

name2 = name1   #定義變量name2,並將name1的值賦給name2

#打印輸出name1 和 name2的值
print "第一次輸出結果:name1=",name1    
print "第一次輸出結果:name2=",name2

name1 = "Jack"  #再次爲變量name1賦值爲新值Jack

#打印輸出name1 和 name2的值
print "第二次輸出結果:name1=",name1    
print "第二次輸出結果:name2=",name2
C:\Python27\python.exe D:/pythoncode/stupid_way_study/demo4/Exer4-2.py
第一次輸出結果:name1= Kang
第一次輸出結果:name2= Kang
第二次輸出結果:name1= Jack
第二次輸出結果:name2= Kang

由上面的運行結果能夠看出來,最後的運行結果是name1 = Jack ,name2 = Kang,?

這裏不少人就會問了,上面不是進行了賦值操做嗎,name2 = name1,而後name1值變了,name2的值不也應該跟着變嗎?

可是實際 狀況不是這樣的,由於這Python中變量的賦值實際上是一個內存地址的引用,其之間只是一個地址的引用,變量之間沒有其餘關係,好比上面name2 變量只是將變量name1 當作一個尋找對象的一個橋樑,其之間沒有其餘任何關係

詳細解釋:

name1 = Kang
name2 = name1

1547517064058

這兩句代碼,第一句是一個變量賦值的過程,在內存中開闢出一個位置,存儲值Kang,然以就至關於創建了一個對應關係,name1 -----> Kang , 下一句name2 = name1 ,其實只是name2 經過變量name1 去尋找對應的值,至關於中間的一個過渡橋樑,name1和name2之間並無任何關係。

name1 = "Jack"

1547517738614

上面的name1 = "Jack",確實是一個新的賦值操做,這樣name1的值確定是會變的,可是name2 的值是不會變的,由於Python的變量賦值操做其實就是和內存中的一塊地址創建對應關係,變量賦新值,就至關於新創建了一條對應關係,不會說對應關係變了,內存中值也會變,其實內存中地址確定是不會變的,變的只是指向這塊地址的對應關係。並且name2 = name1,他們之間沒有其餘關係,僅僅是一個橋樑傳遞做用,name2經過name1找到了內存中對應的值而已。因此上面name1賦新值,name2的值並無變,由於name2的對應關係沒有變。

上述例子就是變量和內存間的關係,用老男孩金角大王的例子就是,內存地址就是至關於小區的房子,變量名就是至關於房子的門牌號,不可能說拆除了門牌號就是拆除房子。變量的從新賦值只是至關於給房子換個門牌號,房子還在,只是門牌號變了而已。

4.二、Python中的內存回收機制:

說上面這個又涉及到Python中的內存回收機制,Python和C語言不一樣,C中須要手動釋放內存地址,可是Python不用,Python中內存是自動回收的,Python中有一個計數器,當其值爲0時就自動清除掉,從新定義變量後以前的內存就會被清掉。固然Python中也支持手動回收內存,使用del 變量名的形式。

手動回收以下:

1547518708493

4.三、對多個變量賦值

Python中容許同事爲多個變量賦值,例:

a = b = c = 1

以上實例,建立一個整型對象,值爲1,三個變量被分配到相同的內存空間上,創建三個對應關係。

a, b, c = 1, 2, "Kang"

以上實例,兩個整型對象 1 和 2 分別分配給變量 a 和 b,字符串對象 "kang" 分配給變量 c。

4.四、標準數據類型

在內存中存儲的數據能夠有多種類型。例如,一我的的年齡能夠用數字來存儲,他的名字能夠用字符來存儲。Python 定義了一些標準類型,用於存儲各類類型的數據。

Python有五個標準的數據類型:

  • Numbers(數字)
  • String(字符串)
  • List(列表)
  • Tuple(元組)
  • Dictionary(字典)

五、總結

此習題是學習了Python中的變量定義,首先要明白變量的命名規則,實際上是瞭解變量和Python的內存地址之間的關係。

相關文章
相關標籤/搜索