购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 Python基本语法

Python的目标是让代码具备高度的可阅读性,在设计时尽量使用其他语言经常使用的标点符号和英文单词,与Java、C、Perl等语言有许多相似之处,但也存在一些差异。本节将介绍Python的基础语法,为后续网络编程学习打下基础。

1.3.1 Python编码规则

每种开发语言都有自己的编码规则,Python也一样,包括命名规则、书写规则、注释规则等。Python文件采用UTF-8编码,文件头部加入“#-*-coding:utf-8-*-”标识。本节将重点介绍Python中常用的编码规则。

1.命名规则

命名规则是一种书写习惯,Python的命名规则可以借鉴Java。为提高程序可读性,命名要有意义,一看就知道什么意思,不能使用Python保留字。命名的标识符数字不能做开头,其组成可以是字母、下划线和数字,注意Python中字母要区分大小写。

下面介绍一些常用的命名规则。

(1)包名、模块名

包名和模块名应简短,尽量使用小写命名,不要用下划线,如果词量大可以加入下划线增强可读性,如“mymodule”这样的命名就是允许的,而“Mymodule”这样的命名方式则不推荐。

(2)类名、对象名、属性、方法

类名首字母大写,私有类可用一个下划线开头,其他字母小写。对象名全采用小写字母。类的属性和方法名以对象作为前缀,对象通过“.”访问属性和方法。方法名首字母小写,其他单词首字母大写,使用“self”作为实例方法的第一个参数。

(3)函数名

函数名通常小写,可以用下划线或单词首字母大写增加可读性,导入的函数以模块名为前缀。如果一个函数的参数名称和保留的关键字冲突,通常使用一个后缀下划线。如:myfunction可写作my_example_function。

(4)变量名、常量名

很多开发人员对变量名的命名很随意,常常用j、i、k等单个字母命名,可读性差。变量名的命名也有一定的规范,变量名应全部小写,用下划线连接各个单词,比如:school_name。私有类成员变量使用单一下划线前缀标识,如:_name。

常量名的所有字母都要大写,可用下划线连接各个单词,如:MAX_OVERFLOW、TOTAL。

2.缩进、冒号、空格、空行

Python中不用“begin……end”或者“大括号”来分隔代码块,而是用代码缩进和冒号来区分代码层次结构。使用编码器可以实现缩进及添加冒号的功能,最好不要使用Tab键,更不能混合使用Tab键和空格。每行代码最好不超过80个字符。

在Python编码中空格的使用也很常见,一般在运算符(=,-,+=,==,>,in, is not, and)两边各加一个空格,在逗号、冒号、分号及各种右括号前,函数和序列的左括号前则不要加空格。

空行不是Python语法的一部分,即使不空行,Python解释器也不会报错,但空行便于以后代码维护。一般模块级函数和类定义之间空两行;类成员函数之间空一行;分隔多组相关的函数可以使用多个空行;函数中可以使用空行分隔出逻辑相关的代码。

3.模块导入规范(import)

import语句应该放在文件头部,每组之间用一个空行分隔,分行书写。模块的导入可以用“import”和“from……import……”两种方式完成,它们的区别在于前者只导入模块的一部分内容,并在当前命名空间创建导入对象引用,后者在当前命名空间创建导入模块引用,可以使用“类名.属性”的方式调用。

4.注释

注释是代码的一部分,是对代码的说明,对后续代码维护也有好处。Python可以对一行代码进行注释,也可以对一段代码进行注释。如果对一行代码进行注释,至少使用两个空格将语句分开,然后输入“#”号,接着空一格,最后输入注释内容,按回车键结束;如果对一段代码进行注释,同样使用“#”号,段落间用空行分开。

1.3.2 Python变量与常量

变量是存储在计算机内存里的一块区域,它的值可以变化;常量是一块只读的内存区域,一旦赋值则不可更改。

1.变量赋值

Python中的变量不需要声明,变量的赋值就是变量声明和定义的过程,但是如果变量未被赋值,则被视为不存在。每个变量在内存中创建,都包括变量的标识、名称、数据等信息,下面来看一个例子。

由此可以看出,变量的每一次新的赋值,计算机都会分配一个内存区域,就算变量名一样,但是变量标识符也不一样。

也可以对多个变量一起赋值,如下所示。

通过序列的定义和拆分,实现了同时对多个变量的赋值。

2.全局变量

全局变量是指能被所有函数、类和文件共享的变量,它被定义在函数之外,一般定义在文件的开始处。具体看下面的例子。

全局变量_a和_b被函数add()引用,但是add()函数内部改变全局变量_a的值,要使用global进行引用,然后才可以重新进行赋值,最后返回_a+_b的值为5。

3.局部变量

局部变量是指只能在代码段或函数内部使用的变量,代码段或函数一旦运行结束,局部变量生命周期也就结束了,外部不能调用局部变量。具体看下面的例子。

由上面的例子可以看出,x作为局部变量定义在fun()函数中,函数运行结束,x的生命周期也就结束,y作为外部变量要调用已经结束的内部变量x,肯定就会报错。

4.常量

常量是一旦初始化就不能更改的固定值,在Java、C++都由保留字来定义常量,Python中则没有提供常量的保留字,但是可以定义一个常量类来实现常量的功能。具体看下面的例子。

调用const常量:

1.3.3 Python基本数据类型

数据类型指的是变量所指向的内存中对象的类型。Python中有6种基本数据类型,分别是Number(数字)、String(字符串)、Tuple(元组)、List(列表)、Dictionary(字典)、Set(集合)。内置函数type()可以用来查询变量所指的对象类型,也可用isinstance来判断对象类型。

1.Number(数字)

数字型的数据类型,Python 3支持int(长整型)、float、bool、complex(复数)。

输出结果为:<class'int'><class'float'><class'bool'><class'complex'>。

对a、b、c、d四个变量定义数据类型依次为int(长整型)、float、bool、complex(复数),输出结果与定义类型一致。

温馨提示

Python 3中没有Python 2的long类型。Python 3中,True和False是关键字,它们的值分别是1和0,它们可以和数字相加(Python 2中是没有布尔型的,它用数字0表示False,用1表示True)。

2.String(字符串)

Python中的字符串用单引号“'”或双引号“"”括起来,同时使用反斜杠“\”转义特殊字符。单引号和双引号的效果一样,看下面的代码。

上面两句代码是等效的,如果都用print(str)输出的话,结果都为“hello world”。

除了单引号、双引号,Python中还有三引号,它的作用是输出单引号、双引号或换行等字符。

Python中的转义字符为“\”,如果要输出特殊意义的字符就需要用到它。使用三引号和双引号不需要使用转义字符,解释器能识别其内的字符是需要全部输出的,如果是单引号,里面又使用了特殊字符,如双引号,则需要使用转义字符,写法如下:

反斜杠可以用来转义,使用“r”可以让反斜杠不发生转义,字符串可以用“+”运算符连接在一起,用“*”运算符重复,字符串可以被索引和截取,从左至右以0开始,从右至左以-1开始。

3.List(列表)、Tuple(元组)

(1)List(列表)

List(列表)是Python中最常用的数据类型。列表中元素的类型有多种,可以相同也可以不相同,它支持数字、字符串甚至可以包含列表(即嵌套)。列表是写在方括号“[]”之间,用逗号分隔开的元素列表。列表可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

列表中各元素的索引值,从左到右依次是0,1,2,3,4,从右到左依次是-1,-2,-3,-4,-5,如图1-41所示。

图1-41 列表t的索引值

列表的语法格式为变量[头下标:尾下标],列表元素截取显示示例如下。

(2)Tuple(元组)

Tuple(元组)与List(列表)类似,不同之处在于元组需要写在小括号“()”里,元组的元素不能修改,并且元素之间要用逗号隔开。

温馨提示

和String一样,List、Tuple都属于Sequence(序列),能够被索引和截取。

4.Dictionary(字典)

列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于字典当中的元素是通过键来存取的,列表中的元素是通过存放顺序来读取的。

字典是一种映射类型,用“{}”标识,它是一个无序的键(key):值(value)的集合,键(key)必须使用不可变类型,在同一个字典中,键(key)必须是唯一的。看下面的例子。

字典类型也有一些内置的函数,如clear()、keys()、values()等。

5.Set(集合)

Set(集合)是一个无序的不重复元素序列,可以用大括号“{}”或者set()函数创建集合,创建一个空集合必须用set()。示例如下。

集合可以通过一些内置函数实现添加、删除等操作,常见的集合内置方法有17种,如表1-2所示。

表1-2 集合内置方法列表

6.数据类型转换

数据类型的转换,只需要将数据类型作为函数名即可。可以执行数据类型之间转换的内置函数有15种,如表1-3所示。

表1-3 数据类型转换函数列表

这些函数返回一个新的对象,表示转换的值。

1.3.4 运算符与表达式

Python运算包括赋值运算、算术运算、逻辑运算和关系运算。赋值运算最简单,用“=”表示。算术运算包括四则运算、求模运算、求幂运算。

Python中最常用的算术运算符有7个,如表1-4所示。

表1-4 算术运算符及表达式
(注:假设变量x=10,y=21)

Python关系运算符和表达式有6种,如表1-5所示。

表1-5 关系运算符及表达式
(注:假设变量x=10,y=21)

Python逻辑运算符和表达式有3种,如表1-6所示。

表1-6 逻辑运算符及表达式
(注:假设变量x=10,y=21)

Python中的运算符是有优先顺序的,算术运算符高于关系运算符,关系运算符高于逻辑运算符,如果表达式中有多种运算符,Python会根据优先级的先后顺序从高到低进行计算。

Python有7种运算符,前面介绍了常见的算术运算符、关系运算符、赋值运算符、逻辑运算符,还有位运算符、成员运算符、身份运算符。位运算符是把数字看作二进制来进行计算,它包括&(与)、|(或)、^(异或)、~(取反)、<<(左移)、>>(右移);成员运算符包括in或not in, in的意思是如果在指定的序列中找到值返回True,否则返回False, not in的意思则相反;身份运算符是用于比较两个对象的存储单元,包括is和is not, is是判断两个标识符是不是引用自一个对象,is not是判断两个标识符是不是引用自不同对象。 C0yBgxU6nuo2jJq9FzxHXFwvrnK61eSLEMkil9lXyYRpVr23sOaHvsEoMFtRBFGs

点击中间区域
呼出菜单
上一章
目录
下一章
×