python面试中较常问及的知识点梳理---操作部分

本文梳理了Python面试中常见的操作题目,包括变量交换、文件读取、json序列化、日期处理、函数闭包、文件合并、数据库操作等方面的知识点,并提供了详细解答,帮助考生巩固基础技能。
摘要由CSDN通过智能技术生成

• 操作类题目
o 1. Python 交换两个变量的值
o 2. 在读文件操作的时候会使用 read、readline 或者 readlines,简述它们各自的作用
o 3. json 序列化时,可以处理的数据类型有哪些?如何定制支持 datetime 类型?
o 4. json 序列化时,默认遇到中文会转换成 unicode,如果想要保留中文怎么办?
o 5. 有两个磁盘文件 A 和 B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件 C 中。
o 6. 如果当前的日期为 20190530,要求写一个函数输出 N 天后的日期,(比如 N 为 2,则输出 20190601)。
o 7. 写一个函数,接收整数参数 n,返回一个函数,函数的功能是把函数的参数和 n 相乘并把结果返回。
o 8. 下面代码会存在什么问题,如何改进?

def strappend(num):
	str='first'
	for i in range(num):
    	str+=str(i)
	return str

o 9. 一行代码输出 1-100 之间的所有偶数。
o 10. with 语句的作用,写一段代码?
o 11. Python 字典和 json 字符串相互转化方法
o 12. 请写一个 Python 逻辑,计算一个文件中的大写字母数量
o 13. 请写一段 Python连接Mongo数据库,然后的查询代码。
o 14.说一说Redis的基本类型
o 15. 请写一段 Python连接Redis数据库的代码。
o 16. 请写一段 Python连接Mysql数据库的代码。
o 17.了解Redis的事务么
o 18.了解数据库的三范式么?
o 19.了解分布式锁么
o 20.用 Python 实现一个 Reids 的分布式锁的功能
o 21.写一段 Python 使用 mongo 数据库创建索引的代码


1.Python 交换两个变量的值
答:
在 Python 中交换两个对象的值通过下面的方式即可

a , b = b ,a 

但是需要强调的是这并不是元组解包,通过 dis 模块可以发现,这是交换操作的字节码是 ROT_TWO,意思是在栈的顶端做两个值的互换操作。

2.在读文件操作的时候会使用 read、readline 或者 readlines,简述它们各自的作用
答:
1).read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。
2)如果希望一行一行的输出那么就可以使用 readline(),该方法会把文件的内容加载到内存
3)对于对于大文件的读取操作来说非常的消耗内存资源,此时就可以通过 readlines 方法,将文件的句柄生成一个生产器,然后去读就可以了。

3.json 序列化时,可以处理的数据类型有哪些?如何定制支持 datetime 类型?
答:
可以处理的数据类型是 str、int、list、tuple、dict、bool、None, 因为 datetime 类不支持 json 序列化,所以我们对它进行拓展。

# 自定义时间序列化
import json
from datetime import datetime, date

# JSONEncoder 不知道怎么去把这个数据转换成 json 字符串的时候
# ,它就会去调 default()函数,所以都是重写这个函数来处理它本身不支持的数据类型,
# default()函数默#认是直接抛异常的。
class DateToJson(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            return obj.strftime('%Y-%m-%d %H:%M:%S')
        elif isinstance(obj, date):
            return obj.strftime('%Y-%m-%d')
        else:
            return json.JSONEncoder.default(self, obj)


d = {'name': 'cxa', 'data': datetime.now()}
print(json.dumps(d, cls=DateToJson))

4.json 序列化时,默认遇到中文会转换成 unicode,如果想要保留中文怎么办?
答:
可以通过 json.dumps 的 ensure_ascii 参数解决,代码示例如下:

import json
a=json.dumps({"name":"张三"},ensure_ascii=False)
print(a)

5.有两个磁盘文件 A 和 B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件 C 中。
答:

#文件 A.txt 内容为 ASDCF
#文件 B.txt 内容为 EFGGTG
with open("A.txt") as f1:
    f1_txt = f1.readline()
with open("B.txt") as f2:
    f2_txt = f2.readline()
f3_txt = f1_txt + f2_txt

f3_list = sorted(f3_txt)

with open("C.txt", "a+") as f:
     f.write("".join(f3_list))

输出的文件 C 的内容为 AC

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值