第二章
- 2 Python的语言基础
- 2.1 Python的注释
- 2.2 代码缩进
- 2.3 编码规范
- 2.3.1 编写规则
- 2.3.2 命名规范
- 2.4 保留字和标识符
- 2.4.1 保留字
- 2.4.2 标识符
- 2.5 变量
- 2.6 基本数据类型
- 2.6.1 数字类型
- 2.6.2 字符串类型
- 2.6.3 布尔类型
- 2.6.4 数据类型转换
2 Python的语言基础
2.1 Python的注释
(1)单行注释
在Python中。使用“#”作为单行注释的符号,类似C语言中的“//”。可以使用在一行的首位,或者一行代码后。
# 这是一行注释
a = 5 # 这是一段注释
Tips:在IDLE开发环境中可以使用Alt+3快速注释代码,Alt+4取消注释代码
(2)多行注释
使用三引号
'''
注释
注释
'''
或者
"""
注释
注释
"""
(3)中文编码声明注释
语法格式如下:
# -*- coding:编码 -*-
或者
# coding=编码
如
# -*- coding:utf-8 -*-
# coding=utf-8
2.2 代码缩进
Python不像其他程序语言采用大括号“{}” 来分割代码块,而是采用代码缩进和冒号“:”区分代码之间的层次。
说明:缩进可以使用空格或者Tab键来实现,其中,使用空格时,通常情况下采用4个空格作为一个缩进量,而使用Tab时,则采用一个Tab键作为一个缩进量,通常情况下建议使用空格进行缩进。
在Python中,对于类,函数的定义,流程控制语句等行位的冒号和下一行的缩进表示一个代码块的开始,而缩进结束表示一个代码块的结束。
#例子
height = float(input("请输入你的身高 (m):"))
weight = float(input("请输入你的体重(kg):"))
bmi = weight/(height*height)
#判断身材是否合理
if bmi < 18.5:
print("你的BMI指数为:"+str(bmi))
print("体重过轻")
if bmi >= 18.5 and bmi < 24.9:
print("你的BMI指数为:"+str(bmi))
print("正常范围,注意保持")
if bmi >= 24.9 and bmi < 29.9:
print("你的BMI指数为:"+str(bmi))
print("体重过重")
if bmi >= 29.9:
print("你的BMI指数为:"+str(bmi))
print("肥胖- -")
代码的缩进空格数不同可能会报错
可以使用快捷键Ctrl+[和Ctrl+]对代码进行缩进
2.3 编码规范
2.3.1 编写规则
Python采用PEP 8作为编码规范,其中PEP是Python Enhancement Proposal(Python增强建议书)的缩写,而8标识版本号,下面给出PEP 8编码规范中的一些应该严格遵守的条目。
- 每个import语句只导入一个模块,尽量避免一次导入多个模块,如:
import os
Import sys
#不推荐,下面这种写法
import os,sys
- 不要再行尾添加分号 ”;” ,也不要用分号将两条命令放在同一行。
- 建议每行不超过80个字符,如果超过,建议使用小括号将多行内容隐式连接起来,而不推荐使用反斜杠“\”进行连接,如:
String = (“假如写不下了”
“另起一行接着写- -...”)
以下两种情况除外:
1)导入模块的语句过长
2)注释里的URL
- 使用必要的空行可以增加代码的可读性。
- 通常情况下,运算符两侧,函数参数之间,“,”两侧建议使用空格进行分隔。
- 避免在循环中使用“+”,“+=”运算符累加字符串,因为字符串是不可变的,这样做会创建不必要的临时对象,推荐每个子字符串加入列表,然后再循环结束后使用join()方法连接列表。
- 适当使用异常处理结构提高程序容错性,但不能多依赖异常处理结构,适当的显式判断还是必要的。
2.3.2 命名规范
建议的命名规范:
- 类名尽量短小,并且全部使用小写字母,可以使用下划线分隔多个字母,例如,game_main。
- 包名尽量短小,并且全部使用小写字母,不推荐使用下划线,例如com.wx。
- 类名采用单词首字母大写形式(即Pascal风格),例如,定义一个借书类,可以命名BorrowBook。
- 模块内部的类采用下划线“_”+Pascal风格的类名组成,例如,在BorrowBook类中的内部类,可以使用_BorrowBook命名。
- 函数,类的属性和方法的命名规则同模块类似,也会全部使用小写字母,多个字母间用下划线分隔。
- 常量命名时全部使用大写字母,可以使用下划线。
- 使用单下划线开头的模块变量或者函数是受保护的,在使用from xxx import *语句从模块中导入时这些变量或者函数不能被导入。
- 使用双下划线开头的实例变量或方法是类似有的。
2.4 保留字和标识符
2.4.1 保留字
保留字是Python中一些已经被赋予特定意义的单词,开发程序时,不看见恶意吧这些保留字作为变量、函数、类、模块和其他对象的名称来使用,Python语言中的保留字如表所示
· | · | · | · | · | · |
and | as | assert | break | class | continue |
def | del | elif | else | except | finally |
for | from | false | global | if | import |
in | is | llambda | nonlocal | not | none |
or | pass | raise | return | try | true |
while | with | yield |
注意:Python中的所有保留字是区分字母大小写的,例如,if是保留字,但是IF就不属于保留字。
- Python的保留字可以在IDLE中输入以下两行代码查看
import keyword
keyword.kwlist
2.4.2 标识符
标识符可以简单地理解为一个名字,比如每个人都有自己的名字,它主要用来标识变量,函数,类,模块和其他对象的名称。
Python的命名规则如下:
由字母,下划线和数字组成,第一个字符不能使数字,目前Python只允许使用ISO-Latin字符集中的字符A-Z和a-z。
- 在Python中,标识符中的字母是严格区分大小写的。
- Python中以下划线开头的标识符有特殊意义,一般应避免使用相似的标识符。
以单下划线开头的标识符如(_width)表示不能直接访问的类属性,也不能通过”from xxx import *”导入。
以双下划线开头的标识符如(__add)表示类的私有成员。
以双下划线开头和结尾的是Python里专用的标识,如__init__()表示构造函数。
- 在Python中允许使用汉字作为标识符,但是尽量不要使用汉字作为标识符,如
天气 = “多云”
2.5 变量
在Python中不需要先声明变量名及其类型,直接赋值即可创建各种类型的变量。但是变量的命名不是任意的,应遵循以下几条规则:
- 变量名必须是一个有效的标识符
- 变量名不能使用Python中的保留字
- 慎用小写字母i和大写字母o
- 应选择有意义的单词作为变量名
语法格式为 变量名 = value
Python是一种动态类型的语言,变量的类型可以随时变化。
>>> test = 123
>>> print(type(test))
<class 'int'>
>>> test = "string"
>>> print(type(test))
<class 'str'>
2.6 基本数据类型
2.6.1 数字类型
(1)整数
在Python中包括正整数,负整数和0,并且它的位数是任意的(当超过计算机自身的计算功能时,会自动转用高精度计算),如果要制定一个非常大的整数,只需要写出其所有位数即可。
整数类型包括十进制整数,八进制整数,十六进制整数和二进制整数。
- 在Python 2.X中,如果输入的数比较大时,Python会自动在其后面加上字母L,(也有可能是小写字母),例如,在Python2.7.14中输入31415926535897932384626后。
- 0不能作为十进制数的开头(0除外)。
- 八进制整数:在Python 3.x 以0o/0O为开头表示,在Python 2.x八进制数可以以0开头。
- 十六进制整数表示方法和C语言一样,以0x或者0X开头表示。
(2)浮点数
浮点数由整数部分和小数部分组成,浮点数也可以使用科学技术发表示,如2.7e2。
在使用浮点数进行计算时,可能会出现小数位数不确定的情况,例如在计算0.1+0.1将得到想要的0.2。而计算0.1+0.2时,将得到0.30000000000000004(想要的结果是0.3)。
对于这种问题,几乎所有计算机语言都存在这个问题,暂时忽略多余的小数位数即可。
(3)复数
Python中的复数与数学中的复数的形式一致,都是由实部和虚部组成,并且使用j或者J表示虚部,当表示一个复数时,可以将其实部和虚部相加,例如,一个复数,实部为3.14,虚部为12.5j,则这个复数为3.14+12.5j。
2.6.2 字符串类型
在Python中,字符串属于不可变序列,通常使用单引号,双引号,三引号 ‘’’ ‘’’ (或””” “””)括起来。这三种引号形式在语义上没有差别,只是在形式上有所差别。其中单引号和双引号的字符串序列必须在一行上,而三引号内的字符序列可以分布在连续的多行上。比如
title = '一句名言'
mot_cn = "命运给予我们的不是失望之酒,而是机会之杯。"
# 使用三引号。字符串内容可以分步在多行
mot_en = '''Our destiny offers not the cup of
despair,but the chance of opportunity. '''
testStr = ("一行写不下"
"会不会接上")
print(title)
print(mot_cn)
print(mot_en)
print(testStr)
试了一下三引号的换行在输出的时候也会换行,然后又试了2.3.1中的字符串写法。
当要表示复杂的字符串时,引号可以嵌套。
Python中的字符串还支持转义字符,所谓转义字符是指使用反斜杠“\”对一些特殊字符进行转义。
转义字符 | 说明 |
\ | 续行符 |
\n | 换行符 |
\0 | 空 |
\t | 水平制表符,用于横向跳到下一制表位 |
\” | 双引号 |
\’ | 单引号 |
\ | 一个反斜杠 |
\f | 换页 |
\0dd | 八进制数,dd代表字符,如\012代表换行 |
\xhh | 十六进制数,hh代表字符,如0x0a代表换行 |
2.6.3 布尔类型
布尔类型主要用来表示真值或假值,在Python中,标识符True和False被解释为布尔值,Python中的布尔值可以转化为数值,True表示为1,False表示为0。
Python中的布尔类型的值可以进行数值运算,例如,“Flase + 1”的结果为1,但是不建议对布尔类型的值进行数值运算。
在Python中,所有的对象都可以进行真值计算,其中,只有下面列出的几种情况得到的值为假,其他对象在If或者while语句中都表现为真。
(1)False或者None
(2)树脂中的零,包括0,0.0,虚数0。
(3)空序列,包括字符串,空元组,空列表,孔子点。
(4)自定义序列对象的实例,该对象的__bool__方法返回False或者__len__方法返回0。
2.6.4 数据类型转换
Python是动态类型语言(也称弱类型语言),不需要像C或者Java中一样在使用变量前声明变量的类型,虽然Python不需要先声明变量的类型,但有时仍然需要用到类型转换。
函数 | 作用 |
int(x) | 将x转换成整数类型 |
float(x) | 将x转换成浮点数类型 |
complex(real[,imag]) | 创建一个复数 |
str(x) | 将x转换为字符串 |
repr(x) | 将x转换为表达式字符串 |
eval(str) | 计算在字符串中的有效Python表达式,并返回一个对象 |
chr(x) | 将整数x转换为一个字符 |
ord(x) | 将一个字符x转换为他对应的整数值 |
hex(x) | 将一个整数x转换为一个十六进制的字符串 |
oct(x) | 将一个整数x转换为一个八进制的字符串 |