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

1.3
Python语言基础

本节详细介绍Python的语法特点,然后介绍Python中的保留字、标识符、变量、基本数据类型及数据类型间的转换,接下来介绍运算符与表达式,最后介绍通过输入和输出函数进行交互的方法。

1.3.1 初识Python语法

学习Python首先需要了解它的语法特点,如注释规则、代码缩进、编码规范等。下面将详细介绍Python的这些语法特点。

1.注释

在程序中,注释就是对代码的解释和说明,让他人了解该段代码实现的功能,从而帮助程序员更好地阅读代码。注释的内容将被Python解释器忽略,并不会在执行结果中体现出来。

在Python中,通常包括3种类型的注释,分别是单行注释、多行注释和中文编码声明注释。

1)单行注释

在Python中,使用“#”作为单行注释的符号。从符号“#”开始直到换行为止,“#”后面所有的内容都作为注释的内容,并被Python解释器忽略。

例如:

    # 要求输入体重,单位为kg,如65
    weight=float(input("请输入您的体重:"))
2)多行注释

在Python中,没有一个单独的多行注释标记,而是将包含在一对三引号('''……''')或者("""……""")之间,并且不属于任何语句的内容都视为注释,这样的内容将被解释器忽略。由于这样的代码可以分为多行编写,所以也称为多行注释。

语法格式如下:

    '''
    注释内容1
    注释内容2
    ......
    '''

多行注释通常用来为Python文件、模块、类或者函数等添加版权、功能等信息。例如,下面代码将使用多行注释为demo.py文件添加版权、功能及修改日志等信息:

    '''
    @版权所有:百度科技有限公司◎版权所有
    @文件名:demo.py
    @文件功能描述:根据身高、体重计算BMI指数
    @修改日期:2020年7月20日
    '''
注意

在Python中,三引号('''……''')或者("""……""")是字符串定界符。如果三引号作为语句的一部分出现时就不是注释,而是字符串,这一点要注意区分。

例如,如下所示的代码为多行注释:

'''

@文件功能描述:根据身高、体重计算BMI指数

@创建人:李明

@修改日期:2020年7月20日

'''

如下所示的代码为字符串:

print('''''根据身高、体重计算BMI指数''')

2.代码缩进

Python不像其他程序设计语言(如Java或者C语言)采用花括号({})分隔代码块,而是采用代码缩进和冒号(:)区分代码之间的层次。

在Python中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进表示一个代码块的开始,而缩进结束则表示一个代码块的结束。

例如,下面代码中的缩进为正确的缩进.

    height=float(input("请输入您的身高:"))  # 输入身高
    weight=float(input("请输入您的体重:"))  # 输入体重
    bmi=weight/(height*height)               # 计算BMI指数

Python对代码的缩进要求非常严格,同一个级别的代码块的缩进量必须相同。如果不采用合理的代码缩进,将抛出SyntaxError异常。例如,代码中的缩进量有的是4个空格,有的是3个空格,就会出现SyntaxError错误。

3.编码规范

Python采用PEP8作为编码规范,PEP8中的“8”表示版本号。下面给出PEP8编码规范中的一些应该严格遵守的条目。

● 每个import语句只导入一个模块,尽量避免一次导入多个模块。推荐的写法为:

    import os
    import sys

不推荐的写法为:

    import os,sys

● 不要在行尾添加分号(;),也不要用分号将两条命令放在同一行。以下写法所示的代码为不规范的写法。

    height=float(input("请输入您的身高"));

● 建议每行不超过80个字符。导入模块的语句不宜过长,注释里的URL除外。

如果导入模块的语句超过80个字符,建议使用圆括号(())将多行内容隐式地连接起来,不推荐使用反斜杠(\)进行连接。例如,如果一个字符串文本不能在一行上完全显示,那么可以使用圆括号将其分行显示,代码如下:

    S =("我一直认为我是一只蜗牛。我一直在爬,也许还没有爬到金字塔的顶端。"
    "但是只要你在爬,就足以给自己留下令生命感动的日子。")

以下通过反斜杠(\)进行连接的做法是不推荐使用的。

    S=("我一直认为我是一只蜗牛。我一直在爬,也许还没有爬到金字塔的顶端。\
    但是只要你在爬,就足以给自己留下令生命感动的日子。")

● 使用必要的空行可以增加代码的可读性。一般在顶级定义(如函数或者类的定义)之间空两行,而在方法定义之间空一行。另外,在用于分隔某些功能的位置也可以空一行。

● 通常情况下,运算符两侧、函数参数之间、圆括号两侧建议使用空格进行分隔。

● 应该避免在循环中使用“+”和“+=”运算符累加字符串。这是因为字符串是不可变的,这样做会创建不必要的临时对象。推荐将每个子字符串加入列表,然后在循环结束后使用join()方法连接列表。

● 适当使用异常处理结构提高程序容错性,但不能过多依赖异常处理结构,适当的显式判断还是有必要的。

提示

在编写Python程序时,建议严格遵循PEP8编码规范。完整的Python编码规范请参考PEP8。

1.3.2 保留字与标识符

1.保留字

保留字是Python语言中的已经被赋予特定意义的单词。开发程序时,不可以把这些保留字作为变量、函数、类、模块和其他对象的名称来使用。Python语言中的保留字如表1.1所示。

表1.1 Python中的保留字

注意

Python中所有保留字是区分字母大小写的。例如,if是保留字,但IF就不是保留字。

2.标识符

标识符可以简单地理解为一个名字,比如每个人都有自己的名字,它主要用来标识变量、函数、类、模块和其他对象的名称。

Python语言标识符命名规则如下:

● 由字母、下画线(_)和数字组成。第一个字符不能是数字,目前Python只允许使用ISO-Latin字符集中的字符A~Z和a~z。

● 不能使用Python中的保留字。

● 区分字母大小写。

在Python中,标识符中的字母是严格区分大小写的,两个同样的单词,如果大小写格式不一样,所代表的意义是完全不同的。

● Python中以下画线开头的标识符有特殊意义,一般应避免使用相似的标识符。

以单下画线开头的标识符(如_width)表示不能直接访问的类属性,也不能通过from xxx import *导入;以双下画线开头的标识符(如__add)表示类的私有成员;以双下画线开头和结尾的标识符是Python中专用的标识符,如__init__()表示构造函数。

1.3.3 变量

变量是存放数据值的容器。与其他编程语言不同,Python没有声明变量的命令。首次赋值时,才会创建变量。在Python中,不需要先声明变量名及其类型,直接赋值即可创建各种类型的变量。但是变量的命名并不是任意的,应遵循以下几条规则:

● 变量名必须是一个有效的标识符。

● 变量名不能使用Python中的保留字。

● 慎用小写字母l和大写字母O。

● 应选择有意义的单词作为变量名。

为变量赋值可以通过等号(=)来实现。语法格式为:

    变量名=value

例如,创建一个整型变量,并为其赋值为1024,可以使用下面的语句:

    number=1024  # 创建变量number并赋值为1024,该变量为数字型

这样创建的变量就是数字型的变量。如果直接为变量赋值一个字符串,那么该变量即为字符串类型。例如下面的语句:

    nickname="唐家三少" # 字符串类型的变量

另外,Python是一种动态类型的语言,也就是说,变量的类型可以随时变化。例如,在PyCharm中,创建变量nickname,首先为该变量赋值为字符串“唐家三少”,并输出该变量的类型,可以看到该变量为字符串类型;然后将该变量赋值为数值1024,并输出该变量的类型,可以看到该变量为整型。执行过程如下:

    >>>nickname="唐家三少"
    >>>print(type(nickname))
    <type'str'>
    >>>nickname=1024
    >>>print(type(nickname))
    <type'int'>
提示

在Python语言中,使用内置函数type()可以返回变量的类型。

在Python中,允许多个变量指向同一个值。例如,将两个变量都赋值为数值2048,再分别应用内置函数id()获取变量的内存地址,将得到相同的结果。执行过程如下:

    >>>no=number=1024
    >>>id(no)
    140206854436088
    >>>id(number)
    140206854436088
提示

在Python语言中,使用内置函数id()可以返回变量所指的内存地址。

注意

常量就是程序运行过程中值不能改变的量,比如现实生活中的居民身份证号码、数学运算中的π值等,这些都是不会发生改变的,它们都可以定义为常量。

1.3.4 基本数据类型

在内存中存储的数据可以有多种类型。例如,一个人的姓名可以用字符类型存储,年龄可以使用数字类型存储,婚姻状况可以使用布尔类型存储。这里的字符类型、数字类型、布尔类型都是Python语言中提供的基本数据类型。下面将详细介绍Python语言中的基本数据类型。

1.数字类型

在Python语言中,数字类型主要包括整数、浮点数和复数。

1)整数

整数用来表示整数数值,即没有小数部分的数值。在Python语言中,整数包括正整数、负整数和0,并且它的位数是任意的(当超过计算机自身的计算功能时,会自动转用高精度计算),如果要指定一个非常大的整数,只需要写出其所有位数即可。

整数类型包括十进制整数、八进制整数、十六进制整数和二进制整数。

● 十进制整数:是我们日常生活中采用的整数,由0~9组成,进位规则为“逢十进一”。例如,下面的数值都是有效的十进制整数。

    31415926537932384626
    666666666666
    -2018
    0

● 八进制整数:由0~7组成,进位规则为“逢八进一”,并且以Oo/00开头,如Oo123(转换成十进制数为83)、-0o123(转换成十进制数为-83)。

● 十六进制整数:由0~9、A~F组成,进位规则为“逢十六进一”,并且以Ox/0X开头,如Ox25(转换成十进制数为37)、0Xb0le(转换成十进制数为45086)。

● 二进制整数:由0和1两个数组成,进位规则是“逢二进一”,如101(转换成十制数为5)、1010(转换成十进制数为10)。

2)浮点数

浮点数由整数部分和小数部分组成,主要用于处理包含小数的数,例如:1.414、0.5、-1.732、3.1415926535897932384626等。浮点数也可以使用科学记数法表示,例如:2.7e2、-3.14e5和6.16e-2等。

3)复数

Python中的复数与数学中的复数的形式完全一致,都是由实部和虚部组成,并且使用j或J表示虚部。当表示一个复数时,可以将其实部和虚部相加。例如,一个复数,实部为3.14,虚部为12.5j,则这个复数为3.14+12.5j。

2.字符串类型

字符串就是连续的字符序列,可以是计算机所能表示的一切字符的集合。在Python中,字符串属于不可变序列,通常使用单引号(' ')、双引号("")或者三引号(''''''或"""""")引起来。这3种引号形式在语义上没有差别,只是在形式上有些差别。其中单引号和双引号中的字符序列必须在同一行上,而三引号内的字符序列可以分布在连续的多行上。例如,定义3个字符串类型变量,并且应用print()函数输出,代码如下:

    title='我喜欢的名言警句'                             # 使用单引号,字符串内容必须在同一行
    mot_cn="命运给予我们的不是失望之酒,而是机会之杯。"  # 使用双引号,字符串内容必须在同一行
    # 使用三引号,字符串内容可以分布在多行
    mot_en='''Ourdestinyoffersnotthecupofdespair,
    butthechanceofopportunity.'''
    print(title)
    print(mot_cn)
    print(mot_en)
注意

字符串开始和结尾使用的引号形式必须一致。另外当需要表示复杂的字符串时,还可以嵌套使用引号。

例如,下面的字符串也都是合法的。

'在Python中也可以使用双引号("")定义字符串'

"'(…)nnn'也是字符串"

"""---'"_"***"""

Python中的字符串还支持转义字符。所谓转义字符是指使用反斜杠(\)对一些特殊字符进行转义。常用的转义字符如表1.2所示。

表1.2 常用的转义字符及其说明

3.布尔类型

布尔类型主要用来表示真值和假值。在Python中,标识符True和False被解释为布尔值。另外,Python中的布尔值可以转换为数值,True表示1,False表示0。

提示

Python中的布尔类型的值可以进行数值运算,例如,False+1的结果为1。但是不建议对布尔类型的值进行数值运算。

在Python中,所有的对象都可以进行真值测试。其中,只有下面列出的几种情况得到的值为假,其他对象在if或者while语句中得到的值都为真。

● False或None,数值中的0包括0、0.0、虚数0。

● 空序列,包括字符串、空元组、空列表、空字典。

● 自定义对象的实例,该对象的_bool__方法返回False或者_len_方法返回0。

4.数据类型转换

Python是动态类型的语言,也称为弱语言类型语言,不需要像Java或者C语言一样在使用变量前声明变量的类型。虽然Python不需要先声明变量的类型,但有时仍然需要用到类型转换。

在Python中,提供了如表1.3所示的函数进行数据类型的转换。

表1.3 常用类型转换函数及其作用

1.3.5 运算符

运算符是一些特殊的符号,主要用于数学计算、比较大小和逻辑运算等。Python的运算符主要包括算术运算符、赋值运算符、比较(关系)运算符、逻辑运算符和位运算符。下面介绍一些常用的运算符。

1.算术运算符

算术运算符是处理四则运算的符号,在数字的处理中应用得非常多。Python中常用的算术运算符如表1.4所示。

表1.4 算术运算符

提示

在算术运算符中使用%求余,如果除数(第二个操作数)是负数,那么取得的结果也是一个负值。

2.赋值运算符

赋值运算符主要用来为变量等赋值。使用时,可以直接把基本赋值运算符“=”右边的值赋给左边的变量,也可以在进行某些运算后再赋值给左边的变量。Python中常用的赋值运算符如表1.5所示。

表1.5 常用的赋值运算符

注意

混淆=和==是编程中最常见的错误之一。很多语言(不只是Python)都使用了这两个符号,另外很多程序员也经常会用错这两个符号。

3.比较运算符

比较运算符,也称关系运算符,用于对变量或表达式的结果进行大小、真假等比较,如果比较结果为真,则返回True,如果为假,则返回False。比较运算符通常用在条件语句中作为判断的依据。Python中的比较运算符如表1.6所示。

表1.6 比较运算符

4.逻辑运算符

逻辑运算符是对真和假两种布尔值进行运算,运算后的结果仍是一个布尔值。Python中的逻辑运算符主要包括and(逻辑与)、or(逻辑或)和not(逻辑非)。表1.7列出了逻辑运算符的用法和说明。

表1.7 逻辑运算符

使用逻辑运算符进行逻辑运算时,其运算结果如表1.8所示。

表1.8 使用逻辑运算符进行逻辑运算的结果

5.位运算符

位运算符是把数字看作二进制数来进行计算的,因此,需要先将要执行运算的数据转换为二进制,然后才能进行执行运算。Python中的位运算符有位与(&)、位或(|)、位异或(^)、取反(~)、左移位(<<)和右移位(>>)运算符。

提示

整型数据在内存中以二进制的形式表示,如7的32位二进制形式如下:

00000000000000000000000000000111

其中,左边最高位是符号位,若为0则表示正数,若为1则表示负数。负数采用补码表示,如-7的32位二进制形式如下:

11111111111111111111111l11111001

1)位与运算

位与运算的运算符为“&”,运算法则是:两个操作数的二进制表示,只有对应数位都是1时,结果数位才是1,否则为0;如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。

2)位或运算

位或运算的运算符为“|”,运算法则是:两个操作数的二进制表示,只有对应数位都是0,结果数位才是0,否则为1;如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。

3)位异或运算

位异或运算的运算符是“^”,运算法则是:当两个操作数的二进制表示相同(同时为0或同时为1)时,结果为0,否则为1;若两个操作数的精度不同,则结果数的精度与精度高的操作数相同。

4)位取反运算

取反运算也称位非运算,运算符为“~”。运算法则是:将操作数中对应的二进制数1修改为0,0修改为1。

5)左移位运算

左移位运算的运算符是“<<”,运算法则是:将一个二进制操作数向左移动指定的位数,左边(高位端)溢出的位被丟弃,右边(低位端)的空位用0补充。左移位运算相当于乘以2的n次幂。

6.运算符的优先级

所谓运算符的优先级,是指在应用中哪一个运算符先计算,哪一个后计算,与数学的四则运算应遵循的“先乘除,后加减”是一个道理。

Python的运算符的运算规则是:优先级高的运算先执行,优先级低的运算后执行,同一优先级的操作按照从左到右的顺序进行。也可以像四则运算那样使用圆括号,括号内的运算最先执行。表1.9按从高到低的顺序列出了运算符的优先级,同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。

表1.9 运算符的优先级

提示

在编写程序时尽量使用圆括号(())来限定运算次序,避免运算次序发生错误。

1.3.6 基本输入与输出

从第一个Python程序开始,我们一直使用print()函数向屏幕上输出一些字符,这就是Python的基本输出函数。除了print()函数,Python还提供了一个用于进行标准输入的input()函数,用于接收用户从键盘上输入的内容。

1.使用input()函数输入

在Python中,使用内置函数input()可以接收用户的键盘输入,基本语法格式如下:

    variable=input("提示文字")

其中,variable为保存输入结果的变量,双引号内的文字用于提示要输入的内容。例如,想要接收用户输入的内容,并保存到变量tip中,可以使用下面的代码:

    tip=input("请输入文字:")

在Python 3.x中,无论输入的是数字还是字符都将被作为字符串读取。如果想要接收数字,需要把接收到的字符串进行类型转换。例如,想要接收整型的数字并保存到变量age中,可以使用下面的代码:

    age=int(input("请输入数字:"))
2.使用print()函数输出

默认的情况下,在Python中使用内置的print()函数将结果输出到IDLE(Python集成开发环境)或者标准控制台上,其基本语法格式如下:

    print(输出内容)

其中,输出内容可以是数字和字符串(字符串需要使用引号括起来),此类内容将直接输出,也可以是包含运算符的表达式,此类内容将输出计算结果。例如:

    a=10  # 变量a,值为10
    b=6   # 变量b,值为6
    print(6)                             # 输出数字6
    print(a*b)                           # 输出变量a*b的结果60
    print(aifa>belseb)                   # 输出条件表达式的结果10
    print("成功的唯一秘诀:坚持到最后") # 输出字符串“成功的唯一秘诀:坚持到最后”
注意

在Python中,默认情况下,一条print()语句输出后会自动换行,如果想要一次输出多个内容,而且不换行,可以将要输出的内容使用英文半角状态的逗号分隔。例如下面的代码将在一行输出变量a和b的值:

print(a,b)#输出变量a和b,结果为106 qT5hYZRXvnxRN1UgsKhMb7DsV/S3o50sNC5Wwsyz/V8DBymPi8Vicsy4PjSkG4HX

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