引用
概念
- **變量 和 數(shù)據(jù) **都是保存在內存中的
 - 在 Python 中,函數(shù) 的參數(shù)傳遞和返回值 都是靠 引用 傳遞的
 - **變量 **和 數(shù)據(jù)是分開存儲的
 - 數(shù)據(jù) 保存在內存中的一個位置
 - 變量 中記錄數(shù)據(jù)的地址,就叫 引用
 - 使用** id() ** 函數(shù)可以查看變量中保存數(shù)據(jù)所在的 內存地址
 
注: 如果變量已經(jīng)被定義,當給一個變更 重新賦值的時候,本質上是 修改了數(shù)據(jù)的引用
**示例
**
a=1
print(id(a))
print(id(1))
b=a
print(id(b))
a=2
print(id(a))
輸出結果:從這里面可以看出 前三個的內存地址是一樣的


**函數(shù)的參數(shù)傳遞與返回值的引用
**
def test(num):
  print("傳遞的值是:%d,內存地址是:%d" %(num,id(num)))
  result="test"
  print("返回的值是:%s,內存地址是:%d" %(result,id(result)))
  return result
a=1
print("需要傳遞的參數(shù)的值是:%d,內存地址是:%d"%(a,id(a)))
ss=test(a)
print("調用函數(shù)獲取的返回值是:%s,內存地址是:%d" %(ss,id(ss)))
**輸出結果
**

結論:從結果中可得知,在調用函數(shù)時,傳入的變量,實際上是將變量的引用內存地址 傳遞進去了。函數(shù)在返回時,同樣是將變量對應的 引用 返回出來了
可變和不可變類型
- 不可變類型,即內存中的數(shù)據(jù)不允許被修改
- 數(shù)字類型:int 、bool、float、complex、long
 - 字符串 str
 - 元組 tuple
 
 - 可變類型,即內存中的數(shù)據(jù)可以被修改
- 列表 list
 - 字典 dict
 - 集合 set
 
 
示例
# 不可變數(shù)據(jù)類型
a=1
print("內存地址是:%d" %id(a))
a=2
print("內存地址是:%d" %id(a))
#可變數(shù)據(jù)類型
b=[1,2,3]
print("內存地址是:%d" %id(b))
b.append(4)
print("值是:%s,內存地址是:%d" %(b,id(b)))
#如果重新用 = 賦值,則會新建一塊內存地址
b=[]
print("新內存地址是:%d" %id(b))
輸出結果

結論:
- 可變類型的數(shù)據(jù)變化,是通過方法來 實現(xiàn)的
 - 如果給一個可變類型的變量,賦值了一個新的數(shù)據(jù),引用的地址則會不同
 
**哈希(hash)
**
- Python 中內置有一個名字叫做 hash() 的函數(shù)
- 接收一個 不可變類型 的數(shù)據(jù)作為參數(shù)
 - 返回 結果是一個整數(shù)
 
 - 哈希是一種算法,其作用就是提取數(shù)據(jù)的特征碼(類似指紋)
- 相同的內容 得到 相同的結果
 - 不同的內容 得到 不同的結果
 
 - 在 Python 中,設置字典的鍵值對時,會首先對 key 進行 hash ,用來決定如何在內存中保存字典的數(shù)據(jù),以方便 后續(xù) 對字典的操作:增、刪、改、查
- 鍵值對的 key 必須是不可變類型的數(shù)據(jù)
 - 鍵值對的 value 可以是任意類型的數(shù)據(jù)
 
 
# 對同一個不可變的數(shù)據(jù)類型,hash 兩次,得到的結果是一樣的
print(hash("123"))
print(hash("123"))
輸出結果

                        聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
                        舉報投訴
                    
                    - 
                                函數(shù)
                                +關注
關注
3文章
4403瀏覽量
66599 - 
                                變量
                                +關注
關注
0文章
615瀏覽量
29340 - 
                                python
                                +關注
關注
56文章
4850瀏覽量
89309 
發(fā)布評論請先 登錄
相關推薦
                    熱點推薦
                  python環(huán)境變量的配置pip
Python環(huán)境變量的配置和使用是每個Python開發(fā)者都需要了解和掌握的基本技能之一。在本文中,我們將詳細介紹如何正確配置Python環(huán)境變量
    
    
python環(huán)境變量設置
安裝python之后,我們往往面臨這樣一個問題,在命令行輸入“python”,竟然出錯,難道是沒有安裝成功嗎?非也,其實是你的系統(tǒng)環(huán)境變量沒有設置好。今天,小編就來帶大家學學python
    
                發(fā)表于 11-20 11:47        
        ?2612次閱讀            
    
                    
    
Python的常量與變量基礎知識詳解
Python是一門強類型的動態(tài)語言。 字面常量,變量沒有類型,變量只是在特定的時間指向特定的對象而已,變量所指向的對象是有類型的。 變量:
    
                發(fā)表于 12-14 05:31        
        ?2031次閱讀            
    
python設置環(huán)境變量
我們想要運行python,需要安裝Python,還要設置一些環(huán)境變量1,此電腦,右鍵屬性2、高級系統(tǒng)設置-> 環(huán)境變量3、在系統(tǒng)變量中找到p
    
                發(fā)表于 11-10 14:49        
        ?1085次閱讀            
    
Python私有變量的定義方法
通過在類中定義接口,實現(xiàn)私有變量的引用、讀取和修改。除了Python私有變量是使用“_”定義之外,還有兩種特殊變量,分別是:1. ?_xx?
    
                發(fā)表于 02-13 16:49        
        ?1872次閱讀            
    
Python-局部變量與全局變量
局部變量是在函數(shù)內部定義的變量,只能在函數(shù)內部使用,函數(shù)執(zhí)行結束后,函數(shù)內部的局部變量會被系統(tǒng)回收,不同的函數(shù),可以定義相同名稱的局部變量,相互之間沒有任何關聯(lián)
    
    
                    
    
如何配置Python環(huán)境變量
配置Python環(huán)境變量是在安裝Python解釋器后的一項重要步驟,它允許您在任何位置都可以通過命令行或腳本運行Python解釋器,使Python
    
    
結構體成員變量的引用方法123
這里采用的是常用的typedef關鍵字進行定義結構體類型,可以看到student_t這種數(shù)據(jù)類型里面有4個成員變量,分別是學號、姓名、分數(shù)、年齡,這些成員變量既然是變量就應該滿足變量的
    
    
                    
    
Python 不可變對象真的不可變嗎
在日常的學習和工作中,經(jīng)常會遇到"不可變對象"的問題,但是隨著接觸Python這門語言的時間越來越多,遇到的坑越來越奇怪。我不禁產(chǎn)生了一個疑問:不可變對象真的不可變嗎? 我們知道元組就
    
    
                    
    
python變量命名規(guī)則
Python是一種高級編程語言,廣泛應用于軟件開發(fā)、數(shù)據(jù)分析和科學計算等領域。在Python中,變量是用來存儲數(shù)據(jù)的容器,它們具有名稱以及與之關聯(lián)的值。然而,變量的命名并不是隨意的,而
    
    
          
        
        
Python-變量的引用與可變
                
 
    
    
           
            
            
                
            
評論