python面试题总结(7)--操作类

本文总结了Python面试中的常见问题,包括交换变量值、文件读取操作、json序列化处理、日期运算、闭包函数等,并给出了详细解答和示例代码,帮助读者深入理解Python操作。
摘要由CSDN通过智能技术生成

1. Python 交换两个变量的值

答:在 Python 中交换两个对象的值通过下面的方式即可
a , b = b ,a
但是需要强调的是这并不是元组解包,通过 dis 模块可以发现,这是交换操作的字节码是 ROT_TWO,意思是在栈的顶端做两个值的互换操作。

2. 在读文件操作的时候会使用 read、readline 或者 readlines,简述它们各自的作用

答:.read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果希望一行一行的输出那么就可以使用 readline(),该方法会把文件的内容加载到内存,所以对于大文件的读取操作来说非常的消耗内存资源,此时就可以通过 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')
        elsereturn 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)
可以参考文献:json 中的ensure_ascii=False

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

答:

#文件 A.txt 内容为 ASDCF
#文件 B.txt 内容为 EFGGTG
with 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值