- is 和== 的区别
- 赋值、浅拷贝、深拷贝
- 可变对象与不可变对象
- python 2 与python 3 的几个区别( 任意说5个)
- 列表中 +,extend, append的区别
- 列出5个python 常用的标准库
1、 is 和== 的区别
is 是检查两个对象是否指向同一个内存,其实就是检查id(a)==id(b)
==是判断两个对象的值是否相等。
a=[1,2,3,4]
b=[1,2,3,4]
print(a==b)
print(a is b)
True
False
因为 a,b 指向的内存地址不一样,所以a is b 输出False
2、 赋值=、浅拷贝、深拷贝的区别
b=a # (1)赋值 就是a,b 指向同一个对象
c=copy.copy(a) #(2) 浅拷贝 只拷贝父对象,不拷贝子对象
d=copy.deepcopy(a) #(3)深拷贝 拷贝父对象和子对象
(1)赋值:就是对对象的引用,a 与b指向同一对象,一个变动,另外一个也跟着变,是双向影响的
a=[1,2,3,4,["d","f"]]
b=a
b.append(5)#换成a.append(5),是一样的
print(a)
print(b)
输出
[1, 2, 3, 4, ['d', 'f'], 5]
[1, 2, 3, 4, ['d', 'f'], 5]
(2)浅拷贝:b=a.copy() 只拷贝父对象,不拷贝子对象,a,b 指向同一子对象,相当于父对象是独立的,分别独立修改不相互影响
a=[1,2,3,4,["d","f"]]
b=a.copy()
a.append(5)#修改父对象
a[4].append("e")#修改子对象
print(a)
print(b)
输出
[1, 2, 3, 4, ['d', 'f', 'e'], 5]
[1, 2, 3, 4, ['d', 'f', 'e']]#子对象受影响,父对象不受影响
(3)深拷贝:b=copy.deepcopy(a), a和b两者是完全独立的
import copy
a=[1,2,3,4,["d","f"]]
b=copy.deepcopy(a)
a.append(5)
a[4].append("e")
print(a)
print(b)
输出
[1, 2, 3, 4, ['d', 'f', 'e'], 5]
[1, 2, 3, 4, ['d', 'f']]# 完全独立,不受影响
3、 可变对象与不可变对象
可变对象:list ,dic,set
不可变对象: str、tuple、float、int
比如使用“+” 对字符串进行拼接时
a="hello"
print(id(a))
a=a+" world"
print(id(a))#重新生成了一个新的对象
输出拼接前后的id 内存地址
4489484080
4490118704
4、 字符串拼接 + 与 join
str+=‘字符串’ : 耗时耗力,因为每次都会开辟新的空间(字符串不可变)
join() : 利用列表可变的性质,省时省力,性价比更高,方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
join 的用法 str.join(list), 用指定的str 将list 连接起来
a="hello"
b=list(a)
print(b)
print("+".join(b))
输出
['h', 'e', 'l', 'l', 'o']
h+e+l+l+o
def str_add(num):
string="hello"
for i in range(num):
string+="x"
print(string)
return string
def str_join(num):
string="hello"
list_h=list(string)#将字符串转换为列表
for i in range(num):
list_h.append("x")
return "".join(list_h)#将列表中的所有元素join起来
3、 python2 与python 3 的几个区别
(1)a=range(10) python 2 输出列表,python3 输出迭代器,节约内存
a=range(10)
print(a)
#python 3输出迭代器
range(0,10)
#python 2 输出列表
[0,1,2,3,4,5,6,7,8,9]
(2)print 用法不同
#python3 print()做为一个方法,**要加括号**
print("hello world")
#python print 是一个类
print "hello world"
(3) 除法运算 /
python 3 中 / 表示真除, %取余, //取整
python 2 中
3/2=1
python 3 中
3/2=1.5
3//2=1
(4)键盘录入一个字符串时
#python 2
row_input()
#python 3
input()
5、 list 中 +、extend、append 的区别
+号和extend 的功能一样,可以将两个列表合并
append()只是新加入一个元素
a=[1,2,3]
b=[1,2,3]
c=[4,5,6]
print(a+b)
a.extend(b)
print(a)
b.append(c)
print(b)
输出
[1, 2, 3, 1, 2, 3]#+ 输出
[1, 2, 3, 1, 2, 3]#extend 输出
[1, 2, 3, [4, 5, 6]]#append 输出
6、 列出python中常用的标准库
import os
import sys
import shutil