【面试题目来着微信公众号:GitChat】
操作类题目
- Python 交换两个变量的值
a,b = b,a
- 在读文件操作的时候会使用 read、readline 或者 readlines,简述它们各自的作用
【read】一次读取文件所有的内容,返回str。如果给一个int参数n,则读n个字节的内容。
【readline 】读取一行内容,返回str,指针+1;如果给一个int参数n,则读n个字节的内容,最多读一行。
【readlines】一次读取文件所有的内容,返回list,每一行为一个元素。
如果给一个int参数n,则读n个字节的内容。 - json 序列化时,可以处理的数据类型有哪些?如何定制支持 datetime 类型?
【json序列化可以处理的数据类型】数字,字符串,元组,列表,字典,布尔值,None(注意集合是不支持的数据类型)
【支持datetime】
通过查看json.dumps()方法的函数注释,发现该方法有两个参数cls,defualt可以自定义处理数据类型
# 在json的__init__.py文件中,能看到以下自定义数据类型的
Specializing JSON object encoding::
>>> import json
>>> def encode_complex(obj):
... if isinstance(obj, complex):
... return [obj.real, obj.imag]
... raise TypeError(f'Object of type {obj.__class__.__name__} '
... f'is not JSON serializable')
...
>>> json.dumps(2 + 1j, default=encode_complex)
'[2.0, 1.0]'
>>> json.JSONEncoder(default=encode_complex).encode(2 + 1j)
'[2.0, 1.0]'
>>> ''.join(json.JSONEncoder(default=encode_complex).iterencode(2 + 1j))
'[2.0, 1.0]'
# 根据这个demo,我们自定义一个encode_datetime方法,处理datetime.datetime()类
def test27():
a = datetime.datetime.now()
print("%s %s" % (a, type(a)))
print(json.dumps(a, default=encode_datetime))
pass
def encode_datetime(obj):
if isinstance(obj, datetime.datetime):
return obj.strftime('%Y-%m-%