python面试常考题

  1. is 和== 的区别
  2. 赋值、浅拷贝、深拷贝
  3. 可变对象与不可变对象
  4. python 2 与python 3 的几个区别( 任意说5个)
  5. 列表中 +,extend, append的区别
  6. 列出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 23/2=1
python 33/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

发布了46 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43826596/article/details/105022968