学习目标
- 掌握Python的基本运算
- 掌握变量、表达式和语句
基本内容
- Python语法常识
- Python语句的书写规则
- 变量
一.Python程序的组成
Python的程序由包、模块(即一个Python文件)、函数、类和语句组成。
二.Python程序的编码规范
- 命名规则
- 变量名、包名、模块名通常采用小写字母开头,如果名称中包含多个单词,一般采用第一个单词全部小写,后面每一个单词首字母大写的驼峰表示法,如myBook。也可以采用下划线_分隔的全部小写形式,如student_name。一些不变的对象,建议使用全大写方式,如PI。
- 类名采用首字母大写,多个单词使用驼峰表示法,如BookInfo。
- 函数名一般采用小写字母,多个单词使用驼峰表示法。
- 代码缩进
- 使用Tab键和空格来进行代码缩进,但是不要混用Tab键和空格来缩进。
- Python中的缩进代表程序块的作用域,如果采用了错误的代码缩进,会导致程序抛出异常。
- 空格
- 函数或者语句块之间使用空格行来分隔,以分开两段不同功能的代码块,增强可读性。
- 运算符两侧建议使用空格进行分隔。
- 注释
- 注释有助于对程序的理解和团队合作开发,对函数、类一定要添加功能性、使用性注释说明,对于复杂的算法也要适当注释。
- 每个import语句只导入一个模块,尽量避免一次导入多个模块。
- 如果一行语句太长,可以在行尾使用续行符”\“,在下一行继续写代码。
- 适当使用异常处理结构提高程序的容错性和健壮性(鲁棒性)。
三.Python语法常识
- 代码注释方法
- Python的单行注释语句用#开始,从#开始一直到末尾的部分是注释部分。
- 如果要进行多行的注释可以使用三个单引号(''')或者双引号(""")将注释内容包围。单引号和双引号在使用上没有本质的差别。
# 人生苦短,我用Python
'''
This is my first python programm
created on 2023-03-10
@author ken
'''
"""
This is my first python programm
created on 2023-03-10
@author ken
"""
x = 1
print(x)
1
- 缩进语句
- Python最具特色的就是使用缩进来表示代码块,不需要使用大括号{},但是同一个代码块的语句必须包含相同的缩进空格数(4个空格)。
- 一个模块的界限,完全由每行的首字符在这一行的位置来决定的。
- 代码缩进有两种方式,一种是采用制表符(Tab键),另一种是采用若干个空格。
- Python的一些特殊语句,例如条件语句、循环语句等规定要向右边缩进。
# 代码缩进,判断用户从键盘输入的数字是正数、负数还是0。
# 接受键盘上输入的一个数字
x = input("请输入一个数字:")
# 判断从键盘上输入的数字是否是正数
x = float(x)
if x > 0:
print('您输入的数字是正数')
elif x == 0:
print("您输入的数字是0")
else:
print("您输入的数字是负数")
请输入一个数字:-3
您输入的数字是负数
- 多行语句
- Python程序一般一行写一条语句,相同性质的语句左对齐,例如下面三条输出语句:
x = "Hi!"
y = "Everyone"
z = x + y
print(z)
Hi!Everyone
- 这种语句也可以写在同一行,语句之间使用分号分开,上面三条语句写成:
x = "Hi!"; y = "Everyone"; z = x + y; print(z)
Hi!Everyone
- 一般建议把多条短的语句写在一行,大部分语句还是一条语句占一行。
- 输出语句
- Python使用print语句进行输出,它可以输出任意多个数据,数据之间用逗号分开,例如:
x = 1; y = 2
print(1, 2, 1 + 2, "x + y =", x + y)
1 2 3 x + y = 3
- 中文编码
- 在Python中采用Unicode编码,所有的英文字符与汉字都使用2个字节表示,因此处理汉字与处理英文字符是一样的,没有太多区别。
- 在Python中使用函数ord(x)查看x字符的编码,编码占2个字节,因此一般再使用hex函数把编码转为十六进制显示。
print(ord("A"))
print(hex(ord("A")))
print(ord("我"))
print(hex(ord("我")))
65
0x41
25105
0x6211
- 关键字(保留字符)
- 关键字是Python语言本身使用的标识符,被Python语言保留,每个关键字都有其特殊的意义,因而不能用作标识符,否则容易产生变异错误。
|
|
Python关键字 |
|
|
| False |
True |
None |
and |
or |
| not |
as |
with |
from |
import |
| while |
for |
in |
continue |
break |
| try |
raise |
finally |
class |
def |
| global |
nonlocal |
del |
yield |
except |
| if |
else |
elif |
pass |
return |
| lambda |
async |
assert |
await |
exec |
import keyword
print(keyword.kwlist)
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
- 检查是否是Python中的关键字(保留字符),用keyword.iskeyword(word)
keyword.iskeyword("and")
True
keyword.iskeyword("String")
False
- 标识符
- 用来表示某个实体的符号,由字母、下划线和数字组成,且不能以数字开头。
| ✔️ |
❌ |
| a_int |
99var |
| b52 |
It's0K |
| strl_strname |
For |
| funcl |
X.Y |
- Python标识符区分大小写。例如,ABC和abc视为不同的名称。
- 使用标识符应注意:
- (1)见名知义:通过变量名就知道变量值的含义。
- (2)开头和结尾都使用下划线的情况应该避免:_sum_
- (3)不能和关键字重名。
- (4)不能以数字开头。
- (5)标识符不宜太长。
- (6)不建议使用系统内置的模块名、类型名或函数名,以及已导入的模块名及其成员名作为变量名。
- 单独的下划线(_)用于表示上一次运算的结果:
2 * 3
6
_ * 10
60
- 标识符可以被用作变量名、函数名、类名、模块名等的命名。标识符命名规则:
- 变量名、包名、模块名通常采用小写字母开头。
- 类名首字母采用大写字母。
- 函数名一般采用小写字母。
- 多个单词使用驼峰表示法。
- 常量所有的字母都用大写,单词用下划线分开。
- 最重要的命名规则是,选取的名称应该能够清楚地说明该变量、函数,类、模块等所包含的意义。
- 内置函数
- 函数就是程序中一段包装起来的具有特定功能的代码。
- 内置函数(也称内建函数)指的是不需要导入任何模块即可直接使用的函数。
- 函数通过函数名和参数列表进行调用,通过返回值向外部返回结果。
- 类型转换函数:chr(97)、ord('a')、str(3.15)、int(3.3)
- 数学运算函数:abs(x)、max(3, 2, 5, 1)、pow(x, y)
# 转换为字符
chr(97)
'a'
# 转换为对应的Unicode值
ord('a')
97
# 转换为字符串
str(3.15)
'3.15'
# 转换为整数
int(3.3)
3
# 绝对值函数
abs(-1)
1
# 求最大值函数
max(3, 2, 5, 1)
5
# 计算 x 的 y 次方
pow(2, 3)
8
- 模块与函数
- Python使用模块将代码封装起来。除了Python的内置函数之外,Python标准库所提供的函数均被封装在各个模块中。
- 要调用模块中的函数(非内置函数),需要在代码顶部使用import语句导入该模块。
- import 模块名
- from 模块名 import 函数名
四.Python语句的书写规则
- 语句需要从第一列开始,前面不能有任何空格,否则会产生语法错误。
- 程序的注释可以出现在任何位置,以符号“#”开始,到行末结束。
- 复合语句包括:if语句、while语句、for语句、try语句、with语句、函数定义、类定义等。
- 缩进:每级缩进用4个空格;连续行的折叠元素应该对齐。
- 导入:通常应该在单独的行中导入(Import)。
- Import os
- 这样也是可以的
- form subprocess import Popen,PIPE
- import通常被放置在文件的顶部,仅在模块注释和文档字符串之后,在模块的全局变量和常量之前。
- 简单语句包括:表达式语句、赋值语句、assert语句、pass空语句、del语句、return语句、yield语句、raise语句、break语句、continue语句、import语句、global语句、nonglobal语句等。
- 若同一行内放置多个语句,可以在语句中间采用分号(;)进行分隔。
- 如果语句太长,可以使用续行符(\),但三引号定义的字符串("""...""")、元组((...))、列表([...])、字典({...}),可以放在多行,无需使用续行符(\)。
- 程序有时需要一个空语句来占位,而不是一个空行,空语句用pass语句表达。
- 语句不需要分号(;)作为结束符,一般一行一条语句。
- 注释:同代码不一致的注释比没有注释更差。当代码修改时,始终优先更新注释!
- Python中有许多内置对象可供编程者直接使用,如数字、字符串、列表、集合以及内置函数。
- 非内置对象需要导入模块后才能使用,如math模块中的正弦函数sin(),random模块中的随机数产生函数random()等。
五.对象和类型
- 对象是Python语言中最基本的概念,在Python中处理的一切都是对象。
- Python中的对象就是编程中把数据和功能包装后形成的一个对外具有特定交互接口的内存块。
- 对象是对数据的抽象,Python中所有的数据都被表示成对象,或者对象之间的关系,所有的数据以对象的形式存在。一串字符、一个数字或者一个集合都是对象,如:"hello world"、2、42.56、{1, 2, 3}等。
- 每个对象都有三个属性分别是:
- 身份(identity),就是对象在内存中的地址;
- 类型(type),用于表示对象所属的数据类型(类),对象的类型决定了对象可以存储什么类型的值,有哪些属性和方法,可以进行哪些操作;
- 值(value),对象所表示的数据。
- 对象通常存放在变量中,变量是指向某个对象的名称,是对象的命名。
- 例如:b = 6
- 简单来看,上边的代码执行了以下操作:
- (1)使用变量b来代表对象6。为了使用对象,必须通过赋值操作“=”把对象赋值给一个变量(也称之为把对象绑定到变量),这样便可通过该变量来操作内存数据块中的数据。
- (2)如果变量b不存在,创建一个新的变量b。
- (3)将变量b和数字6进行连接,即变量b成为对象6的一个引用,变量可看作是指向对象的内存空间的一个指针。
六.变量
- 变量就是程序为方便地引用内存中的值而设置的一种让使用者容易识别的名称。在Python中,变量是用一个变量名表示,变量名的命名规则:
- 变量名只能是字母、数字或下划线的任意组合。
- 变量名的第一个字符不能是数字。
- Python关键字不能声明为变量名。
- 永远不要用字符‘l’(小写字母el(就是读音,下同)),‘O’(大写字母oh),或‘I’(大写字母eye)作为单字符的变量名。在某些字体中,这些字符不能与数字1和0分开。当想要使用‘l’时,用‘L’代替它。
- Python中的变量是不需要声明数据类型的,变量的“类型”是所指的内存中被赋值对象的类型,变量类型会根据所赋值的类型自动推断。例如,int类型上可以进行四则运算。
- 变量在使用前,必须赋初值。
- 变量在第1次赋值时被创建,再次出现时直接使用。
- 同一变量可以反复赋值,而且可以是不同类型的变量,这也是Python语言称之为动态语言的原因。
- Python允许同时为多个变量赋值。
- 变量引用了对象。当在表达式中使用变量时,变量被其引用的对象替代。
- Python中各种变量存储的不是值,而是值的引用。
- 变量的创建:直接给变量赋值,无需其它操作。
brower = 'Google' # 字符串类型
brower = 100 # 整数类型
brower = 123.45 # 浮点数类型
brower = 2 + 3j # 复数类型
brower, count, addsum = 'Google', 100, 123.45
print(brower, count, addsum)
Google 100 123.45
x = 0; y = 0; z = 0 # 多个语句间用分号分隔
a, b = 1, 2 # 采用多变量同时赋值
c = d = 3 # 采用链式赋值方式
print(x, y, z, a, b, c, d)
0 0 0 1 2 3 3
- 与变量属性相关的内置函数:
- (1)type()函数:一般形式:type(变量名),其作用是查询变量的数据类型。
- (2)id()函数:一般形式:id(变量名),其作用是获取变量的内存地址。
- (3)isinstance()函数:一般形式:isinstance(对象,类型名),其作用是判断一个数值是否是某种数据类型。
num = 5
type(num)
int
str = "Hello World!"
type(str)
str
z = True
type(z)
bool
num = 1
id(num)
140413177567536
str = "Hello World!"
id(str)
140413286535600
num = 3
isinstance(num, int)
True
isinstance(num, bool)
False
isinstance(num, (bool, int, str, float))
True
- 变量的删除
- Python具有自动内存管理功能,对于没有指向值的变量,Python会自动将其删除。Python会跟踪所有的变量,并自动删除不再有指向值的变量。因此,Python程序员一般情况下不需要太多考虑内存的管理问题。
- 通过显式使用del命令,可以删除不需要的变量,或者显式关闭不再需要访问的资源。
- 通过del语句删除对象的引用,也就是删除之前所创建的对象。
- 具体语法:
- del var1[, var2[, var3[...., varN]]]]
a = 2
del a
print(a)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
/var/folders/k6/x52rc50d6z51grg0dcf3hv_r0000gn/T/ipykernel_4008/1844676813.py in <module>
1 a = 2
2 del a
----> 3 print(a)
NameError: name 'a' is not defined
- 常量的表示:
- 常量是内存中用于保存固定值的单元,在程序中常量的值不能发生改变。
- Python只能用变量来表示常量,通常的做法是采用大写字母来表示在程序里的常量。
PI = 3.141592653
print(PI)
PI = 3
print(PI)
3.141592653
3
- 注:PI是人为指定的一种作为常量使用的变量,其本质还是个变量,能够被重新赋值。