0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python-變量的引用與可變

汽車電子技術(shù) ? 來源:程序猿知秋 ? 作者: 程序猿知秋 ? 2023-02-16 15:15 ? 次閱讀

引用

概念

  • **變量 數(shù)據(jù) **都是保存在內(nèi)存中的
  • Python 中,函數(shù)參數(shù)傳遞和返回值 都是靠 引用 傳遞的
  • **變量 **和 數(shù)據(jù)是分開存儲(chǔ)的
  • 數(shù)據(jù) 保存在內(nèi)存中的一個(gè)位置
  • 變量 中記錄數(shù)據(jù)的地址,就叫 引用
  • 使用** id() ** 函數(shù)可以查看變量中保存數(shù)據(jù)所在的 內(nèi)存地址

注: 如果變量已經(jīng)被定義,當(dāng)給一個(gè)變更 重新賦值的時(shí)候,本質(zhì)上是 修改了數(shù)據(jù)的引用

**示例

**

a=1
print(id(a))
print(id(1))


b=a
print(id(b))


a=2
print(id(a))

輸出結(jié)果:從這里面可以看出 前三個(gè)的內(nèi)存地址是一樣的

圖片

圖片

**函數(shù)的參數(shù)傳遞與返回值的引用

**

def test(num):
  print("傳遞的值是:%d,內(nèi)存地址是:%d" %(num,id(num)))
  result="test"
  print("返回的值是:%s,內(nèi)存地址是:%d" %(result,id(result)))
  return result




a=1
print("需要傳遞的參數(shù)的值是:%d,內(nèi)存地址是:%d"%(a,id(a)))


ss=test(a)
print("調(diào)用函數(shù)獲取的返回值是:%s,內(nèi)存地址是:%d" %(ss,id(ss)))

**輸出結(jié)果

**

圖片

結(jié)論:從結(jié)果中可得知,在調(diào)用函數(shù)時(shí),傳入的變量,實(shí)際上是將變量的引用內(nèi)存地址 傳遞進(jìn)去了。函數(shù)在返回時(shí),同樣是將變量對(duì)應(yīng)的 引用 返回出來了

可變和不可變類型

  • 不可變類型,即內(nèi)存中的數(shù)據(jù)不允許被修改
    • 數(shù)字類型:int 、bool、float、complex、long
    • 字符串 str
    • 元組 tuple
  • 可變類型,即內(nèi)存中的數(shù)據(jù)可以被修改
    • 列表 list
    • 字典 dict
    • 集合 set

示例

# 不可變數(shù)據(jù)類型
a=1
print("內(nèi)存地址是:%d" %id(a))
a=2
print("內(nèi)存地址是:%d" %id(a))




#可變數(shù)據(jù)類型
b=[1,2,3]
print("內(nèi)存地址是:%d" %id(b))
b.append(4)
print("值是:%s,內(nèi)存地址是:%d" %(b,id(b)))


#如果重新用 = 賦值,則會(huì)新建一塊內(nèi)存地址
b=[]
print("新內(nèi)存地址是:%d" %id(b))

輸出結(jié)果

圖片

結(jié)論:

  • 可變類型的數(shù)據(jù)變化,是通過方法來 實(shí)現(xiàn)的
  • 如果給一個(gè)可變類型的變量,賦值了一個(gè)新的數(shù)據(jù),引用的地址則會(huì)不同

**哈希(hash)

**

  • Python 中內(nèi)置有一個(gè)名字叫做 hash() 的函數(shù)
    • 接收一個(gè) 不可變類型 的數(shù)據(jù)作為參數(shù)
    • 返回 結(jié)果是一個(gè)整數(shù)
  • 哈希是一種算法,其作用就是提取數(shù)據(jù)的特征碼(類似指紋)
    • 相同的內(nèi)容 得到 相同的結(jié)果
    • 不同的內(nèi)容 得到 不同的結(jié)果
  • 在 Python 中,設(shè)置字典的鍵值對(duì)時(shí),會(huì)首先對(duì) key 進(jìn)行 hash ,用來決定如何在內(nèi)存中保存字典的數(shù)據(jù),以方便 后續(xù) 對(duì)字典的操作:增、刪、改、查
    • 鍵值對(duì)的 key 必須是不可變類型的數(shù)據(jù)
    • 鍵值對(duì)的 value 可以是任意類型的數(shù)據(jù)
# 對(duì)同一個(gè)不可變的數(shù)據(jù)類型,hash 兩次,得到的結(jié)果是一樣的
print(hash("123"))
print(hash("123"))

輸出結(jié)果

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4235

    瀏覽量

    61965
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    607

    瀏覽量

    28257
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84069
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    python環(huán)境變量的配置pip

    Python環(huán)境變量的配置和使用是每個(gè)Python開發(fā)者都需要了解和掌握的基本技能之一。在本文中,我們將詳細(xì)介紹如何正確配置Python環(huán)境變量
    的頭像 發(fā)表于 12-15 15:41 ?2099次閱讀

    請(qǐng)問python-樹莓派如何通過按鍵控制步進(jìn)電機(jī)正反轉(zhuǎn)?

    步進(jìn)電機(jī)驅(qū)動(dòng)原理是什么?python-樹莓派如何通過按鍵控制步進(jìn)電機(jī)正反轉(zhuǎn)?
    發(fā)表于 10-09 08:45

    python-控制khr3hv-master機(jī)器人

    python-控制khr3hv機(jī)器人,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 11-22 15:40 ?2次下載

    python環(huán)境變量設(shè)置

    安裝python之后,我們往往面臨這樣一個(gè)問題,在命令行輸入“python”,竟然出錯(cuò),難道是沒有安裝成功嗎?非也,其實(shí)是你的系統(tǒng)環(huán)境變量沒有設(shè)置好。今天,小編就來帶大家學(xué)學(xué)python
    發(fā)表于 11-20 11:47 ?2322次閱讀
    <b class='flag-5'>python</b>環(huán)境<b class='flag-5'>變量</b>設(shè)置

    Python的常量與變量基礎(chǔ)知識(shí)詳解

    Python是一門強(qiáng)類型的動(dòng)態(tài)語言。 字面常量,變量沒有類型,變量只是在特定的時(shí)間指向特定的對(duì)象而已,變量所指向的對(duì)象是有類型的。 變量
    發(fā)表于 12-14 05:31 ?1770次閱讀

    python設(shè)置環(huán)境變量

    我們想要運(yùn)行python,需要安裝Python,還要設(shè)置一些環(huán)境變量1,此電腦,右鍵屬性2、高級(jí)系統(tǒng)設(shè)置-> 環(huán)境變量3、在系統(tǒng)變量中找到p
    發(fā)表于 11-10 14:49 ?841次閱讀

    Python私有變量的定義方法

    通過在類中定義接口,實(shí)現(xiàn)私有變量引用、讀取和修改。除了Python私有變量是使用“_”定義之外,還有兩種特殊變量,分別是:1. ?_xx?
    發(fā)表于 02-13 16:49 ?1605次閱讀

    Python-無處不在的變量

    Python中,每個(gè)變量在使用前都必須賦值,變量賦值以后,該變量才會(huì)被創(chuàng)建
    的頭像 發(fā)表于 02-16 14:51 ?503次閱讀

    Python-列表

    Python中,所有 非數(shù)字型變量 都支持以下特點(diǎn)
    的頭像 發(fā)表于 02-16 14:58 ?580次閱讀
    <b class='flag-5'>Python-</b>列表

    Python-局部變量與全局變量

    局部變量是在函數(shù)內(nèi)部定義的變量,只能在函數(shù)內(nèi)部使用,函數(shù)執(zhí)行結(jié)束后,函數(shù)內(nèi)部的局部變量會(huì)被系統(tǒng)回收,不同的函數(shù),可以定義相同名稱的局部變量,相互之間沒有任何關(guān)聯(lián)
    的頭像 發(fā)表于 02-16 15:16 ?785次閱讀
    <b class='flag-5'>Python-</b>局部<b class='flag-5'>變量</b>與全局<b class='flag-5'>變量</b>

    淺析python變量類型

    python不需要事先聲明變量python變量類型是在運(yùn)行過程中自動(dòng)決定的,不需要代碼聲明類型。
    的頭像 發(fā)表于 03-10 10:11 ?713次閱讀
    淺析<b class='flag-5'>python</b>的<b class='flag-5'>變量</b>類型

    如何配置Python環(huán)境變量

    配置Python環(huán)境變量是在安裝Python解釋器后的一項(xiàng)重要步驟,它允許您在任何位置都可以通過命令行或腳本運(yùn)行Python解釋器,使Python
    的頭像 發(fā)表于 04-14 12:16 ?2w次閱讀

    結(jié)構(gòu)體成員變量引用方法123

    這里采用的是常用的typedef關(guān)鍵字進(jìn)行定義結(jié)構(gòu)體類型,可以看到student_t這種數(shù)據(jù)類型里面有4個(gè)成員變量,分別是學(xué)號(hào)、姓名、分?jǐn)?shù)、年齡,這些成員變量既然是變量就應(yīng)該滿足變量
    的頭像 發(fā)表于 07-08 14:45 ?2457次閱讀
    結(jié)構(gòu)體成員<b class='flag-5'>變量</b>的<b class='flag-5'>引用</b>方法123

    Python可變對(duì)象真的不可變

    在日常的學(xué)習(xí)和工作中,經(jīng)常會(huì)遇到"不可變對(duì)象"的問題,但是隨著接觸Python這門語言的時(shí)間越來越多,遇到的坑越來越奇怪。我不禁產(chǎn)生了一個(gè)疑問:不可變對(duì)象真的不可變嗎? 我們知道元組就
    的頭像 發(fā)表于 11-03 11:48 ?457次閱讀
    <b class='flag-5'>Python</b> 不<b class='flag-5'>可變</b>對(duì)象真的不<b class='flag-5'>可變</b>嗎

    python變量命名規(guī)則

    Python是一種高級(jí)編程語言,廣泛應(yīng)用于軟件開發(fā)、數(shù)據(jù)分析和科學(xué)計(jì)算等領(lǐng)域。在Python中,變量是用來存儲(chǔ)數(shù)據(jù)的容器,它們具有名稱以及與之關(guān)聯(lián)的值。然而,變量的命名并不是隨意的,而
    的頭像 發(fā)表于 11-23 15:44 ?1022次閱讀