python面试题总结(2)--编码规范
1. 什么是 PEP8?
答:PEP8 --《Python Enhancement Proposal #8》(8 号 Python 增强提案),他针对的 Python 代码格式而编订的风格指南。
2. 了解 Python 之禅么?
答:通过 import this 语句可以获取其具体的内容。它告诉大家如何写出高效整洁的代码。例如:
避复就简
Simple is better than complex.
避隐就显
Explicit is better than implicit.
能不嵌套就不嵌套
Flat is better than nested.
3. 了解 DocStrings 么?
答:
1)DocStrings 文档字符串是一个重要工具,主要是解释代码作用的,帮助你的程序文档更加简单易懂。
2)我们可以在函数体的第一行使用一对三个单引号 ‘’’ 或者一对三个双引号 “”" 来定义文档字符串。
3)可以使用 doc(注意双下划线)调用函数中的文档字符串属性。
def function():''' say something here!'''pass
print (function.__doc__) # 调用 doc
输出结果为:
say something here!
4. 了解类型注解么?
答:
Python是动态语言,变量随时可以被赋值,且能赋值为不同的类型
Python不是静态编译型语言,变量类型是在运行器决定的
动态语言很灵活,但是这种特性也是弊端
def add(x, y):return x + yprint(add(4, 5))print(add('hello', 'world'))add(4, 'hello')
难发现:由于不做任何类型检查,直到运行期问题才显现出来,或者线上运行时才能暴露出问题
难使用:函数的使用者看到函数的时候,并不知道你的函数的设计,并不知道应该传入什么类型的数据
函数注解
- Python 3.5 引入
- 对函数的参数进行类型注解
- 对函数的返回值进行类型注解
- 只对函数参数做一个辅助的说明,并不对函数参数进行类型检查
- 提供给第三方工具,做代码分析,发现隐藏的bug
- 函数注解的信息,保存在__annotations__属性中
def add(x:int , y:int) -> int:''':param x::param y::return:'''return x + y
print(help(add))
print(add.__annotations__)
运行结果
add(x:int, y:int) -> int:param x::param y::return:
None
{'x': <class 'int'>, 'y': <class 'int'>, 'return': <class 'int'>}
变量注解
Python 3.6引入。它也只是一种对变量的说明,非强制
i:int = 3
5. 例举你知道 Python 对象的命名规范,例如方法或者类等
答:
类:总是使用首字母大写单词串,如 MyClass。
内部类:可以使用额外的前导下划线。
变量:小写,由下划线连接各个单词。方法名类似
常量:常量名所有字母大写 等
函数&方法:函数名应该为小写,可以用下划线风格单词以增加可读性,如:myfunction, my_example_function。(混合大小写仅被允许用于这种风格已经占据优势的时候,以便保持向后兼容。)
函数和方法的参数:总使用“self”作为实例方法的第一个参数。总使用“cls”作为类方法的第一个参数。
如果一个函数的参数名称和保留的关键字冲突,通常使用一个后缀下划线好于使用缩写或奇怪的拼写。
详情见:python命名规范
6. Python 中的注释有几种?
答:总体来说分为两种,单行注释和多行注释。
单行注释在行首是 #。
多行注释可以使用三个单引号或三个双引号,包括要注释的内容。
7. 如何优雅的给一个函数加注释?
答:可以使用 docstring 配合类型注解
8. 如何给变量加注释?
答:可以通过变量名:类型的方式如下
a: str = "this is string type"
9. Python 代码缩进中是否支持 Tab 键和空格混用。
答:不允许 tab 键和空格键混用,这种现象在使用 sublime 的时候尤为明显。
一般推荐使用 4 个空格替代 tab 键。
10. 是否可以在一句 import 中导入多个库?
答:可以是可以,但是不推荐。因为一次导入多个模块可读性不是很好,所以一行导入一个模块会比较好。同样的尽量少用 from modulename import *,因为判断某个函数或者属性的来源有些困难,不方便调试,可读性也降低了。
11. 在给 Py 文件命名的时候需要注意什么?
答:
给文件命名的时候不要和标准库中的一些模块重复,比如 abc。
另外要名字要有意义,不建议数字开头或者中文命名。
12. 例举几个规范 Python 代码风格的工具
答:
自动检测工具Pylint:一个检查违反 PEP8 规范和常见错误的库,它会自动查找不符合代码风格标准和有潜在问题的代码,并在控制台输出代码中违反规范和出现问题的相关信息。
自动优化工具Black:在众多代码格式化工具中,Black算是比较新的一个,它最大的特点是可配置项比较少,个人认为这对于新手来说是件好事,因为我们不必过多考虑如何设置Black,让 Black 自己做决定就好。
在使用方面,black默认读取指定python文件并对其进行代码规范格式化,然后输出到原文件。
python面试题总结(2)--编码规范相关推荐
- Python编码规范(PEP 8)
文章目录 在讲解具体的 Python 编码规范之前,先来看看图 1 中的代码: 对比图 1 中的两段代码你会发现,它们所包含的代码时完全相同的,但很明显,右侧的代码编写格式看上去比左侧的代码段更加规整 ...
- Python的编码规范(超详细)
目录 一.前言 二.编写规范 三.命名规范 四.结语 一.前言 编码的规范性对代码的整体展现有着较大的影响. 先让我们看两张规范与不规范的代码截图来感受下. 先让我们看看不规范的吧. 看完有什么感觉吗 ...
- 腾讯大佬的 Python 编码规范
文末有干货 "Python高校",马上关注 真爱,请置顶或星标 版权声明:本文为CSDN博主「天元浪子」 原文链接:https://blog.csdn.net/xufive/art ...
- google python代码规范_如何用好python编码规范,写一手漂亮的代码
前一段时间在编写python 代码的时候编辑器中一直在提示规范问题,因为强迫症的原因,我决定遵循python 的编码规范去编码,然后把需要注意的点记录下来, 帮助自己和大家一起成长. 这是我的main ...
- Python最简编码规范
0.前言 本文是阅读<Python Coding Rule>之后总结的最为精华及简单的编码规范,根据每个人不同喜好有些地方会有不同的选择,我只是做了对自己来说最简单易行的选择,仅供大家参考 ...
- python 编码规范 PEP8整理
我是用Python的IDE:pycharm来编写Python代码的,用IDE编写代码有一个好处就是语法高亮,智能提示.Python的代码样式规范称之为PEP 8规范,每次编写代码如果有出现不符合PEP ...
- python编码规范手册-Python官方竟然给出了一种编码规范PEP 8
写在之前 每个人都有自己的代码风格,随着写的行数增加,自己对于代码的审美也会变的不一样,这就像是一个逐渐蜕变的过程,每过一段时间回头再去看看自己之前写的代码就会生出一种「这么丑的玩意儿竟然是我写的」这 ...
- python编码规范手册-python之(8)Python编码规范整理
我是用Python的IDE:pycharm来编写Python代码的,用IDE编写代码有一个好处就是语法高亮,智能提示.Python的代码样式规范称之为PEP 8规范,每次编写代码如果有出现不符合PEP ...
- python编码规范手册-PEP8 Python 编码规范整理
决定开始Python之路了,利用业余时间,争取更深入学习Python.编程语言不是艺术,而是工作或者说是工具,所以整理并遵循一套编码规范是十分必要的.所以今天下午我根据PEP 8整理了一份,以后都照此 ...
- PEP8 Python 编码规范整理
决定开始Python之路了,利用业余时间,争取更深入学习Python.编程语言不是艺术,而是工作或者说是工具,所以整理并遵循一套编码规范是十分必要的.所以今天下午我根据PEP 8整理了一份,以后都照此 ...
最新文章
- 互联网协议 — TCP — (面向面向连接的)三次握手、四次挥手
- python画椭圆-Python易学就会(五)turtle绘制椭圆与递归
- linux下文件系统的启动过程
- ASP.NET Core 3.x启动时运行异步任务(二)
- 创建下标为1-10的整形数组
- 18计算机二级考试用word吗,计算机二级Word篇-实操真题详解18
- 基于Pytorch的多任务推荐系统开源框架
- springboot 文件上传 设置文件大小配置
- 哪些东西影响计算机运行速度,影响电脑运行速度的因素主要的哪些?
- 通过雷达图的面积进行总体对比分析是不可靠的!
- 22. Asteroid: the PyTorch-based audio source separation toolkit for researchers
- 爬虫 (十九) 有趣的例子认识 while 循环 (十)
- 30000字Linux期末考试复习总结
- Zynq实现分布式Fir滤波器
- 2.Matlab图像坐标变换
- ACM 投稿时CCS CONCEPTS 生成及插入
- 通信感知一体化关键技术(IMT-2030 6G)
- 2020-09-24
- Python爬虫要学多久
- 微信小程序通过css实现底部边大圆弧效果