首页 > 系统相关 >Python内存模型

Python内存模型

时间:2024-11-01 13:13:00浏览次数:4  
标签:Python 模型 对象 lst 内存 print copy id

Python深浅拷贝

一. 变量的内存模型

x= 1
print(id(x))  # 94454455464992
print(id(1))  # 94454455464992
print(id(5))  # 94454455465120
x= 5
print(id(x))  # 94454455465120
print(id(1))  # 94454455464992
print(id(5))  # 94454455465120
""" 
Python更改变量值,发生变化的是变量地址而不是地址上的值,python还为字面量分配空间,这在C++中都不成立。
"""

(一). Python的间接引用机制

python中类型(按在修改该类型变量时是否产生新的对象分):

  • 可变类型:列表,字典
  • 不可变类型:int,float,str,tuple

函数调用时,实参将其引用复制给形参,此时两者指向同一个对象,根据类型特性,修改形参值时,可变变量直接在原对象上修改,不可变变量则新创建一个对象。这种机制存在于整个Python环境

tup= ([1,2], 3)
tu= tup
tu[0][0]= 3
print(tu, tup)
"""
print:
([1,3], 3)
([1,3], 3)
由以上结果可知:tup里的list存储的只是一个引用
"""

若想在函数中修改不可变实参,可用return命令
若想在函数中不修改可变实参,可引入copy模块,该模块的copy.copy()只对可变类型创建新对象,对不可变类型不创建新对象

(二).copy模块

copy.copy()函数,前面提到该函数只对可变类型创建新对象,不对不可变类型创建新对象。
当copy.copy()一个对象时,对象里的子元素是复制了对象还是仅仅是引用呢?

import copy
lst= [[1,2], 3]
lst_cp= copy.copy(lst)
print(id(lst), id(lst_cp), '\n')
print(id(lst[0]), id(lst_cp[0]))
"""
print:
139830680186504  139830680268488
139830680191752  139830680191752
"""

可知,仅仅是复制了引用,此时可使用copy.deepcopy()深拷贝,来完整复制一个对象。

标签:Python,模型,对象,lst,内存,print,copy,id
From: https://www.cnblogs.com/sgqmax/p/18519931

相关文章

  • Python格式化字符串
    1.%格式化最早用%进行格式化字符串#%d%s%f格式化字符串name="Max"num=1print("Hello%s,yournumis%d"%(name,num))#HelloMax,yournumis1#也支持字典形式格式化print("Hello[%(name)s],yournumis%(num)d"%{"num":1,"name&q......
  • Python的数值与bytes类型
    Python中数值的表示进制表示n=97#十进制表示97n=0b01100001#二进制表示97n=0x61#十六进制表示97n=0o141#八进制表示97上面四种方式定义的值是等价的,均为十进制的97ASCII编码表示n="a"n="\b01100001"n="\x61"n="\o141"上面四种方式定义的值也是等价......
  • https脚本python和bash版本
    以下是一个使用 `curl` 的 Bash 脚本,可以发送 HTTPS 的 GET 和 POST 请求,同时支持 cookies 和gzip 压缩: ```bash#!/bin/bash # 默认配置COOKIE_FILE="cookies.txt" # 存储cookies的文件USER_AGENT="Mozilla/5.0(X11;Ubuntu;Linuxx86_64)AppleWe......
  • 一些可以简化 AI 大模型安装和配置过程的软件
    以下是一些可以简化AI大模型安装和配置过程的软件:Ollama:特点:这是一个可以在本地部署和管理开源大语言模型的框架,它极大地简化了开源大语言模型的安装和配置细节,支持多种模型,一经推出就广受好评。用户可以通过简单的命令来下载和运行大语言模型,比如使用“ollamarun[......
  • 2024年大湾区杯粤港澳金融数学建模 A题:证券市场投资风险控制模型设计 思路+代码+chatg
    目录任务一:风险计量指标的定义与计算1.1平均收益率1.2市场流动性1.3市场情绪指标任务二:系统性风险预测模型构建2.1多因子模型2.2时间序列模型-ARIMA2.3时间序列模型-GARCH2.4机器学习模型-随机森林任务三:事前风控体系构建3.1回测分析3.2动态调整机......
  • 2024年大湾区杯粤港澳金融数学建模 B题:粤港澳大湾区经济预测数学模型 思路+代码+chatg
    目录任务一:影响粤港澳大湾区经济发展的因素分析1.1主成分分析(PCA)1.2回归分析任务二:粤港澳大湾区经济预测模型建立2.1灰色预测模型(GM(1,1))2.2向量自回归(VAR)模型任务三:粤港澳大湾区与其他湾区对比分析3.1经济因素对比分析3.2SWOT分析任务一:影响粤港澳大......
  • 政策评价模型——双重差分DID模型
    政策评估(PolicyEvaluation)在公共经济学和劳动经济学中广泛应用,主要用于评价已实施政策的效果。其核心目的是评估政策的处理效应(TreatmentEffect),即该政策对特定目标人群的实际影响。通常情况下,政策的实施往往仅针对特定人群,如低收入家庭、特定行业或区域。为了评估政策的影响,政......
  • 【Python】网络请求与数据获取:Requests库的使用与技巧
    网络请求与数据获取:Requests库的使用与技巧在现代Web开发与数据科学工作中,从API、网页或服务端获取数据是非常常见的任务,而Python的Requests库为此提供了便捷且功能强大的工具。本文将从基本的HTTP请求操作出发,结合常见的数据获取需求,深入讲解Requests的使用......
  • python 计算 sin 值
    概述当角(弧度描述)x足够小时,sin(x)约等于x,而已知三角等式sin(x)=3sin(x/3)-4sin^3(x/3),用python语言计算任意大的弧度角的sin值实现可以利用给定的三角恒等式[\sin(x)=3\sin\left(\frac{x}{3}\right)-4\sin^3\left(\frac{x}{3}\right)]来递归地计算任意弧度......
  • 8类个性天赋认知工具:MBTI、盖洛普优势、命理工具、玛雅历、九大天赋模型....
    认识你自己,从来不是一个哲学问题,它是一个非常实用的生命答案。知道“我是谁”,就能知道“我要往哪里去”。一旦懂得了自我的天赋、性格和挑战,人就走出了生命的迷茫,知道此生应该选择怎样的事业,怎样的生活,怎样的情感。推荐几个自我认知工具。 一、各种性格分析工具:九型人格、性......