python基础面试(持续更新中)

用python这么久其实对于基础python知识一直没有一个系统的理解,需要花时间重构自己的认识体系了。

以下皆为整理网上的内容——

Python和其他语言的区别

Python属于解释型语言,当程序运行时,是一行一行的解释,并运行,所以调式代码很方便,开发效率高,有着非常强大的第三方库
特点:
语法简洁优美,功能强大,标准库与第三方库都非常强大,而且应用领域也非常广,可移植性,可扩展性,可嵌入性
缺点:
  运行速度慢

  • 解释型:就是边解释边执行
    • python/php
  • 编译型:编译后再执行
    • c/java/c#

与其他语言比较:
(1)与java相比:在很多方面,Python比Java要简单,比如java中所有变量必须声明才能使用,而Python不需要声明,用少量的代码构建出很多功能;(高效的高级数据结构)
(2)与php相比:python标准包直接提供了工具,并且相对于PHP代码更易于维护;
(3)Python与c相比:Python 和 C Python这门语言是由C开发而来
  对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.
  对于速度:Python的运行速度相较与C更慢了

Python3和Python2的区别?

  • 打印时,py2需要可以不需要加括号,py3 需要
    print语句被python3废弃,只能使用print函数;exec语句被python3废弃,统一使用exec函数
  • 输出中文的区别
    python2:要输出中文 需加 # -- encoding:utf-8 --
    Python3 : 直接搞
  • input不同
    python2 :raw_input
    python3 :input 统一使用input函数
  • long整数类型被Python3废弃,统一使用int
  • 迭代器iterator的next()函数被Python3废弃,统一使用next(iterator)
  • 异常StandardError 被Python3废弃,统一使用Exception
  • 字典变量的has_key函数被Python废弃,统一使用in关键词
  • file函数被Python3废弃,统一使用open来处理文件,可以通过io.IOBase检查文件类型

常用数据类型的(字符串、列表、元组、字典)常用的5个方法?

字符串:
字符串用单引号(’)或双引号(")括起来,不可变

  1. find通过元素找索引,可切片,找不到返回-1
  2. index,找不到报错。
  3. split 由字符串分割成列表,默认按空格。
  4. captalize 首字母大写,其他字母小写。
  5. upper 全大写。
  6. lower 全小写。
  7. title,每个单词的首字母大写。
  8. startswith 判断以什么为开头,可以切片,整体概念。
  9. endswith 判断以什么为结尾,可以切片,整体概念。
  10. format格式化输出
  11. strip 默认去掉两侧空格,有条件,
  12. lstrip,rstrip
  13. center 居中,默认空格。
  14. count查找元素的个数,可以切片,若没有返回0
  15. expandtabs 将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个
  16. replace(old,new,次数)
    注意
    isdigit 字符串由字母或数字组成 isalpha, 字符串只由字母组成
    List item,isalnum 字符串只由数字组成
    swapcase 大小写翻转
    for i in 可迭代对象。

字典:
1无序(不能索引)2:数据关联性强3:键值对,键值对。唯一一个映射数据类型。
#字典的键必须是可哈希的 不可变类型。
在同一个字典中,键(key)必须是唯一的。
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取

  1. key: 输出所有的键
  2. clear:清空
  3. dic:删除的键如果没有则报错
  4. pop:键值对删,有返回,没有原来的键会报错(自行设置返回键就不会报错)
  5. popitem:随机删键值对
  6. del:删除的键如果没有则报错,
  7. 改 update
  8. 查 用get时。不会报错# 没有可以返回设定的返回值

注意:
字典是一种映射类型,它的元素是键值对。
字典的关键字必须为不可变类型,且不能重复。
创建空字典使用 { }。

列表:
索引,切片,加,乘,检查成员。
增加:有三种,
append:在后面添加。
Insert按照索引添加,
expend:迭代着添加。
list.extend(seq) - 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
pop 删除 (pop 有返回值)
remove 可以按照元素去删
clear 清空列表
del 1、可以按照索引去删除 2、切片 3、步长(隔着删)
改 1、索引 2、切片:先删除,再迭代着添加
list.count(obj) - 统计某个元素在列表中出现的次数
list.index(obj) - 从列表中找出某个值第一个匹配项的索引位置
list.reverse() - 反向列表中元素
list.sort([func]) - 对原列表进行排序
注意:
1、List写在方括号之间,元素用逗号隔开。
2、和字符串一样,list可以被索引和切片。
3、List可以使用+操作符进行拼接。
4、List中的元素是可以改变的。

元组:
()元组的元素不能修改
1、cmp(tuple1, tuple2):比较两个元组元素。
2、len(tuple):计算元组元素个数。
3、max(tuple):返回元组中元素最大值。
4、min(tuple):返回元组中元素最小值。
5、tuple(seq):将列表转换为元组。
注意
1、与字符串不一样,元组的元素不能修改。
2、元组也可以被索引和切片,方法一样。
3、注意构造包含0或1个元素的元组的特殊语法规则。
4、元组也可以使用+操作符进行拼接。

Set(集合)
集合(set)是一个无序不重复元素的序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

—8.13—

数据类型转换

*int(x,base=10)x字符串或数字,base进制数,默认十进制,浮点转为整数
*float()整数转换为浮点型
*complex(1,2) 转换为复数
*str(10)将对象转换为字符串
*repe()将对象转换为表达式字符串
*repr(dict)将对象转换为表达式字符串
*eval(str)用来计算在字符串中有效的python表达式,返回一个对象
*tuple(listi)将列表转化为元组
*list()将元组转换为列表
*set转换集合

Python的深浅拷贝

浅拷贝只是增加了一个指针指向一个存在的地址,
而深拷贝是增加一个指针并且开辟了新的内存,这个增加的指针指向这个新的内存,
采用浅拷贝的情况,释放内存,会释放同一内存,深拷贝就不会出现释放同一内存的错误
一层的情况:

import copy
#浅拷贝
li1 = [1, 2, 3]
li2 = li1.copy()
li1.append(4)
print(li1, li2)  # [1, 2, 3, 4] [1, 2, 3]
 
# 深拷贝
li1 = [1, 2, 3]
li2 = copy.deepcopy(li1)
li1.append(4)
print(li1, li2)  # [1, 2, 3, 4] [1, 2, 3]
多层的情况:
import copy
 
# 浅拷贝 指向共有的地址
li1 = [1, 2, 3,[4,5],6]
li2 = li1.copy()
li1[3].append(7)
print(li1, li2)  # [1, 2, 3, [4, 5, 7], 6] [1, 2, 3, [4, 5, 7], 6]
 
# 深拷贝 重指向
li1 = [1, 2, 3,[4,5],6]
li2 = copy.deepcopy(li1)
li1[3].append(7)
print(li1, li2)  # [1, 2, 3, [4, 5, 7], 6] [1, 2, 3, [4, 5], 6]

Python垃圾回收机制

引用计数
标记清除
分代回收

Python的可变类型和不可变类型

可变数据类型:列表、字典、可变集合
不可变数据类型:数字、字符串、元组、不可变集合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值