Python学习 Day1 Python解释器、编程风格

今天开始学习Python,计划先把老男孩的视频过一遍。

一、Python解释器

当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。

由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。

CPython

当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。

IPython

IPython是基于CPython之上的一个交互式解释器(交互器),也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

PyPy

PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

Jython

Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有一个巨大的资源库。

IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

小结

Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

本教程的所有代码只确保在CPython 3.x版本下运行。请务必在本地安装CPython(也就是从Python官方网站下载的安装程序)。

 

二、编程风格

描述一:

对于 Python, PEP 8 引入了大多数项目遵循的风格指导。它给出了一个高度可读,视觉友好的编码风格。每个 Python 开发者都应该读一下,大多数要点都会对你有帮助:

• 使用 4 空格缩进,而非 TAB。

在小缩进(可以嵌套更深)和大缩进(更易读)之间,4 空格是一个很好的折中。TAB 引发了一些混乱,最好弃用。

• 折行以确保其不会超过 79 个字符。

这有助于小显示器用户阅读,也可以让大显示器能并排显示几个代码文件。

• 使用空行分隔函数和类,以及函数中的大块代码。

• 可能的话,注释独占一行

• 使用文档字符串

函数文档字符串documentation string (docstring)是在函数开头,用来解释其接口的字符串。简而言之:帮助文档

  1. 包含函数的基础信息
  2. 包含函数的功能简介
  3. 包含每个形参的类型,使用等信息
  4. 是接口设计的重要部分。
  5. 注:一个良好的接口不能简单、清晰的表述该函数,则说明该函数还有优化改进的空间

函数文档的使用

  1. 必须在函数的首行,经过验证前面有注释性说明是可以的,不过最好函数文档出现在首行
  2. 使用三引号注解的多行字符串(当然,也可以是一行),因三引号可以实现多行注解(展示)(''' ''') 或(""" """)
  3. 函数文档的第一行一般概述函数的主要功能,第二行空,第三行详细描述。

查看方式

  1. 在交互模式下可以使用help查看函数,帮助文档,该界面会跳到帮助界面,需要输入q退出界面
  2. 使用__doc__属性查看,该方法的帮助文档文字直接显示在交互界面上。

举例说明

def test():
    '''
        函数名:test
        功能:测试
        参数:无
        返回值:无
    '''
    print("函数输出成功")

test()

 在交互模式下输入

 >>> import day10
 >>> help(day10.test)

最后在帮助界面显示如下 

 按q键退出

同样在交互模式下出入

>>> import day10
>>> print(day10.test.__doc__)

        函数名:test
        功能:测试
        参数:无
        返回值:无
    
>>> 

截图如下

在其下直接显示帮助文档。

• 把空格放到操作符两边,以及逗号后面,但是括号里侧不加空格:f(1, 2) g(3, 4)

• 统一函数和类命名。

推荐类名用 驼峰命名函数和方法名用 小写_和_下划线。总是用 self 作为方法的第一个参数(关于类和方法的知识详见 初识类)。

骆驼命名法:

  小驼峰法(camel方法)变量一般用小驼峰法标识

  第一个单词以小写字母开始;第二个单词的首字母大写或每一个单词的首字母都采用大写字母,例如:myFirstName、myLastName

  大驼峰法(Upper Camel Case)也称为:帕斯卡命名法:(pascal方法)常用于类名,函数名,属性,命名空间

  相比小驼峰法,大驼峰法把第一个单词的首字母也大写了。例如:public class DataBaseUser

  下面是分别用骆驼式命名法和下划线法命名的同一个函数:

   printEmployeePaychecks();骆驼式命名法——函数名中的每一个逻辑断点都有一个大写字母来标记

  print_employee_paychecks();下划线法----函数名中的每一个逻辑断点都有一个下划线来标记。

• 不要使用花哨的编码,如果你的代码的目的是要在国际化 环境。Python 的默认情况下,UTF-8,甚至普通的 ASCII 总是工作的最好。

• 同样,也不要使用非 ASCII 字符的标识符,除非是不同语种的会阅读或者维护代码。

 

描述二:

PEP8 《Python Enhancement Proposal #8》 (8号python增强提案)又叫PEP8,他针对的python代码格式而编订的风格指南。

空白

• 使用space来表示缩进,而不要用tab

• 和语法相关的每一层缩进用4个空格来表示

• 每行的字符数不应超过79 

• 文件中函数与类之间应该用两个空行隔开

• 在同一个类中,各方法之间应用一个空行隔开

• 在使用下表来获取列表元素、调用函数或给关键字参数赋值的时候,不要在两旁添加空格

• 为变量赋值的时候,赋值符号的左侧和右侧应该各自写上一个空格,而且只要一个就好

命名

• 函数、变量及属性应该用小写字母来拼写,各单词之间以下划线相连

• 类与异常,应该以每个单词首字母均大写的格式来命名

• 类中的实例方法,应该把首个参数命名为self,以表示该对象的自身

• 类方法的首个参数,应该命名为cls,以表示该类自身

表达式和语句

• 采用内联式的否定词,而不要把否定词放在整个表达式的前面,例如,应该写if a is not b 而不是if not a is b

• 不要通过检测长度的办法(如 if len(somelist) == 0)来判断somelist是否为空值,而是应该采用 if not somelist 这种写法来判断,他会假定:空值将自动评估为False

• 不要编写单行的if语句,for循环,while循环及except复合语句,而是应该把这些语句分成多行来书写,以示清晰

• import语句应在总放在文件开头

• 文件中的哪些import语句应该按照顺序划分为三个部分,分别表示标准库模块,第三方模块以及自用模块

要点

• 当编写Python代码时,总应该遵循PEP8风格指南

• 与广大Python开发者采用同一套代码风格,可以使项目更利于多人协作

• 采用一直的风格来编写代码,可以领后续的修改工作变得更为容易

以上是摘自PEP8的部分,有兴趣可以查看http://www.python.org/dev/peps/pep-0008

posted @ 2018-04-03 10:38  paulzhang511  阅读(245)  评论(0)    收藏  举报