【python基础巩固】引用、浅深拷贝你分清了吗?

深入理解C++引用:从底层原理到现代编程实践 在C++编程中,引用(Reference)是一个基础但至关重要的概念,它不仅是变量的别名,更是理解现代C++内存管理与高效编程的核心。从底层实现来看,引用通常通过常量指针实现,确保了必须初始化、不能为空和不能重新绑定的特性,这为代码提供了更高的安全性。在技术价值上,引用避免了指针的繁琐语法和空指针风险,同时通过常量引用支持绑定临时对象,显著提升了函数参数传递的效率。在实际应用场景中,引用广泛应用于函数参数传递、范围for循环以及现代C++的移动语义与完美转发。通过掌握左值引用与右值引用的区别,开发者可以更好 阅读详情

引用、浅拷贝深拷贝

下面代码运行后,a、b、c、d四个变量的值,描述错误的是?

import copy
a = [1, 2, 3, 4, ['a', 'b']]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(5)
a[4].append('c')

这段代码的意思是:

import copy
 a = [1, 2, 3, 4, ['a', 'b']] 
 b = a     # 引用,除非直接给a重新赋值,否则a变则b变,b变则a变
 c = copy.copy(a)   # 浅复制,只会拷贝父对象, 不会拷贝父对象中的子对象,所以若a的子对象变则c 变,但是父对象变c不会变
 d = copy.deepcopy(a) #深拷贝,完全拷贝,完全独立于原对象,a变也不变
 a.append(5) # 改变父对象
  a[4].append('c')  #改变父对象中的 ['a', 'b']子对象 

因此结果是:
a=[1, 2, 3, 4, [‘a’, ‘b’,‘c’],5]
b=[1, 2, 3, 4, [‘a’, ‘b’,‘c’],5]
c=[1, 2, 3, 4, [‘a’, ‘b’,‘c’]]
d=[1, 2, 3, 4, [‘a’, ‘b’]]

练习:拔高题

1、python变量的查找顺序为局部作用域>外部嵌套作用域>全局作用域>内置模块作用域。
python中的4种作用域
L:Local,局部作用域,也就是我们在函数中定义的变量;
E:Enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;
G:Globa,全局变量,就是模块级别定义的变量;
B:Built-in,系统内置模块里面的变量,比如int, bytearray等。
2、python my.py v1 v2 命令运行脚本,通过 from sys import argv如何获得v2的参数值?( )
argv[2]
sys.argv是传递给python脚本的命令行参数字符串列表,argv[0]为该脚本自身路径,其余为命令行参数。
sys.argv是命令参数表,包括文件名
argv[0]: 【path】/my.py
argv[1]: v1
argv[2]: v2
3、下列程序打印结果为()

import re 
str1 = "Python's features" 
str2 = re.match( r'(.*)on(.*?) .*', str1, re.M|re.I)
print str2.group(1)

答案:
Pyth
解析:
re模块实现正则的功能
re.match(正则表达式,要匹配的字符串,[匹配模式])
要匹配的字符串为str1 = “Python’s features”

正则表达式r’(.)on(.?) .*’
r表示后面的字符串是一个普通字符串(比如\n会译为\和n,而不是换行符)
()符号包住的数据为要提取的数据,通常与.group()函数连用。
.匹配单个任意字符
*匹配前一个字符出现0次或无限次
?匹配前一个字符出现0次或1次

(.)提取的数据为str1字符串中on左边的所有字符,即Pyth
(.
?)提取的数据为str1中on右边,空格前面,即’s

.group(0)输出的是匹配正则表达式整体结果
.group(1) 列出第一个括号匹配部分,.group(2) 列出第二个括号匹配部分
4、分析代码:

class Rect:
def __init__(self,width,height):
self.width = width
self.height = height
@property
def area(self):
return self.height* self.width
rect = Rect(10,20)
rect.area()

使用property会将方法转为属性,因此rect.area()应该改为rect.area。

a = 0
def fun():
a += 1
print(a)
fun()

当给作用域中的一个变量赋值时,Python 会自动的把它当做是当前作用域的局部变量,从而会隐藏外部作用域中的同名变量,因此a += 1会报错。

class Animal:
def __init__(self,color="白色"):
Animal.color = color
def get_color(self):
print("Animal的颜色为",Animal.color)
class Cat(Animal):
def __init__(self):
pass
cat = Cat()
cat.get_color()

子类若有定义__init__()函数时,将不会自动继承父类的构造函数,因此在调用父类的get_color()函数时,会出现Animal找不到属性color,修改时只需在子类的__init__()函数中添加语句:super().init()。

class Cat:
def __init__(self,color="白色"):
self.__color = color
cat = Cat("绿色")
print(cat._Cat__color)

尽管color属性为私有属性,但是在类外部使用时,仍可以通过实例名._类名__xxx来访问。
5、以下程序要求用户输入二进制数字0/1并显示之,请指出程序中代码第几行存在错误()

1.bit = input("Enter a binary digit:")
2.if bit = 0 or 1:
3.    print("your input is" ,bit)
4.else
5.    print("your input is invalid")

第2行语法错误,第4行else后缺少冒号。

SAP 财务BAPI_ACC_DOCUMENT_POST批导的税务tax 最近遇到了关于SAP财务凭证批导要bapi:BAPI_ACC_DOCUMENT_POST增加税的功能要求,查阅了一众文献发现都不尽如人意,所以想着自己写一个趟过的雷吧。 一般前台sap的凭证是有自动计算税码的勾选框的,但是bapi却并没有这个字段。 实际操作过程中1.可以定义一个税额的结构,参考bapiactx09 2.在会计分录上传如果需要增加税码的时候,譬如总账gl,需要对应tax_code 3.通过CALCULATE_TAX_FROM_GROSSAMOUNT 计算出税额和acct_k... 阅读详情

相关推荐

链家二手房信息爬取(内附完整代码)

链家二手房信息爬取1.简介2. 爬虫思路2.1 网页分析2.2 详情页分析2.3 不同页码的爬取2.4 解决链家只显示100页数据2.5 简单的反爬与进度条显示3. 总结 1.简介   最近帮同学爬取了链家在售二手房的信息,这是本人学习爬虫以来爬取数据最多的一次,就想着写个博客记录一下。   本次爬虫是利用python+jupyter notebook实现的,用到的第三方库如下: import pandas as pd # 数据存储 import requests # 网页内容获取 import re #

qq_46256922的博客 3万+

python(31): 调试库pdb使用

pdb有2种用法: 非侵入式方法(不用额外修改源代码,在命令行下直接运行就能调试) python3 -m pdb filename.py 非侵入式逐行可调试 侵入式方法(需要在被调试的代码中添加一行代码然后再正常运行代码) import pdb;pdb.set_trace() 侵入式: import pdb a = 1 b = 2 pdb.set_trace() print('jksgvdfkjsdhbhelp') 执行到pdb.set_trace()行是,可用调试命令进行调试: .

Python开发分享的博客 883

计算机组成原理实验:手把手教你用模拟程序实现中断机制(附完整代码)

本文通过一个计算机组成原理模拟实验,手把手教你从零实现一个可工作的中断系统。实验详细演示了如何配置中断控制器、编写主程序与中断服务程序,并观察中断响应、现场保护和恢复的全过程,深入解析了中断原理的核心机制。

471

如何使用 Python 内置调试器 pdb

在软件开发中,调试是一项不可或缺的技能,而 Python 提供了一个强大的内置工具——`pdb`(Python Debugger)。`pdb` 是 Python 自带的交互式调试器,允许开发者逐行检查代码的执行过程,查看变量值,并迅速定位问题。无论是处理简单脚本还是复杂项目,学会使用 `pdb` 都能显著提升调试效率。本文将从基础用法到进阶技巧,全面讲解如何使用 `pdb`。

1059

STM32智能头盔DIY全攻略:从心率监测到跌倒报警的完整实现

本文提供了基于STM32的智能头盔完整DIY实现方案,涵盖从心率监测到跌倒报警的核心功能。详细解析了系统设计、硬件搭建、软件算法及系统联调,重点介绍了STM32主控、MAX30102心率传感器和MPU6050姿态传感器的应用,并分享了跌倒检测算法与功耗优化等实战经验,为嵌入式开发与物联网创新项目提供全面指导。

sony5的博客 498

用Python爬取大连商品交易所期货实时行情:从入门到实战

python复制编辑# utils.py"豆粕": "M0","铁矿石": "I0","聚乙烯": "L0","玉米": "C0","聚丙烯": "PP0","棕榈油": "P0"本项目展示了:✅ 如何从新浪财经 API获取主力合约实时数据✅ 使用Python异步爬虫技术) 提升效率✅ 利用pandas和matplotlib进行结构化分析与可视化✅ 具备良好的扩展性,可对接金融、农业、能源等数据需求场景✅ 可作为期货量化策略数据源✅ 可嵌入自动化报告系统。

2201_76125261的博客 1247

写给程序员的Python教程笔记11——使用PDB进行调试

PDB是Python标准库自带的强大调试器,与其他Python调试器相比,PDB的主要优势在于,它是Python的一部分,PDB几乎可以在任何有Python的地方使用,包括嵌入Python语言的大型系统的专用环境,比如ESRI的ArcGIS地理信息系统。PDB与其他调试工具不同,不是一个单独的程序,而是一个模块,可以将其导入到任何程序中,使用set_trace()函数在程序执行的任何时刻都可启动调试器。在执行set_trace()之后,提示会从三箭头变成(pdb)——通过这个可以知道已经进入调试器。

machunyu的博客 1989

VSCode + QMT 量化交易完整解决方案!

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1327

python语法31[引用和拷贝]

    If an object’s value can be modified, the object is said to be mutable. If the value cannot be modified,the object is said to be immutable.   mutable 可变类型,例如 list,set,自定义类型(等价于C#中的引用类型);   immu...

weixin_34372728的博客 166

基于 Langchain 开发一个完整的支持多轮数据分析(直连 mysql 数据,多表综合分析 SQL 取数,数据分析,报表生成)ChatBI 系统(前后端完整实现源代码)

ChatBI系统开发摘要 本文介绍了基于Langchain的多轮数据分析ChatBI系统开发方案。该系统支持MySQL数据库连接,提供多表分析、SQL查询、数据分析和报表生成功能。系统采用前后端分离架构:前端使用React+Ant Design+ECharts实现交互界面;后端基于FastAPI搭建服务,集成Langchain处理自然语言到SQL的转换;核心技术栈还包括SQLAlchemy、Pandas和Matplotlib。 系统核心模块包括: 数据库连接层:使用SQLAlchemy管理MySQL连接 L

AI天才研究院 814

【DaVinci Developer专题】-41-APP SWC如何读取写入NVM Block数据

APP SWC Port如何Read读取/Write写入NVM Block数据; DaVinci Developer中的Calibration Parameter/Per-Instance Memory/Service Need如何配置。

「汽车电子助手」的博客 4468

使用Pdb调试Python

原文链接:https://segmentfault.com/a/1190000006628456 本文章为转载,纯属学习之用。 简单介绍 Python自带 Pdb库,使用 Pdb调试 Python程序还是很方便的。但是远程调试、多线程,Pdb是搞不定的 本文参考的相关文章如下: 《指针和字符串和字符串常量、用gdb来获...

急流勇进 7454

C/C++跳动的爱心(完整代码)

C语言实现跳动的爱心的完整代码。

AIGC 5842

# Python中的引用与直接赋值、浅拷贝和深拷贝

Python中的引用与浅拷贝和深拷贝 python中的引用 Python中不允许程序员选择传值还是传引用。函数参数传递采用的是“传对象引用”。简而言之,若参数是可变类型[字典、列表、集合] 即不能被哈希的对象,就能修改对象的原始值;若参数是不可变类型[数值、字符、元组]即能被哈希的对象,就不能修改对象原始值。 例:可变类型的引用 p1 = [1,2,3] def list_1(p): p = p+[1] print(p) print(id(p)) list_1(p1) print(p

david284的博客 207

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python中浅拷贝 vs 深拷贝

Python拷贝机制详解 本文系统介绍了Python中赋值、浅拷贝与深拷贝的区别及使用场景。赋值(b=a)不创建新对象;浅拷贝(如a.copy())仅复制最外层容器,嵌套对象仍共享引用;深拷贝(copy.deepcopy())递归复制所有子对象,实现完全隔离。通过示例演示了修改嵌套对象时不同拷贝方式的表现差异,并指出元组内可变对象、自引用结构等特殊情况的处理方式。文章还提供了常见数据结构的拷贝方法速查表,以及自定义类控制拷贝行为的实现方案。最后建议根据数据结构复杂度与性能需求合理选择拷贝方式,简单结构用浅拷

keyboard专栏 419

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python3 —— 列表的浅拷贝 与 深拷贝

列表在拷贝过程中需注意的小细节!!! # 原始列表 person = ['zhao', 'qian', 'sun', [1, 2, 3, 4], 'li'] print(person) # 赋值 copy1 = person print(copy1) import copy # 浅拷贝 copy2 = person.copy() print(copy2) copy3 = copy.cop...

Muzi_Water的博客 1270

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

python——copy模块

包括深拷贝和浅拷贝操作的模块。 首先要分清变量和对象的概念,python中的变量类似指针,指向各个对象。比如a=2,是有一个名为a的变量指向了2这个对象;x=[1,2,3]中变量x指向对象[1,2,3]。 然后,在python中,int、float、str、tuple和bool等都是不可变对象,list、set和dict是可变对象。可变对象可以原地修改,而不可变对象不能原地修改。 指向不可变对象的...

meet2001的博客 589

7 年 Python 的我,总结了这 90 条写 Python 程序的建议

本文于网络整理,版权归原作者所有 自己写 Python 也有四五年了,一直是用自己的“强迫症”在维持自己代码的质量。都有去看Google的Python代码规范,对这几年的工作经验,做个简单的笔记,如果你也在学pythpn,准备要学习python,希望这篇文章对你有用。 1. 首先 建议1、理解Pythonic概念—-详见Python中的《Python之禅》 建议2、编写Pythonic代码 (1)避免不规范代码,比如只用大小写区分变量、使用容易混淆的变量名、害怕过长变量名等。有时候长..

bigzql的博客 1万+

python sorted函数_Python基础找茬系列07--sorted与sort函数,你分清了吗?

一、基本语法1、sort()①sort()是list内置方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。②默认排序规则排序,数字、字符串按照ASCII,中文按照unicode从小到大排序x = [1,5,3]x.sort()print (x) # [1,3,5]③不改变x列表的前提下使用sort()x = [1, 5, 3]"""注意:y = x[:...

weixin_39640221的博客 336

人工智能 Python进阶编程 深浅拷贝总结

所以改变原有被复制对象不会对已经复制出来的新对象产生影响。只有一种形式,copy模块中的deepcopy函数。浅拷贝之所以称为浅拷贝,是它仅仅只拷贝了一层,拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。注:不可变类型进行浅拷贝不会给拷贝的对象开辟新的内存空间,而只是拷贝了这个对象的引用。id为id()的返回值(id()函数用于获取对象的内存地址)

Blog of pengxiaoxing 691

python面向对象深层拷贝和浅层拷贝的区别

重点:搞清这两幅图和代码,即可分清。可关联在函数传递参数时。(是传值还是传引用的区别) 浅拷贝:在复制过程中,只复制一层变量。不会复制深层变量绑定的对象。(对象地址不变,引用的是同一个列表对象) l1=[3,[66,55,44],(7,8,9)] l2=list(l1) l1.append(100) l1[1].remove(55) print('l1:',l1) pri...

weixin_38881822的博客 486

Python学习笔记(十)深浅拷贝与三大器

Python基础学习笔记,记录了 Python 中迭代器、生成器、装饰器的内容,还有深拷贝和浅拷贝的问题。

longrootchen的博客 677

深浅copy详解

深浅copy 前言:深浅copy会在很多面试题中都会问到,所以搞懂它们之间的区别是很有必要性的 本篇中的所有图解只是帮助大家进行理解 1. 可变与不可变数据类型 可变数据类型:列表,字典,集合 不可变数据类型:字符串,元组,数字 2. 浅拷贝 先拿图说话:图中的123123等数值假设为内存地址 在图中我们可以明显的看到浅拷贝过后,两个列表l1和l2的引用还是指的是同一个值,所以当我们更改这两个列表的任何可变数据类型时,另一个列表的值一定会跟着变化。 注意:这里我强调了更改的值必须是可变数据类型时,另一

weixin_46146855的博客 698

没有Python教程学习Python福利,90 条写 Python 程序的建议

如果你在学pythpn,而没有Python教程;如果你准备要学习python,而又没有Python老师带你,希望这90 条写 Python 程序的建议对你有帮助。

Python栈_基的博客 807

python包管理工具yolk_改善Python程序的91个建议

自己写Python也有四五年了,一直是用自己的“强迫症”在维持自己代码的质量,除了Google的Python代码规范外,从来没有读过类似的书籍。偶然的机会看到这么一本书,读完之后觉得还不错,所以做个简单的笔记。有想学习类似知识的朋友,又懒得去读完整本书籍,可以参考一下。1:引论建议1、理解Pythonic概念—-详见Python中的《Python之禅》建议2、编写Pythonic代码(1)避免不规...

weixin_39689347的博客 145

Python 之 改善 Python 程序 的91个建议

目录 1:引论 2:编程惯用法 3:基础用法 4:库 5:设计模式 6:内部机制 7:使用工具辅助项目开发 8:性能剖析与优化 1:引论 建议1、理解Pythonic概念—-详见Python中的《Python之禅》 建议2、编写Pythonic代码 避免不规范代码,比如只用大小写区分变量、使用容易混淆的变量名、害怕过长变量名等。有时候长的变量名会使代码更加具有可读性。 ...

Nick.Peng's Blogs 972
上一篇: 【每日一题1121】python校招笔试题、面试题
下一篇: 【热门】B站千万大V居然抄袭代码?何同学移源顶针,鉴定为:我测试你的码
Next2you
博客等级 码龄7年 1238粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Next2you

你真帅!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值