注册 登录
  • 欢迎访问"运维那点事",推荐使用Google浏览器访问,可以扫码关注本站的"微信公众号"。
  • 如果您觉得本站对你有帮助,那么可以扫码捐助以帮助本站更好地发展。

Python基础语法与编程准则

Python编程 彭东稳 9172次浏览 已收录 0个评论

一、Python运行环境

  • 交互式模式

在python的交互式命令行写程序好处是一下就能得到结果;坏处是没法保存下次还想运行的时候还得再敲一遍,代码如下:

  • 文本模式

使用文本编辑器来写代码,写完保存为一个文件后缀为.py的这样一个程序就可以反复运行了,代码如下:

如果有执行权限,可以直接运行。如果没有需要使用python解析器运行。

PS:windows下绝对不能用Word和Windows自带的记事本。Word保存的不是纯文本文件,而记事本会自作聪明地在文件开始的地方加上几个特殊字符(UTF-8 BOM),结果会导致程序运行出现莫名其妙的错误。

二、Python标识符

所谓的标识符就是对变量、常量、函数、类等对象起的名字。首先必须说明的是,Python语言在任何场景都严格区分大小写!

在Python里,标识符有字母、数字、下划线组成。在Python中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。

Python中的标识符以下划线开头的标识符是有特殊意义的。以单下划线开头 “_foo” 代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用from xxx import * 而导入;以双下划线开头的 “__foo” 代表类的私有成员;以双下划线开头和结尾的 “__foo__” 代表Python里特殊方法专用的标识,如 __init__()代表类的构造函数。

还有一些非强制,但大家默认的代码规范,比如:

A. 变量名用小写、常量名用大写。

B. 函数和方法名用小写加下划线。

C. 类名用大写驼峰。

D. 模块和包的名字用小写。

E. 变量的命名不要用关键字和内置函数的名字。

三、Python注释信息

我们写的程序里,不光有代码,还要有很多注释。注释有说明性质的、帮助性质的,它们在代码执行过程中相当于不存在,透明的,不参与任何工作。但在代码维护、解释、测试等等方面,发挥着不可或缺的重要作用。每一位程序员都要尽量写出高质量的注释。具体的注释专题,有大量的高水平文章和论述,请自行搜索并学习。这里,我们只讨论Python中注释的方法。

Python中单行注释采用#开头,可以从一行的任何地方开始。

Python中多行注释,其实Python没有真正意义上的多行注释(块注释)语法,你只能在每行的开头打上#号,然后假装自己是个多行注释。

Python中的文档注释,在某些特定的位置,用三引号包括起来的部分,也被当做注释。但是,这种注释有专门的作用,用于为__doc__提供文档内容,这些内容可以通过现成的工具,自动收集起来,形成帮助文档。比如,函数和类的说明文档。

然后就可以使用fun.__doc__打印帮助文档说明了。

四、Python代码块

学习Python与其他语言最大的区别就是,Python的代码块不使用大括号{}来控制类,函数以及其他逻辑判断。Python最具特色的就是用缩进来写模块。缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行,否则会造成语法错误。

PEP8(Python官方的代码规范):建议使用四个空格作为缩进!在文本编辑器中,需要设置把Tab自动转换为4个空格,确保不混用Tab和空格。在Pycharm中:tab键被自动转换成4个空格的缩进。linux环境中,如vim编辑器,请一定使用空格,不要使用tab键,tab不等于空格;或者通过配置把tab转换为空格!

以下代码由于缩进不统一将会执行错误:

执行以上代码,会出现如下错误提醒:

IndentationError: unexpected indent错误是Python编译器是在告诉你“Hi,老兄,你的文件里格式不对了,可能是tab和空格没对齐的问题”,所有python对格式要求非常严格。如果是IndentationError: unindent does not match any outer indentation level错误表明,你使用的缩进方式不一致,有的是tab键缩进,有的是空格缩进,改为一致即可。

因此,在Python的代码块中必须使用相同数目的行首缩进空格数。建议你在每个缩进层次使用 单个制表符 或 两个空格 或 四个空格 , 切记不能混用。

五、Python语句

Python一行通常就是一条语句,一条语句通常也不会超过一行。其实,从语法层面,Python并没有完全禁止在一行中使用多条语句,也可以使用分号实现多条语句在一行,比如:

上面这一行其实包含2条语句,用分号分隔了,但是强烈建议不要这么做,这样会导致代码阅读困难、维护耗时,容易出错,老老实实地用两行来表示。

前面是多条语句在一行,但如果一条语句实在太长,也是可以占用多行的,可以使用反斜杠(\)来实现多行语句:

在 [], {}, 或 () 中的多行语句,可以不需要使用反斜杠(\),直接回车,接着写。例如:

PEP8建议:每一行的字符不超过79个。

六、pass语句

pass语句是占位语句,它什么都不做,只是为了保证语法的正确性而写。以下场景中,可以使用pass语句:

  • 当你不知道后面的代码怎么写的时候
  • 当你不需要写代码细节的时候
  • 当语法必须,又没有实际内容可写的时候
  • 其它的一些你觉得需要的场景

举个例子:

当不知道这个函数该怎么写的时候就可以用pass,如果函数体内什么都没有又会报错。一般在类继承时用的较多。

七、空白字符与空白行

空白行、空白字符与代码缩进不同,并不是Python语法的一部分。空行或者空白字符会被当做空气一样的忽略。连续的空行或空白字符和单独的空白行几字符没有区别。书写时不插入空白行或空白字符,Python解释器运行也不会出错。但是空白的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

PEP8对于空行留白有专门的建议。

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

变量赋值的时候等号左右各给一个空白。逗号后面跟一个空白。

看下面的代码,作为标准的代码规范,在规定的地方留有规定的空白行和空白字符。

八、字符串的表现形式

字符串,表示一段连续的字符,可以是有意义的单词、词组、语句,也可是无意义的字符组合。不在于它内部是由什么组成的,而在于它是否被引号引起来的。

比如, abc可能是个变量,但是"abc"肯定是个字符串!(强调,代码的世界没有中文标点,所有的符号类型都是英文半角!千万不要搞错了!)

在Python中可以使用引号( ‘ )、双引号( ” )、三引号( ”’ 或 “”” ) 来表示字符串,引号的开始与结束必须的相同类型的。其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。

Python中单引号和双引号的作用完全相同。但是注意:在其它语言中双引号引起来的才是字符串,单引号引起来的是字符!例如C,例如Json!所以很多同学在做Json格式转换时,经常发生使用单引号,导致转换失败的问题。

九、转义与非转义字符

编程语言里,有很多特殊字符,它们起着各种各样的作用。有些特殊字符没有办法用普通字符表示,需要进行转义。Python用反斜杠(\)转义字符。如下表:

转义字符 描述
\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数,yy代表的字符,例如:\o12代表换行
\xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
\033 颜色控制

如:

上面说了Python中转义是如何使用,当然也就有对应的非转义使用方式了。

如:

十、Python程序基本组成结构

Python基础语法与编程准则

1)  起始行:是用来执行脚本,无需直接调用python解释器。

2)  模块文档:是简要介绍模块的功能及全局变量的含义。

3)  模块导入:是导入已提供的内置模块或安装的第三方模块。

4)  变量定义:这里定义的变量时全局变量所有函数可以直接使用的。

5)  类定义语句:所有的类都需要在这里导入。但模块被导入时class语句会被执行、也就会被定义。

6) 函数语句定义:定义函数当模块被导入时def语句会被执行。

7)  主程序:无论这个模块是被别的模块导入还是作为脚本直接执行、都会执行这部分代码。通常这里不会有太多功能性代码。而是根据执行的模式调用不同的函数。

当Python解析器读取一个源文件时,它会执行所有的代码。在执行代码前,会定义一些特殊的变量。例如,如果解析器运行的模块(源文件)作为主程序,它将会把__name__变量设置成"__main__",如果只是引入其他的模块,__name__变量将会设置成模块的名字。

当设置完特殊变量,它就会执行import语句并且加载这些模块,当遇到def代码段的时候,它就会创建一个函数对象并创建函数名称变量指向函数对象。接下来会读取if语句并检查__name__是不是等于"__main__",如果是的话他就会执行这个代码段。

这么做的原因是有时你需要你写的模块既可以直接的执行,还可以被当做模块导入到其他模块中去。通过检查是不是主函数,可以让你的代码只在它作为主程序运行时执行,而当其他人调用你的模块中的函数的时候不必执行。

十一、Python编程风格

1)注释:既不能缺少注释、亦要避免过度注释。

2)文档:Python允许通过 __doc__动态获得文档字串。

3)缩进:统一缩进4个字串。

4)标示符名称:见名知义。

5)每行长度:最多80个字符

6)语句:一行一个避免使用;号。

Python风格指南:http://www.elias.cn/Python/PythonStyleGuide

Python PEP8:https://www.python.org/dev/peps/pep-0008

十二、Python保留字符

下面的列表显示了在Python中的保留字。这些保留字不能用作常数或变数,或任何其他标识符名称。所有Python的关键字只包含小写字母。

and exec not
assert finally or
break for pass
class from print
continue global raise
def if return
del import try
elif in while
else is with
except lambda yield

<学习网站>

Python Cookbook 3中文版本:https://github.com/yidao620c/python3-cookbook

Python 3中文翻译:http://python.usyiyi.cn/translate/python_352/index.html


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (0)or分享 (0)
关于作者:

您必须 登录 才能发表评论!