测试开发面试题目(五)——深拷贝、浅拷贝、赋值

本文详细介绍了Python中的“==”和“is”的区别,探讨了Python的保留字、作用域、编译文件扩展名。此外,还深入讨论了线程与进程的概念,以及多进程和多线程的优缺点。最后,文章阐述了深拷贝、浅拷贝和直接赋值在处理可变对象时的不同行为,帮助理解拷贝的层次和引用关系。
摘要由CSDN通过智能技术生成

一、“==”和“is”之间有什么区别?

python中一般使用**"”比较两个对象的值**。 **"ab"应解释为“ a的值是否等于b的值”**。 在上述所有示例中,a 的值始终等于 b 的值(即使对于空列表示例也是如此)。 因此,“ a == b”始终为真。
python可以使用 id 函数获得对象的标识。 这个身份在整个时间内对于此对象都是唯一且恒定的。此标识在整个时间内对该对象是唯一且不变的。你可以把它看作是这个对象的地址。如果两个对象具有相同的标识,则它们的值也必须相同。
运算符“ is ”是比较两个对象的标识是否相同。“a is b”的意思是“a的身份与b的身份相同”。

a = 5 
>>> b = 5 
>>> a == b 
True 
>>> a is b 
True 
>>> a = 1000 
>>> b = 1000 
>>> a == b 
True 
>>> a is b 
False 

第一个和第二个示例中的结果不同。 原因是Python存储了一个介于-5到256之间的整数的数组列表,每个整数具有固定的标识。当我们在此范围内分配整数变量时,Python会将此变量的标识分配为数组列表内整数的整数。 结果,对于第一个示例,由于a和b的标识都是从数组列表中获得的,因此它们的标识当然是相同的,因此 “a is b” 为True。一旦该变量的值超出该范围,由于 Python 内部没有具有该值的对象,因此Python将为此变量创建一个新的标识并将该值分配给该变量。 如前所述,身份对于每个创建都是唯一的,因此,即使两个变量的值相同,其身份也永远不会相等。 这就是为什么“a is b”在第二个例子结果为False。
对于空列表:Python 不存储“空列表”对象,因此 Python 创建了一个新对象并分配了“空列表”值。无论两个列表为空还是元素相同,结果都是相同的。

>>> a = [1,10,100,1000] 
>>> b = [1,10,100,1000] 
>>> a == b  
True 
>>> a is b 
False 
>>> id(a) 
12578024 
>>> id(b) 
12578056 

二、Python 33个保留字

保留字为关键字,是被编程语言内部定义并保留使用的标识符。这些保留字不能用作常数或变数,或任何其他标识符名称。
and 用于表达式运算,逻辑与操作。
as 用于类型转换
assert 断言,用于判断变量或条件表达式的值是否为真
break 中断循环语句的执行
class 用于定义类
continue 继续执行下一次循环
def 用于定义函数或方法
del 删除变量或者序列的值
elif 条件语句 与if else 结合使用
else 条件语句 条件语句,与if,elif结合使用。也可以用于异常和循环使用
except 包括捕获异常后的操作代码,与tryfinally结合使用
exec 用于执行python语句
for 循环语句
finally 用于异常语句,出现异常后,始终要执行finally包含的代码块。与try,except结合使用
from 用于导入模块,与import结合使用
global 定义全局变量
if 条件语句,与else,elif结合使用
import 用于导入模块,与from 结合使用
in 判断变量是否存在序列中
is 判断变量是否为某个类的实例
lambda 定义匿名函数
not 用于表达式运算,逻辑非操作
or 用于表达式运算,逻辑或操作
pass 空的类,函数,方法的占位符
print 打印语句
raise 异常抛出操作
return 用于从函数返回计算结果
try 包含可能会出现异常的语句,与except,finally结合使用
while 循环语句
with 简化Python的语句
yield 用于从函数依次返回值

三、python作用域

Python中的作用域共有3种,分别是:
局部作用域:这是在一个函数内部定义的变量;
闭包作用域:这是在一个函数外部另一个函数内部定义的变量;
全局作用域:在所有函数外定义的变量。

四、编译文件后的扩展名

C语言

源文件后缀名是.c,编译生成的文件后缀名是.obj,连接后可执行文件的后缀名是.exe。

java

源文件扩展名是“.java”;用javac进行编译,生成后缀名为“.class”的字节码文件,保存在和源程序一致的目录下,如源代码有错误,会按行指出错误,修改错误后重新进行编译,直至生成“.class”字节码文件为止。

五、线程与进程

进程:

当一个程序进入内存运行时,即变成一个进程。进程时处于运行过程中的程序。进程是操作系统进行资源分配和调度的一个独立单位。

线程:

线程是操作系统能够进行运算调度的最小单位,它被包含在进程中,是进程中的实际运作单位。线程也被称为轻量级进程。线程在进程中是独立、并发的执行流。

进程和线程的区别:

一个进程可以有很多线程,每条线程并行执行不同的任务。
同一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值