python面试题(面试重点)

本文主要介绍了Python编程语言的面试重点,涵盖了语言特性、数据类型、操作符优先级、逻辑运算、字符串处理、迭代器、装饰器、文件读写、并发模型等多个方面。通过实例解析了Python的常用语法和编程技巧,如逻辑运算短路、布尔值的特殊情况、复数、数据结构转换、列表推导式、匿名函数(lambda)、递归限制、生成器、迭代器和装饰器的应用等。此外,还涉及到了与其他编程语言的对比,如Java、C、C++、Go等,并讲解了Python2与Python3的主要差异。文章提供了多道编程题目,帮助读者深入理解Python的用法和原理。
摘要由CSDN通过智能技术生成

1.简述列举了解的编程语言及语言间的区别?

编译型语言:一次性全部编译成二进制码,再去运行

解释型语言:编译一句,运行一句

一、python 解释型 简洁高效,容易上手

二、 java 混合型 (JVM、JIT编译器)学习成本,开发周期慢,web方向偏重

三、 c 编译型 属于底层语言,只有面向过程,没有面向对象

四、c++ 编译型 属于底层语言,既有面向过程,也有面向对象

五、go 编译型 应用在区块链,高并发高可用,游戏方向

需要代码的同学可以添加群624440745

2.列举Python2和Python3的区别?

python2:

一、print “123”

二、range 返回 list

三、默认编码 --ascii码(无中文)

四、两种类 经典类 和新式类

class Car() : pass 经典类(多继承当中搜索原则以深度优先)

class Car(object) : pass 新式类(多继承当中搜索原则以广度优先)

类.mro() => 继承顺序列表

五、除法:结果是整型

六、int,long(长整型)

七、raw_input => 等价于 python3 input,如光写input 就得输入数字

python3:

一、print()

二、range 返回的是可迭代对象

三、默认编码 --utf-8

四、都是新式类

五、除法:结果是小数(无论整数相除还是浮点数相除)

六、int

七、input

3.看代码写结果

v1 = 1 or 2 输出: 1
v2 = 3 and 7 or 9 and 0 输出: 7

逻辑运算符优先级 () > not > and > or

逻辑短路

and 全真则真,一假则假
or 一真则真,全假则假

True or 表达式 => True (单个运算符和多个运算符的情况,都可以直接判定结果)
False and 表达式 => False(单个运算符的时候可以)

布尔值为假的十种情况: bool() => False

0,0.0,False,0j,’’,[],(),set(),{},None

v1 = 1 or 2
print(v1) # 1

v2 = 3 and 7 or 9 and 0

v2 = 7 or 0

v2 = 7

print(v2)

“”"
数据类型:
Number(int , float , complex , bool)
容器:str list tuple set dict

复数 : 用在数据分析,人工智能中

complexvar = 3 + 4j
3 : 实数
4j: 虚数
j: 如果有一个数,他的平方等于-1 ,那么这个数就是j,科学家认为有,表达高精度类型
“”"

4.比较以下值有什么不同?

v1 = [1,2,3] 数字
v2 = [(1),(2),(3)] 数字 括号写些什么类型数据,就是什么数据
v3 = [(1,),(2,),(3,)] 元组


逗号才是区分是否是元组的标识符

v1 = [1,2,3] # 列表[int , int , int]
v2 = [(89),(2.12),(“abc”)] # [int , float , str]
v3 = [(1,),(2,),(3,)] # [tuple,tuple,tuple,tuple]
res = () # 表达空元组

5.用一行代码实现数值交换。

python 特有

a = 1
b = 2
a,b = b,a

通用

tmp = a
a = b
b = tmp

6.Python中单引号、双引号、三引号的区别?

单双引号没有区别,三引号可以支持跨行
在互相嵌套时需注意:里外不能使用相同的引号

7.is和==的区别

is 是判断两边内存地址是否相同
== 判断两边的值是否相同

8.python里如何实现tuple和list的转化?

int float complex bool str list tuple set dict

list(数据)
tuple(数据)

9.如何实现字符串 name='老男孩’的反转?

name[start🔚step] 语法

name[::-1]

10.两个set如何获取交集、并集、差集?

交集 &
intersection
差集 -
difference
并集 |
union
对称差集 ^
symmetric_difference

11.那些情况下, y != x - (x-y)会成立?

“”"
非空集合且不为子父关系的两个集合
“”"
y != x-(x-y)
x = {“a”,“b”,“c”}
y = {“b”,“d”}

if y != x-(x-y):
print(“ok”)

12.Python中如何拷贝一个对象?

import copy

针对于列表的拷贝,还可以使用[:] , [::],浅拷贝的一种方式

lst1 = [1,2,3]
lst2 = lst1[:]
lst1.append(4)
print(lst2)

13.简述 赋值、浅拷贝、深拷贝的区别?

#赋值 : 将变量和值在内存中形成映射指向关系
#浅拷贝 : 只拷贝第一级里所有的元素 copy.copy
#深拷贝 : 为所有层级的元素都单独开辟新空间 copy.deepcopy() (地址:原不可变数据只是暂时的指向,可变的数据独立开辟新空间)
“”"
可变数据: list set dict
不可变数据: int float bool complex str tuple
“”"

import copy
lst1 = [1,2,3,[4,5,6]]
lst2 = copy.deepcopy(lst1)
lst1[0] = 100
print(lst1)
print(lst2)

print(id(ls

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值