欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python面试题总结(2)--编码规范

程序员文章站 2024-02-13 20:41:58
...

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 + y
    print(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文件并对其进行代码规范格式化,然后输出到原文件。