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')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)
可以参考文献:json 中的ensure_ascii=False

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_txtf3_list = sorted(f3_txt)with open("C.txt", "a+") as f:f.write("".join(f3_list))

输出的文件 C 的内容为 ACDEFFGGGST

6. 如果当前的日期为 20190530,要求写一个函数输出 N 天后的日期,(比如 N 为 2,则输出 20190601)。

答:这个题目考察的是 datetime 里的 timedelta 方法的使用,参数可选、默认值都为 0:datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) 通过这个参数可以指定不同的日期类型进行加减操作,这里我们需要改的是 days,代码如下

import datetimedef datetime_operate(n: int):now = datetime.datetime.now()  # 获取当前时间_new_date = now + datetime.timedelta(days=n)  # 获取指定天数后的新日期new_date = _new_date.strftime("%Y%m%d")  # 转换为指定的输出格式return new_dateif __name__ == '__main__':print(datetime_operate(4))

参考文献:Python timedelta模块 时间增减用法
参考二

7. 写一个函数,接收整数参数 n,返回一个函数,函数的功能是把函数的参数和 n 相乘并把结果返回。

答:这个题目考查了闭包的使用。闭包请参考:python中的闭包
伪代码示例如下:

def 外层函数(参数):def 内层函数():print("内层函数执行", 参数)return 内层函数内层函数的引用 = 外层函数("传入参数")
内层函数的引用()

代码示例如下,返回函数之类型是函数对象。

def mul_operate(num):def g(val):return num * valreturn gm = mul_operate(8)
print(m(5))

返回值为:40

8. 下面代码会存在什么问题,如何改进?

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

答: 首先不应该使用 Python 的内置函数 str 作为变量名,将其改为 s,另外在Python中str 是个不可变对象,每次迭代都会生成新的存储空间,num 越大,创建的 str 对象就会越多,内存消耗越大。
使用 yield 改成生成器即可, 还有一点就是命名规范的位置,函数名添加_分割比较好,完整的代码如下:

def str_append(num):s = 'first'for i in range(num):s += str(i)yield sif __name__ == '__main__':for i in str_append(3):print(i)

输出结果:

first0
first01
first012

9. 一行代码输出 1-100 之间的所有偶数。

答:可以通过列表生成式,然后使用与操作如果如 1 与之后结果为 0 则表明为偶数,等于 1 则为奇数。

方法1

print([i for i in range(1, 101) if i & 0x1 == 0])

方法2:测试发现方法二效率更高

print(list(range(2, 101, 2)))

10. with 语句的作用

with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等。
Python之with语法原理

#一般访问文件资源时我们会这样处理:
f = open('c:\test.txt', 'r')
data = f.read()
f.close()

这样写没有错,但是容易犯两个毛病:

  1. 如果在读写时出现异常而忘了异常处理。
  2. 忘了关闭文件句柄
#以下的加强版本的写法:f = open('c:\test.txt', 'r')
try:data = f.read()
finally:f.close()

以上的写法就可以避免因读取文件时异常的发生而没有关闭问题的处理了。代码长了一些。但使用 with 有更优雅的写法:

with open(r'c:\test.txt', 'r') as f:data = f.read()

11. Python 字典和 json 字符串相互转化方法

答:

在 Python 中使用 dumps 方法 将 dict 对象转为 Json 对象,使用 loads 方法可以将 Json 对象转为 dict 对象。

import jsondic = {'a': 123, 'b': "456", 'c': "liming"}
# dumps:字典对象转换成json对象
json_str = json.dumps(dic)
print(json_str)
# loads:json对象转换成字典对象
dic2 = json.loads(json_str)
print(dic2)

输出结果:

{"a": 123, "b": "456", "c": "liming"}
{'a': 123, 'b': '456', 'c': 'liming'}

我们再来看一个特殊的例子

import jsondic = {'a':123, 'b':"456", 'c':"liming"}
# 转换成json格式
dic_ = str(dic).replace("'", "\"")
print(dic_)
# loads:json对象转换成字典对象
dic_str = json.loads(dic_)
print(dic_str)

输出结果:

{'a': 123, 'b': '456', 'c': 'liming'}

首先 json.loads(jsonstr) 这里面的参数只能是 jsonstr 格式的字符串。
当我们使用 str 将字典 dic 转化为字符串以后,得到的结果为:"{‘a’: 123, ‘b’: ‘456’, ‘c’: ‘liming’}"。
如果直接使用 json.loads(str(dic)) 你会发现出现错误,原因是单引号的字符串不符合Json的标准格式。
所以再次使用了 replace("’", “”")从而得到字典,其实这个例子主要目的是告诉大家 Json 的标准格式是不支持单引号型字符串的,否则会出现以下错误:

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

python面试题总结(7)--操作类相关推荐

  1. python面试题~反射,元类,单例

    1 什么是反射?以及应用场景? test.py def f1():print('f1') def f2():print('f2') def f3():print('f3') def f4():prin ...

  2. python,一个简单的sqlite 操作类

    1,代码 import sqlite3class DB(object):Db='E:/test.db'# 执行sql函数#2018/2/9def Excute(self,sql):conn = sql ...

  3. python学习笔记(七)类和面向对象

    目录 (一)了解面向对象 面向过程 面向对象的三大特性: (二)python中的类 1)定义类 新式类与经典类 2)初始化与实例化 3)类的属性 类属性与实例属性 私有属性 特殊属性 同名的类属性与实 ...

  4. 【Python面试题】-元类

    [Python面试题]-元类 1.Python 中类方法.类实例方法.静态方法有何区别? 类方法:是类对象的方法,在定义时需要在上方使用"@classmethod"进行装饰,形参为 ...

  5. 2021年第十二届蓝桥杯软件类省赛python组试题及其解析。

    目录 一.卡片 二.直线 三.货物摆放 四.路径 五.回路计算 六.时间显示 七.杨辉三角 八.左孩子右兄弟 九.异或数列 十.括号序列 一.卡片 本题总分:5分 [问题描述] 小蓝有很多数字卡片,每 ...

  6. Python 开发-2 (文件操作,正则表达式,类,JSON,装饰器,异常处理,Socket)

    文章目录 文件操作 递归创建目录 删除文件或目录 拷贝文件 修改文件名或目录名 文件路径名操作 判断文件,目录是否存在 文件大小与修改时间 当前目录与目录切换 遍历目录文件 遍历目录下指定后缀 目录文 ...

  7. python mysql类里_Python MySql 操作类

    # -*- coding:utf-8 -*- import MySQLdb import time ''' · MySQL 操作类 · V1.0 ''' class MySQLClass(object ...

  8. 300道Python面试题,备战春招!

    作者 | kenwoodjw 责编 | Jane 出品 |  Python大本营(ID:pythonnews) 程序员转行学什么语言? https://edu.csdn.net/topic/ai30? ...

  9. python用哪个版本比较好 2020_2020年最常见的Python面试题答案

    Python新手在谋求一份Python编程工作前,必须熟知Python的基础知识.编程网站DataFlair的技术团队分享了一份2020年最常见Python面试题合集,既有基本的Python面试题,也 ...

  10. 三年python面试题_300道Python面试题

    原标题:300道Python面试题 Python 工程师也分不同的技术岗位,初级.中级与高级开发工程师需要具备的技能也不同. 然而,无论是零经验还是 Python 老司机,对待每一次面试与笔试,都不能 ...

最新文章

  1. World Final 2012
  2. 编程实现将一个N进制数转换成M进制数
  3. [深度学习] 分布式模式介绍(一)
  4. c+oracle+bulk,C#使用OracleBulkCopy
  5. 扩展:js控制台输出,除了 console.log还有哪些?
  6. 爱立信卫翰思:已囊括拉美一半以上…
  7. 排序——直接选择排序
  8. Oracle 只读表空间 说明
  9. Unity3D自制横版闯关游戏手册(1)
  10. 你要怎样知足,才会有点幸福
  11. 哈里森,史上最具空间价值的钟表匠
  12. 老派程序员浅谈Python的异常处理
  13. android 项目分类汇总
  14. 【TS】<T> 泛型
  15. travisscott多高_如何评价说唱歌手Travis Scott ?
  16. 中小企业融资解决方案
  17. 多人协作git workflow规范
  18. 【2D游戏制作笔记】给游戏战斗增加一点打击感
  19. 电信卡_短信查询指令
  20. c log 指定服务器,解决 SQL2000安装程序配置服务器失败。参考服务器错误日志和C:\WINDOWS\sqlstp.log方法...

热门文章

  1. 2014年考研英语一翻译知识点
  2. SpringBoot 配置文件bootstrap和application的区别
  3. Linux学习笔记(六)
  4. 人生历练必备的十个心态(图)
  5. 项目经理需要的思维批判
  6. 产品与市场,究竟哪一个重要
  7. SpringMVC注解 @initbinder 解决类型转换问题
  8. 解决: java.net.ConnectException: Connection refused: connect
  9. CentOS7的yum安装mysql
  10. SSH (Secure Shell)详解