官方文档:3.10.13 Documentation
一、Python 代码编写习惯
1. Python 中的编码
在 Python 3 版本之后,Python 默认使用 UTF-8 编码。UTF-8 是一种针对 Unicode 的可变长度字符编码。
2. 注释
注释可以对代码起到解释说明的作用,注释内容不是真的代码,并不执行。
快捷键:ctrl + /
(1) 单行注释
在 Python 中只有一种注释,就是以 # 开头的单行注释。
# 单行注释... # 单行注释
(2) 多行注释
可以用3个单引号或3个双引号作为多行注释,这种多行注释本质上是字符串。
'''
多行注释
多行注释
'''"""
另一种多行注释
另一种多行注释
"""
(3) Pycharm 中设置代码模板
菜单栏中选择 File --> Settings --> Editor --> File and Code Templates,选择 Python Script。
在编辑器中设置如下模板:
# TODO
# @Time : ${DATE} ${TIME}
# @Author : Qingxue
# @Version : 0.0.1
# @IDE : ${PRODUCT_NAME}
# @Project : ${PROJECT_NAME}
点击 OK,之后创建 pythin 代码文件时会自动加上上面定义的代码模板。
3. 缩进
Python 是一种依赖缩进进行层次划分的语言。
Python中并没有花括号 {} 和小括号 (),所有代码的层次都是通过缩进来完成的,采用这样的方式极大地提高了代码的可读性。
4. PEP8 规范
PEP8 规范是 Python 编程中最新的代码样式指南,是一种 Python 标准的风格说明书,也是统一的代码样式规范。
PEP 8 – Style Guide for Python Code | peps.python.org
(1) 缩进的规定
- 一个缩进级别均使用 4 个空格。
- Python 3 中直接禁用了空格和 Tab 制表符混用的情况。
(2) 空行的规定
- 在新建类的上方应该有两个空行。
- 类方法的定义时应该在上方留一个空行。
- 在 .py 文件末尾应该添加一个空行。
(3) 字符串引号的规定
- 如果字符串中已经包含了某一种引号,则应该使用另一种引号作为字符串的标识。
(4) 注释的规定
- 注释的英文首字符大写。
- 推荐所有的注释均采用英文的方式进行书写。
(5) 命名的规定
- 对于模块和软件包,推荐使用短小的英文小写字母进行命名,但是并不推荐使用下划线进行命名。
- 对于建立的 class 类名,需要使用大写字母开头的驼峰方式进行命名,尽量简短易懂。
- 对于变量和函数,要求必须使用全部小写的形式,在切分单词时使用下划线进行分隔,提高可读性。
- 如果需要使用常量,要求采用全部大写字母的方式进行命名。
三、变量
Python 程序中,处理的所有数据都必须存储在变量中。
1. 变量的理解
官方的定义是变化的量叫变量,每一个变量都有变量名和变量值。
比如说我们要去五星级酒店找朋友,可是酒店里面的客房非常多。如果我们想快速找到朋友,必须得知道你朋友的房间号。根据房间号,我们立马可以知道房间的位置,打开门就能看见入住的客人。
所有的变量都存在内存中。我们可以把内存看成是一个大的五星级酒店,每一间房就代表数据存放的内存地址范围,在这一个地址范围中存起来的就是我们的数据,对应客房中所住的客人。
为了快速的查找或使用这个数据,通常我们把存储数据的地址范围和房间号一样,也定一个名称。这个名称就是变量。
总结一下,房间就对应变量,房号对应变量名,入住的客人对应变量值。有了变量之后就可以快速的在茫茫(数海)的内存中。找到对应的数据。
2. 变量的定义和使用
(1) 变量的组成
变量有变量名和变量值。变量名是一个标识符,由字母、数字和下划线组成,且不能以数字开头。变量值可以是 Python 中任意的数据类型。
(2) 变量的定义
变量名 = 表达式
表达式可以是一个值,后面会详细介绍表达式。
a = 100
b = 200
(3) 变量的使用
变量名
直接以变量名的形式使用变量。
print(a + b)
3. 标识符和保留字
标识符命名规则是 Python 中定义各种名字的时候的统一规范,具体如下:
-
由数字、字母、下划线组成
-
不能数字开头
-
不能使用内置关键字
-
严格区分大小写
保留字是 Python 中内置的关键字,具体如下:
and | continue | except | if | nonlocal | return | True |
as | def | finally | import | not | try | False |
assert | del | for | in | or | while | None |
break | elif | from | is | pass | with | |
class | else | global | lambda | raise | yield |
Python 中的变量名和函数名要见名知意,一般使用小写字母加下划线命名。
# 推荐
my_name = 'Qingxue'
my_age = 25
my_sex = '男'# 小驼峰命名 不推荐
myName = 'Yueqiao'# 大驼峰命名 不推荐
MyAge = 25
4. 常量
常量是一种特殊的变量,广义上是指“不变化的量”,是指在编程语言中不会变动的数据的别称。
在 Python 的内置命名空间中,False、True、None 等就是常量。
Python 中不支持用户声明一个常量,虽然可以依托于自行实现类进行常量的模拟,但本质上 Python 并不能将常量和变量区分对待。
Python 一般通过约定俗成的变量名全大写驼峰命名的形式表示这是一个常量,当然这样的常量依旧是可以被修改的。
# 常量
MAX_COUNT = 10000
只有通过自行定义常量实现类并通过该类进行实例化,才能实现常量“不能被修改”的要求。
5. 认识数据类型
# 整型 int
a = 1# 字符串 str
b1 = 'abc' # 单引号
b2 = '''abc''' # 3个单引号
b3 = "abc" # 双引号
b4 = """abc""" # 3个双引号# 布尔型
c1 = True
c2 = False# 浮点型
d = 1.5
(1) type 函数
使用 type 函数可以获取变量的类型。
a = 69
print(a, type(a)) # 69 <class 'int'>
(2) 强类型
强类型语言:每个变量有且只有一个特定的类型。
虽然 Python 中可以直接按 a = 1 这种形式直接定义变量,但要注意,Python 是一种强类型语言,此时已由类型推断得出变量 a 为整型 int。
可以使用 a: int = 1 这种形式来定义变量,Pycharm 中会进行类型检测。
四、输入——input 函数
input('提示信息')
(1) 当程序执行到 input,等待用户输入,输入完成之后才继续向下执行;
(2) 在Python中,input 接收用户输入后,一般存储到变量,方便使用;
(3) 在Python中,input 会把接收到的任意用户输入的数据都当做字符串处理。
print('开始输入函数')name = input('请输入你的名字:') # Qingxue
print(type(name), name) # <class 'str'> Qingxueage = input('请输入你的年龄:') # 25
print(type(age), age) # <class 'str'> 25
注意:所有的通过 input 获取的数据,都是字符串类型。 Python 是一门强类型的语言。
五、运算
1. 算术运算
算术运算包括加减乘除取余等运算。
值1 [运算符] 值2
表达式:由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 1 + 1 输出结果为 2 |
- | 减 | 1-1 输出结果为 0 |
* | 乘 | 2 * 2 输出结果为 4 |
/ | 除 | 10 / 2 输出结果为 5 |
// | 整除(取商) | 9 // 4 输出结果为2 |
% | 取余(模) | 9 % 4 输出结果为 1 |
** | 指数 | 2 ** 4 输出结果为 16,即 2 * 2 * 2 * 2 |
() | 小括号 | 小括号用来提高运算优先级,即 (1 + 2) * 3 输出结果为 9 |
# 指数计算
print('3的平方', 3 ** 2) # 9
print('9的平方根', 9 ** 0.5, 9 ** (1 / 2)) # 3.0# 字符串相加:多个字符串连接
print("'a' + 'b'", 'a' + 'b') # ab# 字符串乘数字:字符串复制多少次
print("'-' * 20", '-' * 20) # --------------------# 取余(模运算)
print('17模2', 17 % 2) # 1
注意:混合运算优先级顺序:() 高于 ** 高于 * / // % 高于 + -。
2. 赋值运算
赋值运算符就只有等于号1个,功能为将 = 右侧的结果赋值给 = 左侧的变量。
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值 | 将等号右侧的结果赋值给等号左侧的变量 |
左值:可以出现在赋值号左边的值,例如变量、左值表达式。
右值:可以出现在赋值号右边的值,比如单个值、右值表达式、函数调用等。
(1) 单个变量赋值
变量名 = 表达式
# 单个变量赋值
num = 1
print(num) # 1
(2) 多个变量赋值
变量名1, 变量名2, ... , 变量名n = 表达式1, 表达式2, ... , 表达式n
# 多个变量赋值
num1, float1, str1 = 1, 2.2, 'a3'
print(num1, float1, str1) # 1 2.2 a3
3. 复合赋值运算
复合赋值运算即为算术运算结合赋值运算,先算术运算,再赋值。
运算符 | 描述 | 实例 |
---|---|---|
+= | 加法赋值运算符 | c += a 等价于 c = c + a |
-= | 减法赋值运算符 | c -= a 等价于 c = c- a |
*= | 乘法赋值运算符 | c *= a 等价于 c = c * a |
/= | 除法赋值运算符 | c /= a 等价于 c = c / a |
//= | 整除赋值运算符 | c //= a 等价于 c = c // a |
%= | 取余赋值运算符 | c %= a 等价于 c = c % a |
**= | 幂赋值运算符 | c ** = a 等价于 c = c ** a |
# 复合赋值运算,先运算,再赋值
a = 5
a += 4
print(a) # 9# 复合赋值运算 + 算术运算
b = 6
c = 7c *= c + b
print(c) # 91
4. 总结
(1) 算数运算的优先级
混合运算优先级顺序:() 高于 ** 高于 * / // % 高于 + -
(2) 赋值运算符
=
(3) 复合赋值运算符
+= -=
优先级:
- 先算复合赋值运算符右侧的表达式
- 再算复合赋值运算的算数运算
- 最后算赋值运算
六、输出——print 函数
print(...values, end)
print 函数的本质是输出到控制台。
格式化输出有格式化符号和 f-字符串两种方式。
1. 格式化符号
print('...[占位符]...' % (变量))
格式化符号在要输出的字符串中当作占位符,输出时占位符将被对应的变量格式化后替换输出。
格式符号 | 转换 | 格式符号 | 转换 |
---|---|---|---|
%s | 字符串 | %x | 十六进制整数(小写ox) |
%d | 有符号的十进制整数 | %X | 十六进制整数(大写OX) |
%f | 浮点数 | %e | 科学计数法(小写'e') |
%c | 字符 | %E | 科学计数法(大写'E') |
%u | 无符号十进制整数 | %g | %f和%e的简写 |
%o | 八进制整数 | %G | %f和%E的简写 |
%x | 十六进制整数(小写ox) | ||
%X | 十六进制整数(大写OX) | ||
%e | 科学计数法(小写'e') | ||
%E | 科学计数法(大写'E') | ||
%g | %f 和 %e 的简写 | ||
%G | %f 和 %E 的简写 |
(1) 格式化符号 %s
格式化符号 %s 用于格式化字符串。
my_name = 'Qingxue'
my_age = 25
my_city = 'Beijing'# print('我的名字是:' + my_name) # 我的名字是:Qingxue
print('我的名字是:%s' % my_name) # 我的名字是:Qingxue# print('我的年龄是:' + my_age) # TypeError: can only concatenate str (not "int") to str
print('我的年龄是:%d' % my_age) # 我的年龄是:25# %s 很特殊,变量类型 str 和 int 都可以
print('我的名字是%s,今年%s岁,住在%s' % (my_name, my_age, my_city)) # 我的名字是Qingxue,今年25岁,住在Beijing
格式化符号 %s 比较特殊,格式化 str 和 int 类型的变量都可以。
(2) 格式化符号 %d 和 %f
格式化符号 %d 用于格式化整数。可以写成 %nd 的形式(n 为数字),表示至少占 n 位,不够则在前面用空格补齐,n 为负数代表从后面用空格补齐。写成 %0nd 则表示前面用0补齐(n 为正数)。
格式化符号 %f 用于格式化浮点数,默认保留小数点后6位小数。可以写成 %.nf 的形式(n 为数字),表示保留 n 位小数。
c1 = 98
c2 = 78
c3 = 60# print('我的总成绩是%s,平均成绩为%s。' % (c1 + c2 + c3, (c1 + c2 + c3) / 3)) # 我的总成绩是236,平均成绩为78.66666666666667。
# %f 默认保留6位小数
print('我的总成绩是%d,平均成绩为%f。' % (c1 + c2 + c3, (c1 + c2 + c3) / 3)) # 我的总成绩是236,平均成绩为78.666667。
# %.2f 保留2位小数
print('我的总成绩是%d,平均成绩为%.2f。' % (c1 + c2 + c3, (c1 + c2 + c3) / 3)) # 我的总成绩是236,平均成绩为78.67。
c4 = 12
c5 = 9
c6 = 18print('我的总成绩是%d,平均成绩为%.2f。' % (c4 + c5 + c6, (c4 + c5 + c6) / 3)) # 我的总成绩是39,平均成绩为13.00。
# %3d 代表保留3位正数,不够前面用空格补齐
print('我的总成绩是%3d,平均成绩为%.2f。' % (c4 + c5 + c6, (c4 + c5 + c6) / 3)) # 我的总成绩是 39,平均成绩为13.00。
# %03d 代表保留3位正数,不够前面用0补齐
print('我的总成绩是%03d,平均成绩为%.2f。' % (c4 + c5 + c6, (c4 + c5 + c6) / 3)) # 我的总成绩是039,平均成绩为13.00。
2. f-字符串
print(f'...{变量}...')
# f{'字符串'}
print(f'我的名字是{my_name},今年{my_age}岁') # 我的名字是Qingxue,今年25岁
3. 结束符
end 作为 print 函数的第2个参数,可以使用 end 指定的字符串替换 print 输出结尾的换行符。
print('abc')
print('def')
'''
abc
def
'''# end 符
print('abc', end='')
print('def')
'''
abcdef
'''
七、常用的数据类型转换函数
转换数据类型常用的函数:
- int()
- float()
- str()
- list()
- tuple()
- eval()
1. 字符串转整数
使用 int 函数可以将数字字符串转为整数。
# 字符串转整数
a = '1234'
b = int(a)print(a, type(a)) # 1234 <class 'str'>
print(b, type(b)) # 1234 <class 'int'># b = int('1234abcd') # ValueError: invalid literal for int() with base 10: '1234abcd'
2. 字符串转浮点数
使用 float 函数可以将数字字符串转为浮点数。
# 字符串转浮点数
d = float('1.23')
print(d) # 1.23
# d = float('1.23abc') # alueError: could not convert string to float: '1.23abc'
3. 执行表达式——eval 函数
eval 函数可以执行表达式字符串。