好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Python基礎知識之變量的詳解

Python基礎知識之變量的詳解

熱門標簽:打印谷歌地圖標注 蘇州人工外呼系統軟件 電話外呼系統招商代理 佛山通用400電話申請 淮安呼叫中心外呼系統如何 京華圖書館地圖標注 廣東旅游地圖標注 電話機器人貸款詐騙 看懂地圖標注方法

一.定義

在python中,變量名只有在第一次出現的時候,才是定義變量。當再次出現時,不是定義變量,而是直接調用之前定義的變量。

二.命名方法

2.1小駝峰命名法

第一個單詞以小寫字母開始,后續單詞的首字母大寫

firstName , lastName

2.2大駝峰命名法

每一個單詞的首字母都采用大寫字母
FirstName , LastName

2.3下劃線命名法

每個單詞之間用下劃線連接起來
first_name , last_name

三.命名規則

3.1標識符

開發人員自定義的一些符號和名稱
如:變量名、函數名、類名

標識符命名規則
1.只能由數字、字母、下劃線組成,且不能以數字開頭
2.不能和python中的關鍵字重名
3.盡量做到見名知義
4.不能使用單字符(i,o)作為變量名,因為太像0和1了
5.函數首字母小寫,類的首字母大寫

3.2關鍵字

1.關鍵字就是在python內部已經使用的標識符
2.關鍵字具有特殊的功能和含義
3.開發者不允許定義和關鍵字相同的名字的標識符

注意:

1.命名規則可以被視為一種慣例,無絕對與強制,目的是為了增加代碼的識別和可讀性
2.python中的標識符是區分大小寫的
3.在定義變量時,為了保證代碼格式,遵循PEP8規范,等號(=)的左右兩邊該各保留一個空格

四.使用方法

4.1單變量賦值:

變量名 = 值
例:a = 1
在python中賦值語句總是建立對象的引用值,而不是復制對象。因此,python中的變量存儲的是引用數據的內存地址,而不是數據存儲區域。


當涉及多個變量時:

a = 1
b = a
c = b
print(a) # 1
print(id(a)) # 140710098927888
print(b) # 1
print(id(b)) # 140710098927888
print(c) # 1
print(id(c)) # 140710098927888

a、b、c三個變量的值都等于1,即使在最初定義變量的時候b和c不是直接等于1的,但是他們仍然存儲著指向“1”的內存地址。

4.2底層邏輯:

4.3總結:

可以說Python中沒有賦值,只有引用。Python 沒有“變量”,我們平時所說的變量其實只是“標簽”,是引用。

當創建了無數個變量=1時,在內存中,只會開辟無數個空間存儲變量,再開辟一個空間存儲“1”,而這些變量中存儲的內存地址都相同,全都指向“1”的內存地址。

在代碼層面,看起來像是給變量賦值,但是在底層卻是變量指向值,也就是變量引用了值。

相信大家還有疑問,那么請繼續閱讀

5.變量進階

先提出一個問題:

a = [0, 1, 2]
a[1] = a
print(a)

猜想結果是:

[0, [0, 1, 2], 2]

但是真正的結果是:

[0, [...], 2]

為什么結果會賦值了無限次??

結合剛才得出的結論:Python中沒有賦值,只有引用。

真相是:
這樣相當于創建了一個引用自身的結構,所以導致了無限循環。

通過遞歸函數可能更好理解:

a = [0,1,2]
a[1] = a

def fun1(n1):
    for i in n1:
        if type(i) == list:
            return fun1(n1)
        else:
            print(i)

print(fun1(a[1]))

結果:

果然是:調用Python對象時超出最大遞歸深度。

底層邏輯:a[1] = a 造成了遞歸引用

當調用變量a時,就是調用[0,1,2],此時 [0,1,2] 的結構變成了 [0,?,2] ,而 ? 又指向 [0,?,2] 本身,以此類推,造成了遞歸調用的情況。
所以在遍歷a并輸出的時候會引起超出最大遞歸深度的錯誤。

想得到 [0, [0, 1, 2], 2] 的結果并不難:

a = [0,1,2]
a[1] = a[:]
print(a) # [0, [0, 1, 2], 2]

a[:] = a[0:尾部索引值:1]
生成對象的淺拷貝或者是復制序列,不再是引用和共享變量,但此法只能頂層復制

6. a = a + 1 和 a += 1 的區別

既然談到了賦值和引用的區別,那就捎帶談一下a = a + 1 和 a += 1 的區別:
直接上代碼:

a = [1, 2]
b = a
print(id(a)) # 1878561149448
print(id(b)) # 1878561149448
a = a + [1, 2]
print(a, b) # [1, 2, 1, 2] [1, 2]
print(id(a)) # 1878593529288
print(id(b)) # 1878561149448
print ("-------------------")
a = [1, 2]
b = a
print(id(a)) # 1878561149960
print(id(b)) # 1878561149960
a += [1, 2]
print(a, b) # [1, 2, 1, 2] [1, 2, 1, 2]
print(id(a)) # 1878561149960
print(id(b)) # 1878561149960

通過對比發現問題:變量a通過“=” 和 “+=”運算,得到的變量b竟然是不同的,運算后變量a的id竟然也是不同的。
執行a = a + [1, 2] 后:
變量b指向的值并未發生改變,而變量a的id發生了變化,值也發生了變化
執行a += [1, 2] 后:
變量a和b的值都發生了改變,而二者的id卻沒有改變

具體原因,看圖說話:
執行a = a + [1, 2] 后,會生成一個新對象,并在cpu上開辟一塊空間存儲 a + [1, 2] ,然后由a指向它。所以變量a的id發生了變化,值也發生了變化。此時變量b指向的值并未發生改變。


執行a += [1, 2] 后:并不會生成新對象,只是把a原本指向內存地址的對象的值改變成了 a + [1, 2],所以變量a和b的值都發生了改變,而二者的id卻沒有改變。


對于可變對象類型和不可變對象類型有不同的結果:

可變對象類型:+=改變了原本地址上對象的值,不改變原本的指向地址;=則改變了原本的指向地址,創建了新的對象,并指向新的地址

不可改變對象類型:都是改變原本的指向地址,指向新創建的對象地址

a = 'abc'
b = a
print(id(a)) # 1629835782384
print(id(b)) # 1629835782384
a = a + 'd'
print(a, b) # abcd abc
print(id(a)) # 1629835853168
print(id(b)) # 1629835782384
print ("-------------------")
a = 'abc'
b = a
print(id(a)) # 1629835782384
print(id(b)) # 1629835782384
a += 'd'
print(a, b) # abcd abc
print(id(a)) # 1629835782384
print(id(b)) # 1629835782384

到此這篇關于Python基礎知識之變量的詳解的文章就介紹到這了,更多相關python變量詳解內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python基礎知識(一)變量與簡單數據類型詳解
  • python基礎教程之基本數據類型和變量聲明介紹
  • 詳細解析Python中的變量的數據類型
  • Python基礎之高級變量類型實例詳解
  • Python入門變量的定義及類型理解

標簽:股票 江蘇 衡水 中山 呼和浩特 駐馬店 畢節 湖州

巨人網絡通訊聲明:本文標題《Python基礎知識之變量的詳解》,本文關鍵詞  Python,基礎知識,之,變量,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python基礎知識之變量的詳解》相關的同類信息!
  • 本頁收集關于Python基礎知識之變量的詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 亚洲性一区| 亚洲欧美色视频| 超91福利国产在线观看| 黄色手机看片| 色哟哟| 多男玩一女的黄暴小说| 国产精品久久久久永久免费看| 日本一级做a爰片毛片地址| 国产精品成人第一区二区三区| 白丝护士喷浆视频| 性欧美精品???4k| 亚洲国产AV精品毛片| 在车里滑进了岳的身体| 国产福利在线看| 色蜂视频| 91制片国产李宗瑞秘?| 国产色秀视频在线观看| 男人打飞出精视频无码| 黄色免费网站在线| 公车色情短篇合集H| 91丝袜白浆高潮潮喷在线观看 | 纨绔公子欢喜全文免费阅读| a毛片免费全部播放高清天码| 微拍 福利 视频 国产| 日本一区精品| 男人碰到紧的会出来的很快吗| 丫丫回家一年从YY胖成YY| 91无码人妻精品一区二区帝霸网| 欧美午夜??AV天堂| 国产福利小视频尤物98| 亚洲一二三区在线观看| 美女一级a毛片免费观看97| 国产97人人超碰cao蜜芽的介绍| 一品道一本香蕉视频| 黑人处破女出血免费播放| 亚洲无线一二三四区手机| 小荡货好紧好爽h护士在线观看 | 女主播扣逼| 亚洲人成在线播放| 日韩人妻无码精品一区二区三区电影| 国产AAA片无码不卡在线|