Python面试题7-18编码规范
程序员文章站
2024-02-13 20:50:16
...
参考自:https://cloud.tencent.com/developer/article/1490616(题目来源)
部分答案参考自:
https://www.cnblogs.com/reseelei-despair/p/11308813.html
https://blog.csdn.net/fanxindong0620/article/details/102642924
你将获得如下知识点:
- 掌握 Python 的基础语法
- 语法常见的 Python 应用场景
- 掌握 Python 闭包的使用以及装饰器的使用
- 生成器和迭代器的使用
- 常见的设计模式的使用
- 深浅拷贝的区别
- 线程、进程、协程的使用
- 了解 Python 中的元编程和反射
- 常考的数据结构和算法
- 爬虫相关知识,网络编程基本知识等
所有题目
编码规范
7.什么是 PEP8?
PEP8是一个编程规范,遵循PEP8规范可以让你的程序更具有可读性。
1. 缩进。4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。
2. 每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。
3. 类和top-level函数定义之间空两行;类中的方法定义之间空一行;函数内逻辑无关段落之间空一行;其他地方尽量不要再空行。
4. 模块导入的顺序:按标准、三方和自己编写顺序依次导入,之间空一行。
5. 不要在一句import中多个库,比如import os, sys不推荐
6. 避免不必要的空格
7. 注释必须要有
8. 函数命名要遵循规范
9. 尽可能使用‘is’‘is not’取代‘==’,比如if x is not None 要优于if x。
10. 使用基于类的异常,每个模块或包都有自己的异常类,此异常类继承自Exception。
11. 异常中try的代码尽可能少。
8.了解 Python 之禅么?
Python之禅指的是:Tim Peters 编写的关于python编程准则,我们可以在交互式解释器中输入:import this 。就会显示 The Zen of Python, by Tim Peters 。具体内容如下:
Python之禅 by Tim Peters
优美胜于丑陋(Python 以编写优美的代码为目标)
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
可读性很重要(优美的代码是可读的)
即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)
不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)
当存在多种可能,不要尝试去猜测
而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)
虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )
做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)
如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)
命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)
9.了解 dosctring 么?
函数方法的内置解释,随便import一个模块,比如re正则,输出re.__doc__就出现类似help(re)的文档内容,不过比help()简短多了。
我们可以在函数体的第一行使用一对三个单引号 ‘’’ 或者一对三个双引号 “”" 来定义文档字符串
def function():
''' say something here!
'''
10.了解类型注解么?
Python解释器会在运行的时候动态判断变量和参数的类型,这样的好处是编写代码速度很快,很灵活,但是坏处也很明显,不好维护,可能代码写过一段时间重新看就很难理解了,因为那些变量、参数、函数返回值的类型,全都给忘记了。
而且当你在读别人的代码的时候,也无法一眼看出变量或者参数的类型,经常要自己推敲,这样给学习带来了很大的障碍。
所以Python3里有了这个新特性,可以给参数、函数返回值和变量的类型加上注解,不过这个仅仅是注释而已,对代码的运行来说没有任何影响,变量的真正类型还是会有Python解释器来确定,你所做的只是在提高代码的可读性,仅此而已。
函数注解 Python 3.5 引入
def add(x:int , y:int) -> int:
'''
:param x:
:param y:
:return:
'''
变量注解 Python 3.6引入。它也只是一种对变量的说明,非强制
i:int = 3
11.例举你知道 Python 对象的命名规范,例如方法或者类等
类:总是使用首字母大写单词串,如 MyClass。
内部类:可以使用额外的前导下划线。
变量:小写,由下划线连接各个单词。方法名类似
常量:常量名所有字母大写 等
函数&方法:函数名应该为小写,可以用下划线风格单词以增加可读性,如:myfunction, my_example_function。(混合大小写仅被允许用于这种风格已经占据优势的时候,以便保持向后兼容。)
函数和方法的参数:总使用“self”作为实例方法的第一个参数。总使用“cls”作为类方法的第一个参数。
如果一个函数的参数名称和保留的关键字冲突,通常使用一个后缀下划线好于使用缩写或奇怪的拼写。
12.Python 中的注释有几种?
总体来说分为两种,单行注释和多行注释。
单行注释在行首是 #。
多行注释可以使用三个单引号或三个双引号,包括要注释的内容。'''...'''
13.如何优雅的给一个函数加注释?
可以使用 docstring 配合类型注解
14.如何给变量加注释?
可以通过变量名:类型的方式如下
a: str = "this is string type"
15.Python 代码缩进中是否支持 Tab 键和空格混用。
不允许 tab 键和空格键混用,这种现象在使用 sublime 的时候尤为明显。
一般推荐使用 4 个空格替代 tab 键。
16.是否可以在一句 import 中导入多个库?
可以是可以,但是不推荐。因为一次导入多个模块可读性不是很好,所以一行导入一个模块会比较好。
同样的尽量少用 from modulename import *,因为判断某个函数或者属性的来源有些困难,不方便调试,可读性也降低了。
17.在给 Py 文件命名的时候需要注意什么?
给文件命名的时候不要和标准库库的一些模块重复,比如 abc。
另外要名字要有意义,不建议数字开头或者中文命名。
18.例举几个规范 Python 代码风格的工具
自动检测工具Pylint:一个检查违反 PEP8 规范和常见错误的库,它会自动查找不符合代码风格标准和有潜在问题的代码,并在控制台输出代码中违反规范和出现问题的相关信息。
自动优化工具Black:在众多代码格式化工具中,Black算是比较新的一个,它最大的特点是可配置项比较少,个人认为这对于新手来说是件好事,因为我们不必过多考虑如何设置Black,让 Black 自己做决定就好。
在使用方面,black默认读取指定python文件并对其进行代码规范格式化,然后输出到原文件。
Flake8:Flake8是由Python官方发布的一款辅助检测Python代码是否规范的工具,相对于目前热度比较高的Pylint来说,Flake8检查规则灵活,支持集成额外插件,扩展性强。
下一篇: 处理uri %乱码