欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python動態(tài)類型實現(xiàn)原理及過程解析

 更新時間:2020年08月31日 14:34:03   作者:五月的白色鈴蘭  
這篇文章主要介紹了Python動態(tài)類型實現(xiàn)原理及過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

在python中,我們使用變量時,并沒有聲明變量的存在和類型。類型是在運行過程中自動決定的。

a = 3

python將會執(zhí)行三步去完成上面這個請求。

1.創(chuàng)建一個對象代表3

2.創(chuàng)建一個變量a,如果a未創(chuàng)建。

3.將變量a與對象3相連接。

可以將變量a看作對象3的一個引用。

a = 3
b = a

多個變量可以指向同一個對象,在Python中叫共享引用。

Python在每個對象中保持了一個計數(shù)器,用于記錄當前指向該對象的引用的數(shù)目,一旦計數(shù)器被設置為0,該對象的內存空間就會自動回收。

原處修改對象

由于共享引用的存在,有一些對象和操作會在原處修改對象。

Python中對象可分為可變類型對象和不可變類型對象。

可變對象:列表,字典

不可變對象:數(shù)字,字符串,元組

如果變量是不可變對象的引用,對變量名的修改不會影響其他變量,而是直接連接到修改的對象。

a = 3
b = a
print(a)# 3
print(b)# 3

a = 4
print(a)# 4
print(b)# 3

如果變量是可變對象的引用,對變量名的修改會影響其他變量。

a = [1,2,3]
b = a
print(a)# [1, 2, 3]
print(b)# [1, 2, 3]

a[0] = 4
print(a)# [4, 2, 3]
print(b)# [4, 2, 3]

拷貝

所以當你需要創(chuàng)建一個與原列表一樣同時又獨立于原列表的列表時,可以使用拷貝。

下面介紹最常用的兩種。

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

a[0] = 4
print(a)# [4, 2, 3]
print(b)# [1, 2, 3]

此時b引用的是a所引用的對象的拷貝。a,b指向不同的內存區(qū)域。

在字典和集合中,無法使用這種方法。

可以使用標準庫中的copy模塊

import copy

a = [1,2,[3]]
b = copy.copy(a)# 淺拷貝
c = copy.deepcopy(a)# 深拷貝

a[0] = 0
a[-1].append(4)

print(a)# [0, 2, [3, 4]]
print(b)# [1, 2, [3, 4]]
print(c)# [1, 2, [3]]

淺拷貝中可變對象中嵌套的可變對象的引用還是原來的引用。

深拷貝可以拷貝嵌套的對象結構。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Java?Maven?Settings配置參考教程

    Java?Maven?Settings配置參考教程

    這篇文章主要介紹了Java?Maven?Settings配置參考,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • bool當成函數(shù)參數(shù)錯誤理解

    bool當成函數(shù)參數(shù)錯誤理解

    經(jīng)常會在函數(shù)的參數(shù)里使用bool參數(shù),這會大大地降低代碼的可讀性
    2012-11-11
  • Java 數(shù)據(jù)結構與算法系列精講之二叉堆

    Java 數(shù)據(jù)結構與算法系列精講之二叉堆

    二叉堆是一種特殊的堆,其實質是完全二叉樹。二叉堆有兩種:最大堆和最小堆。最大堆是指父節(jié)點鍵值總是大于或等于任何一個子節(jié)點的鍵值。而最小堆恰恰相反,指的是父節(jié)點鍵值總是小于任何一個子節(jié)點的鍵值
    2022-02-02
  • struts2如何使用攔截器進行用戶權限控制實例

    struts2如何使用攔截器進行用戶權限控制實例

    本篇文章主要介紹了struts2如何使用攔截器進行用戶權限控制實例,非常具有實用價值,需要的朋友可以參考下
    2017-05-05
  • java的MybatisPlus調用儲存過程的返回數(shù)據(jù)問題

    java的MybatisPlus調用儲存過程的返回數(shù)據(jù)問題

    這篇文章主要介紹了java的MybatisPlus調用儲存過程的返回數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java之assert關鍵字用法案例詳解

    java之assert關鍵字用法案例詳解

    這篇文章主要介紹了java之assert關鍵字用法案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • Jmeter對接口測試入?yún)崿F(xiàn)MD5加密

    Jmeter對接口測試入?yún)崿F(xiàn)MD5加密

    這篇文章主要介紹了Jmeter對接口測試入?yún)崿F(xiàn)MD5加密,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • SpringMVC中請求參數(shù)的獲取方式

    SpringMVC中請求參數(shù)的獲取方式

    這篇文章主要為大家介紹了SpringMVC中請求參數(shù)的獲取方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • java jvm的知識詳細介紹

    java jvm的知識詳細介紹

    這篇文章主要介紹了java jvm的知識詳細介紹的相關資料,這里對java jvm中的堆內存和棧內存等基礎知識做了詳細介紹,需要的朋友可以參考下
    2016-11-11
  • java面試應用上線后Cpu使用率飆升如何排查

    java面試應用上線后Cpu使用率飆升如何排查

    這篇文章主要為大家介紹了java面試中應用上線后Cpu使用率飆升如何排查的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07

最新評論