日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python基礎(chǔ)---變量

系統(tǒng) 1788 0

什么是變量:

用來(lái)綁定數(shù)據(jù)對(duì)象的標(biāo)識(shí)符

一.變量的命名規(guī)則:

  • 變量名必須為字母或下劃線開頭,后跟字母或下劃線或數(shù)字
  • 不能使用python的關(guān)鍵字命名
  • 命名規(guī)則可以被視為一種?慣例,并無(wú)絕對(duì)與強(qiáng)制
  • 目的是為了 ? 增加代碼的識(shí)別和可讀性
  • 在定義變量時(shí),為了保證代碼格式,= 的左右應(yīng)該各保留一個(gè)空格
  • 在Python中,如果變量名需要由?二個(gè)?或?多個(gè)單詞 組成時(shí),可以按照以下方式命名
  1. 每個(gè)單詞都使用小寫字母
  2. 單詞與單詞之間使用?_下劃線?連接
  3. 例如:first_name、ast_name、qq_number、qq_password
  • 當(dāng)?變量名是由二個(gè)或多個(gè)單詞組成時(shí),還可以利用駝峰命名法來(lái)命名
  1. 小駝峰式命名法:第一個(gè)單詞以小寫字母開始,后續(xù)單詞的首字母大寫。例如:firstName、lastName
  2. 大駝峰式命名法:每一個(gè)單詞的首字母都采用大寫字母。例如:FirstName、LastName、CamelCase
            
              #
            
            
              合法的變量命名示例:
            
            
              
a   a1  b  bbb  _aaa_ _Abcdvara1b2c2


            
            
              #
            
            
              不合法的變量命名示例:
            
            
              
1a  
            
            123  $ABC +a -b  
            
              #
            
            
              ab @ab
            
          

關(guān)鍵字:

  • 關(guān)鍵字就是在Python內(nèi)部已經(jīng)使用的標(biāo)識(shí)符
  • 關(guān)鍵字具有特殊的功能和含義
  • 開發(fā)者不允許定義和關(guān)鍵字相同的名字的標(biāo)示符

查看關(guān)鍵字:

            
              import
            
            
               keyword

            
            
              print
            
            
              (keyword.kwlist)

            
            
              #
            
            
              ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
            
          

二.變量的賦值:

賦值語(yǔ)法:

            變量名=
            
              表達(dá)式

變量名1
            
            =變量名2=
            
              表達(dá)式

變量名1,變量名2,...
            
            =
            
              序列

變量名1,變量名2,...
            
            =
            
              對(duì)象1,對(duì)象2...

變量名1,變量名2,...
            
            =
            
              [對(duì)象1,對(duì)象2...]

變量名1,變量名2,...
            
            =(對(duì)象1,對(duì)象2...)
          

作用: 用于創(chuàng)建變量并將變量綁定(或關(guān)聯(lián))在一個(gè)對(duì)象上

說(shuō)明:

  • 當(dāng)變量不存在時(shí),創(chuàng)建該變量同時(shí)綁定在這個(gè)對(duì)象上
  • 當(dāng)變量存在時(shí),改變此變量的綁定的對(duì)象
  • 一個(gè)變量只能綁定一個(gè)對(duì)象
  • 兩個(gè)變量可以同時(shí)綁定一個(gè)對(duì)象

示例:

            a=10      
            
              #
            
            
              創(chuàng)建a變量,和整型對(duì)象10綁定在一起
            
            
              
b
            
            =20
            
              

c
            
            =a+b   
            
              #
            
            
              創(chuàng)建變量c,和10+20的計(jì)算結(jié)果綁定在一起
            
          

名詞解釋:

關(guān)聯(lián)/綁定/引用在python中的含義,變量是沒有類型的,關(guān)聯(lián)/綁定/引用都是指變量和一個(gè)對(duì)象的關(guān)聯(lián)關(guān)系

可以通過help('__main__')來(lái)查看當(dāng)前模塊下的數(shù)據(jù)關(guān)聯(lián)關(guān)系

三.python的自動(dòng)化內(nèi)存管理:

python 的內(nèi)存管理和引用計(jì)數(shù)

每個(gè)對(duì)象都會(huì)記錄有幾個(gè)變量引用自身,當(dāng)引用的數(shù)量為0時(shí),則對(duì)象被銷毀,此種自動(dòng)化內(nèi)存管理的方式叫引用計(jì)數(shù)。

            a = 10000
            
              
b 
            
            = 20000
            
              

a 
            
            = a + b 
            
              #
            
            
               發(fā)生了什么?
            
            
c = a 
            
              #
            
            
               發(fā)生了什么?
            
            
              #
            
            
              a = 10000 內(nèi)存中創(chuàng)建一個(gè)10000對(duì)象,用變量a和10000綁定綁定
            
            
              
#
            
            
              b = 20000 內(nèi)存中創(chuàng)建一個(gè) 20000對(duì)象,用變量b和20000對(duì)象綁
            
            
              
#
            
            
              a = a + b 計(jì)算對(duì)象a 和 b 的和,創(chuàng)建一個(gè)30000的對(duì)象,a 解除與10000對(duì)象的綁定,重新綁定30000這個(gè)對(duì)象
            
            
              #
            
            
              c = a 變量c和變量a綁定同一個(gè)對(duì)象
            
          

變量的交換綁定

            
              #
            
            
              練習(xí):已知有兩個(gè)變量:a 綁定 10000 b 綁定 20000
            
            
              
#
            
            
              問:在不創(chuàng)建任何新的對(duì)象的情況下,如何讓a和b 交換綁定的對(duì)象?
            
            
              
#
            
            
              方法1:
            
            
a = 10000
            
              
b 
            
            = 20000
            
              
temp 
            
            = a 
            
              #
            
            
              借助第三個(gè)變量,經(jīng)典交換算法
            
            
a =
            
               b
b 
            
            =
            
               temp


            
            
              #
            
            
              方法2:序列賦值 
            
            
a, b = b , a
          

四.變量的is與==

  • is 比較的是兩個(gè)實(shí)例對(duì)象是不是完全相同,它們是不是同一個(gè)對(duì)象,占用的內(nèi)存地址是否相同。萊布尼茨說(shuō)過:“世界上沒有兩片完全相同的葉子”,這個(gè)is正是這樣的比較,比較是不是同一片葉子(即比較的id是否相同,這id類似于人的身份證標(biāo)識(shí))。
  • == 比較的是兩個(gè)對(duì)象的內(nèi)容是否相等,即內(nèi)存地址可以不一樣,內(nèi)容一樣就可以了。這里比較的并非是同一片葉子,可能葉子的種類或者脈絡(luò)相同就可以了。默認(rèn)會(huì)調(diào)用對(duì)象的?__eq__()方法。

獲取對(duì)象的內(nèi)存地址: id 函數(shù)
格式: id(對(duì)象)
作用: 返回一個(gè)對(duì)象在內(nèi)存中的地址

可以通過如下例子來(lái)區(qū)分比較下:

            >>> a = [
            
              "
            
            
              I
            
            
              "
            
            , 
            
              "
            
            
              love
            
            
              "
            
            , 
            
              "
            
            
              Python
            
            
              "
            
            
              ]

            
            >>> b =
            
               a

            
            
              #
            
            
               a的引用復(fù)制給b,在內(nèi)存中其實(shí)是指向了用一個(gè)對(duì)象
            
            
>>> b 
            
              is
            
            
               a
True

            
            >>>
            
               id(a)

            
            46381384
>>>
            
               id(b)

            
            46381384

            
              #
            
            
               當(dāng)然,內(nèi)容也肯定是相等的
            
            
>>> b ==
            
               a
True
            
          

可以發(fā)現(xiàn)b和a的內(nèi)存地址是相同的,它們指向同一塊內(nèi)存,因而 is 和 == 的結(jié)果都為True。這是因?yàn)橹苯淤x值都是賦值的引用,是引用,是引用,重要的事情說(shuō)三遍。

但如果不是通過引用賦值,而是通過切片賦值呢?

            
              #
            
            
               b通過切片操作重新分配了對(duì)象,但是值和a相同
            
            
>>> b =
            
               a[:]

            
            >>> b 
            
              is
            
            
               a
False

            
            >>>
            
               id(a)

            
            48740680
>>>
            
               id(b)

            
            48740680
>>> b == a 
            
              #
            
            
               但他們的值還是相等的
            
            
True
          

新建對(duì)象之后,b 和 a 指向了不同的內(nèi)存,所以 b is a 的結(jié)果為False,而 b==a的結(jié)果為True。

在這里,小編提一個(gè)問題,b[0] is a[0] 的結(jié)果呢?

答案是True。

因?yàn)榍衅截愂菧\拷貝,列表中的元素并未重新創(chuàng)建。

通常,我們關(guān)注的是值,而不是內(nèi)存地址,因此 Python 代碼中 == 出現(xiàn)的頻率比 is 高。

但是什么時(shí)候用 is 呢?

is 與 == 相比有一個(gè)比較大的優(yōu)勢(shì),就是計(jì)算速度快,因?yàn)樗荒苤剌d,不用進(jìn)行特殊的函數(shù)調(diào)用,少了函數(shù)調(diào)用的開銷而直接比較兩個(gè)整數(shù) id。而 a == b 則是等同于a.__eq__(b)。繼承自 object 的?__eq__?方法比較兩個(gè)對(duì)象的id,結(jié)果與 is 一樣。但是多數(shù)Python的對(duì)象會(huì)覆蓋object的 ? __eq__方法,而定義內(nèi)容的相關(guān)比較,所以比較的是對(duì)象屬性的值。

在變量和單例值之間比較時(shí),應(yīng)該使用 is。

目前,最常使用 is 的地方是判斷對(duì)象是不是 None。

下面是推薦的寫法:

            a 
            
              is
            
             None
          

判斷不是None的推薦寫法是:

            a 
            
              is
            
            
              not
            
             None
          

Python會(huì)對(duì)比較小的整數(shù)對(duì)象進(jìn)行緩存,下次用的時(shí)候直接從緩存中獲取,所以is 和 == 的結(jié)果可能相同:

            >>> a = 1
>>> b = 1
>>> a 
            
              is
            
            
               b
True

            
            >>> a ==
            
               b
True
            
          

而看一下另外一段代碼:

            >>> a = 257
>>> b = 257
>>> a 
            
              is
            
            
               b
False
            
          

原因:

Python僅僅對(duì)比較小的整數(shù)對(duì)象進(jìn)行緩存(范圍為范圍[-5, 256])緩存起來(lái),而并非是所有整數(shù)對(duì)象。需要注意的是,這僅僅是在命令行中執(zhí)行,而在Pycharm或者保存為文件執(zhí)行,結(jié)果是不一樣的,這是因?yàn)榻忉屍髯隽艘徊糠謨?yōu)化。

總結(jié)

  • is 比較兩個(gè)對(duì)象的 id 值是否相等,是否指向同一個(gè)內(nèi)存地址;
  • == 比較的是兩個(gè)對(duì)象的內(nèi)容是否相等,值是否相等;
  • 小整數(shù)對(duì)象[-5,256]在全局解釋器范圍內(nèi)被放入緩存供重復(fù)使用;
  • is 運(yùn)算符比 == 效率高,在變量和None進(jìn)行比較時(shí),應(yīng)該使用 is。

五.變量的刪除

del 語(yǔ)句(del 是 delete 的簡(jiǎn)寫)
作用: 用于刪除變量,同時(shí)刪除與對(duì)象的綁定關(guān)系。如果可能則釋放對(duì)象
語(yǔ)法: del 變量名


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 江阴市| 锡林浩特市| 中卫市| 额敏县| 稷山县| 常州市| 平定县| 福建省| 庆阳市| 定日县| 潍坊市| 鄯善县| 始兴县| 绥棱县| 浪卡子县| 威海市| 孟村| 调兵山市| 内黄县| 边坝县| 洛浦县| 曲水县| 康保县| 巴彦县| 宁明县| 周至县| 玛纳斯县| 阿克陶县| 米泉市| 瑞丽市| 门头沟区| 南昌市| 绥中县| 台东县| 堆龙德庆县| 玉溪市| 福鼎市| 剑河县| 东乌珠穆沁旗| 宝坻区| 宁乡县|