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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Unity热更新】学会AssetsBundle打包、加载、卸载

本教程详细讲解什么是AssetBundle压缩包机制!然后构建 AssetBundle、加载 AssetBundle 以及卸载 AssetBundle 的简要教程。这一个流程就是热更新! AssetBundles 简介 1.什么是AssetBundles? AssetBundles是Unity中一种用于打包和存储资源(如模型、纹理、声音等)的文件格…

Confluence 6 访问你的宏正文(body)

请查看 Writing User Macros 页面获得有关如何写用户宏的介绍。 这个页面介绍你可以在用户宏中可以使用的的代码信息。 访问你的宏正文&#xff08;body&#xff09; 在你用户宏模板中的 $body 对象可以访问访问到传递到你宏正文中的内容。 当你的宏有指定的正文的时候&#xf…

hibernate主键生成策略

1、hibernate 要求实体类里面有一个属性作为唯一值&#xff0c;对应的表字段是主键&#xff0c;主键可以不同的生成策略 2、hibernate 主键生成策略有很多的值 <generator class"native"></generator> 3、在class属性里面有很多值 &#xff08;1&#xf…

jboss mysql cluster_jboss配置mysql数据库连接池

jboss配置mysql数据库连接池下面YJBYS小编为大家整理了关于jboss配置mysql数据库连接池的文章&#xff0c;希望对你有所帮助。更多Java认证考试信息&#xff0c;尽在应届毕业生培训网!1&#xff1a;配置&#xff1a;JDK 1.5JBoss4.0.4Mysql5.0Myeclipse 4.12&#xff1a;建立数…

P2P-挑战和机遇

近年来互联网上对等连接P2P应用发展迅速&#xff0c;MP3和视频文件共享下载的P2P流已经成为宽带用户流量的主体。基于P2P的即时通信和互联网电话&#xff08;如Skype&#xff09;发展迅速&#xff0c;对等广播P2P流媒体等正在兴起。P2P协同计算和网格方兴未艾。P2P 应用支持网络…

python面试题总结(3)-- 数据类型(字符串)

1. 列举 Python 中的基本数据类型&#xff1f; 答&#xff1a; Python3 中有六个标准的数据类型&#xff1a;数字&#xff08;Number&#xff09;、字符串&#xff08;String&#xff09;、列表&#xff08;List&#xff09;、元组&#xff08;Tuple&#xff09;、集合&#…

网页中JS函数自动执行常用三种方法

&#xff08;1&#xff09;最简单的调用方式&#xff0c;直接写到html的body标签里面&#xff1a; <body οnlοad"myFunction()"></body> <script type"text/javascript"> function myFunction(){ …

Jetty - Container源码分析

1. 描述 Container提供管理bean的能力。 基于Jetty-9.4.8.v20171121。 1.1 API public interface Container {// 增加一个bean&#xff0c;如果bean是一个Container.Listener则隐含调用addEventListener(Container.Listener)方法// Container.Listener只关心两个事件&#xff1…

Ubuntu中安装FastDFS

1 安装fastdfs依赖包 解压缩libfastcommon-master.zip进入到libfastcommon-master的目录中执行 ./make.sh执行 sudo ./make.sh install 2 安装fastdfs 解压缩fastdfs-master.zip进入到 fastdfs-master目录中执行 ./make.sh执行 sudo ./make.sh install 3 配置跟踪服务器tra…

python基本语句及其意思_Python语法基础(1),一

一、Python的对象模型对象是Python语言中最基本的概率&#xff0c;在Python中处理的一切都是对象。Python中许多内置对象可提供编程者使用&#xff0c;内置对象可直接使用&#xff0c;如数字、字符串、列表 、del等&#xff1b;非内置对象需要导入模块才能使用&#xff0c;如正…

什么是隧道技术

隧道技术是一种通过互联网络基础设施在网络之间传递数据的方式。使用隧道传递的数据可以是不同协议的数据帧或包&#xff0c;隧道协议将这些其它协议的数据帧或包重新封装在新的包头中发送&#xff0c;被封装的数据包在隧道的两个端点之间通过公共互联网络进行路由&#xff0c;…

详解网络数字电视的实现方法与关键技术

1、IPTV的实现方法 宽带网络数字电视&#xff0c;又称IPTV或BTV&#xff0c;即交互式网络电视&#xff0c;是一种利用宽带互联网、多媒体等多种技术于一体&#xff0c;向家庭用户提供包括数字电视在内的多种交互式服务的崭新技术。它能够很好地适应当今网络飞速发展的趋势&…

有状态的bean和无状态的bean的区别

有状态会话bean &#xff1a;每个用户有自己特有的一个实例&#xff0c;在用户的生存期内&#xff0c;bean保持了用户的信息&#xff0c;即“有状态”&#xff1b;一旦用户灭亡&#xff08;调用结束或实例结束&#xff09;&#xff0c;bean的生命期也告结束。即每个用户最初都会…

因为我想在博客园长呆,所以给博客园提一些改进建议

一晃眼我来博客园已经有4个月了&#xff0c;我的排名从9万多上升到9千多&#xff0c;也有不少朋友关注了我&#xff0c;其实对我帮助更大的是博客园的管理团队&#xff0c;他们对我的文章提出了很多很好的改进建议&#xff0c;从而让我的文章水平有了很大的提升。 这里我从用户…

double 二进制 java_C#中将double值变成二进制然后写入文件,Java中载入该文件读取此二进制double值时不正确...

目前已定位到是因为C#中的byte范围是0到255&#xff0c;而java中byte值为-128到127导致的错误。尝试过使用C#的sbyte来解决&#xff1a;bw1 new BinaryWriter(new FileStream("C:\\Users\\DELL\\Desktop\\SpatialIndex\\ctest1.bin", FileMode.Create));bw2 new Bi…

什么是移动IP

移动代理 &#xff08;Mobility Agent&#xff09;&#xff1a;又分为归属代理和外区代理两类。归属代理是归属网上的移动代理&#xff0c;它至少有一个接口在归属网上。其责任是当移动节点移动到外区网时&#xff0c;截收发往该点的数据包&#xff0c;并使用隧道技术将这些数据…

Ubuntu中安装nginxError

问题1&#xff1a;出现如下错误&#xff1a; ./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module option, or install the PCRE library into the system, or build the PCR…

项目经理如何把工作简单化

做一件事有两种方式。其一是把简单的事情复杂化&#xff0c;另外就是把复杂的事情简单化。项目经理应该如何选择呢?恐怕大家会异口同声的说&#xff0c;当然是把复杂的事情简单化。但是&#xff0c;在实际工作中&#xff0c;很少有项目经理能够做到这一点。他们会不知不觉中把…

[luogu P2590 ZJOI2008] 树的统计 (树链剖分)

题目描述 一棵树上有n个节点&#xff0c;编号分别为1到n&#xff0c;每个节点都有一个权值w。 我们将以下面的形式来要求你对这棵树完成一些操作&#xff1a; I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从…