python 的基本语法
1 程序基本结构 2 变量与动态数据类型 3 基本数据结构(数字、集合、字符串、列表、元组和字典)
基本程序结构
1 缩进表示代码块 2 代码注释 3 语句续行 4 语句分隔 5 关键字大小写
代码注释 有:1 单行注释 # 后开始注释内容 2 三个单引号或双引号
语句续行 有:1 \ + enter (\后面不能有任何符号,包括空格和注释)
2 使用括号,如 (), [], {} 括号内容可分多行书写,括号中的空白和换行符都会被忽略
语句分隔 分号分隔语句,从而将多行语句写在同一行
基本输出
输出多个对象 print(123,'abc','45')
输出指定分隔符 print(123,'abc','45',spe='#') #指定用“#”作为输出分隔符
输出指定结尾 print('price',end='=');print(100)
输出到文件
file_1 = open('data.txt','w') # 打开文件 print(123,'abc',45,'book',file=file_1) #用file参数指定输出到文件 file_1.close() print(open('data.txt').read())
数据类型
数字
二进制 0b或0B开头 八进制 0o或0O开头 十六进制 0x或0X开头
内置函数 bin() 求二进制数 oct() 求八进制数 hex 求十六进制数
int函数 将一个字符串按指定进制转换为整数 例 int('111',2) 按二进制转换
查看函数数据类型 type(123)
复数常量 complex(实部,虚部) complex(2,3) = (2+3j)
运算
1 计算的优先级 2 计算中的默认数据类型转换 3 真除法和floor除法 4 求余数 5 位运算
重点提及3和5
真除法和floor除法 4/2 = 2.0 为真除法 "//"称为floor除法 (x//y)结果为不大于 (x/y)的最大整数
x = 4 y = 2 true_division = x / y # 真除法 floor_division = x // y # floor除法
print("真除法结果:", true_division) # 输出 2.0 print("floor除法结果:", floor_division) # 输出 2
位运算 ~, &, ^, <<, >> 均为位运算符
位运算
在Python中,位运算是对整数的二进制位进行操作的一种运算方式。以下是常见的位运算符及其功能:
-
~
(按位取反):对一个数的每个二进制位取反,0 变为 1,1 变为 0。 -
&
(按位与):对两个数的每个对应位执行与操作,只有两个位都为 1 时结果才为 1。 -
|
(按位或):对两个数的每个对应位执行或操作,只要两个位中有一个为 1 结果就为 1。 -
^
(按位异或):对两个数的每个对应位执行异或操作,相同为0,不同为1。 -
<<
(左移):将一个数的二进制位向左移动指定的位数,右侧空出的位用0填充。 -
>>
(右移):将一个数的二进制位向右移动指定的位数,左侧空出的位根据原来的符号位填充。
a = 5 b = 3 bitwise_not = ~a bitwise_and = a & b bitwise_xor = a ^ b left_shift = a << 1 right_shift = a >> 1 print("按位取反:", bitwise_not) # 输出 -6 print("按位与:", bitwise_and) # 输出 1 print("按位异或:", bitwise_xor) # 输出 6 print("左移一位:", left_shift) # 输出 10 print("右移一位:", right_shift) # 输出 2
数学函数
-
abs(x)
:返回一个数的绝对值。 -
bin(x)
:将一个整数转换为二进制字符串。 -
chr(x)
:返回 Unicode 码位为 x 的字符。 -
ord(x)
:返回字符 x 的 Unicode 码位。 -
divmod(x, y)
:返回 x 除以 y 的商和余数,以元组形式返回。 -
eval(expr)
:将字符串表达式作为 Python 代码执行并返回结果。 -
max(iterable)
:返回可迭代对象中的最大值。 -
min(iterable)
:返回可迭代对象中的最小值。 -
pow(x, y)
:返回 x 的 y 次幂。 -
round(x, n)
:将一个数 x 四舍五入到 n 位小数。 -
sum(iterable)
:返回可迭代对象中所有元素的和。
math 模块常量和函数
在 Python 中,math
模块提供了许多数学常量和函数,可以进行更复杂的数学运算。以下是一些常用的数学常量和函数:
-
pi
:圆周率,约等于 3.14159。 -
e
:自然对数的底,约等于 2.71828。 -
inf
:正无穷大。 -
ceil(x)
:返回大于或等于 x 的最小整数。 -
fabs(x)
:返回 x 的绝对值。 -
factorial(x)
:返回 x 的阶乘。 -
floor(x)
:返回小于或等于 x 的最大整数。 -
fmod(x, y)
:返回 x 除以 y 的余数。 -
fsum(iterable)
:返回可迭代对象中所有元素的精确浮点和。 -
gcd(a, b)
:返回 a 和 b 的最大公约数。 -
trunc(x)
:返回 x 的整数部分。 -
exp(x)
:返回 e 的 x 次幂。 -
expm1(x)
:返回 e 的 x 次幂减去 1。
这些常量和函数可以帮助我们在数学计算中处理更复杂的情况。
示例程序和注释
import math # 计算圆的周长 def circle_circumference(radius): return 2 * math.pi * radius # 计算阶乘和 def factorial_sum(n): fact_sum = sum(math.factorial(i) for i in range(1, n+1)) return fact_sum # 输出圆周长和阶乘和 radius = 5 n = 4 print(f"圆的周长:{circle_circumference(radius)}") print(f"1到{n}的阶乘和:{factorial_sum(n)}")
这个示例程序演示了如何使用 math
模块中的常量和函数来计算圆的周长和一定范围内阶乘的和。通过这些函数,我们可以更方便地进行数学运算。
变量与动态数据类型
变量与对象
在 Python 中,变量是用来存储数据的标识符,而对象则是存储在内存中的实际数据。变量通过赋值来引用对象,一个变量可以引用不同类型的对象。
对象的垃圾回收
Python 使用自动内存管理机制来管理对象的生命周期。当一个对象不再被任何变量引用时,Python 的垃圾回收机制会自动将其回收,释放内存空间。
变量命名规则
在 Python 中,变量名必须遵循一定的命名规则:
-
变量名只能包含字母、数字和下划线。
-
变量名不能以数字开头。
-
变量名区分大小写。
-
变量名应具有描述性,能清晰表达变量的用途。
赋值语句
赋值语句用来将一个对象赋给一个变量。在 Python 中,赋值是将变量指向对象的过程,而不是将值复制给变量。
示例:
x = 10
在这个例子中,x
是变量,10
是对象,赋值操作将 x
指向整数对象 10
。
变量的共享引用
在 Python 中,多个变量可以引用同一个对象,这种情况被称为共享引用。当一个对象被多个变量引用时,对这个对象的修改会影响所有引用它的变量。
示例:
a = [1, 2, 3] b = a b.append(4) print(a) # 输出 [1, 2, 3, 4]
在这个例子中,a
和 b
都引用了同一个列表对象,因此对 b
的修改也会影响到 a
。
列表
列表的基本特点
-
列表是 Python 中一种常用的数据结构,用于存储多个元素的有序集合。
-
列表中的元素可以是任意数据类型,包括数字、字符串、列表等。
-
列表是可变的,可以动态添加、删除和修改元素。
列表的基本操作
-
创建列表:
my_list = [1, 2, 3, 4, 5]
-
访问元素:
print(my_list[0]) # 输出第一个元素
-
切片操作:
print(my_list[1:3]) # 输出索引 1 到 2 的元素
-
添加元素:
my_list.append(6) # 在末尾添加元素
-
删除元素:
del my_list[2] # 删除索引为 2 的元素
常用列表方法
-
append(element)
: 在列表末尾添加一个元素。 -
insert(index, element)
: 在指定位置插入一个元素。 -
pop(index)
: 移除并返回指定位置的元素。 -
remove(element)
: 移除列表中第一个匹配的元素。 -
index(element)
: 返回指定元素的索引。 -
count(element)
: 返回指定元素在列表中出现的次数。 -
sort()
: 对列表进行排序。 -
reverse()
: 反转列表中的元素顺序。
这些方法可以帮助你对列表进行各种操作,从添加和删除元素到排序和反转列表。列表是 Python 中非常灵活和常用的数据结构,能够方便地处理多个元素的集合。
元组
元组的特点
-
元组是 Python 中的另一种数据结构,类似于列表,但元组是不可变的,一旦创建就不能修改。
-
元组使用圆括号
()
来表示,元素之间用逗号,
分隔。 -
元组可以包含不同类型的元素,类似于列表。
元组的基本操作
-
创建元组:
my_tuple = (1, 2, 3, 4, 5)
-
访问元素:
print(my_tuple[0]) # 输出第一个元素
-
切片操作:
print(my_tuple[1:3]) # 输出索引 1 到 2 的元素
元组的方法
由于元组是不可变的,因此元组的方法相对较少,常用的方法包括:
-
count(element)
: 返回元组中指定元素出现的次数。 -
index(element)
: 返回元组中指定元素的索引。
由于元组的不可变性,你无法像列表那样对元组进行添加、删除或修改元素的操作。元组通常用于存储不可变的数据集合,如函数返回多个值时常用元组来返回。
字典
字典的特点
-
字典是 Python 中的一种数据结构,用于存储键值对。
-
字典使用大括号
{}
来表示,每个键值对之间用冒号:
分隔,键值对之间用逗号,
分隔。 -
字典中的键必须是唯一的,但值可以重复。
字典的基本操作
-
创建字典:
my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}
-
访问元素:
print(my_dict['name']) # 输出键为 'name' 的值
-
修改元素:
my_dict['age'] = 31 # 修改键为 'age' 的值
-
添加元素:
my_dict['gender'] = 'Female' # 添加新的键值对
-
删除元素:
del my_dict['city'] # 删除键为 'city' 的键值对
字典的基本用法
-
遍历字典:
for key, value in my_dict.items(): print(key, value)
-
检查键是否存在:
if 'age' in my_dict: print('Age is present in the dictionary')
字典视图
字典视图是字典的动态视图,分为三种类型:
-
keys()
方法返回字典中所有的键。 -
values()
方法返回字典中所有的值。 -
items()
方法返回字典中所有的键值对。
字典视图可以用于遍历字典中的键、值或键值对,具有动态性,即当字典发生变化时,视图也会相应改变。
文件
打开和关闭文件
在 Python 中,要操作文件,通常需要执行以下步骤:
-
打开文件:使用
open()
函数来打开一个文件,可以指定打开文件的模式(读取、写入、追加等)。 -
读写文件:对打开的文件对象执行读取或写入操作。
-
关闭文件:使用
close()
方法关闭文件,释放系统资源。
file = open('example.txt', 'r') # 以只读模式打开文件 # 读取或写入操作 file.close() # 关闭文件
读写文本文件
-
读取文本文件:
with open('example.txt', 'r') as file: content = file.read() print(content)
-
写入文本文件:
with open('output.txt', 'w') as file: file.write('Hello, World!')
读写二进制文件
-
读取二进制文件:
with open('binary_file.bin', 'rb') as file: data = file.read() print(data)
-
写入二进制文件:
with open('output.bin', 'wb') as file: file.write(b'\x48\x65\x6c\x6c\x6f') # 写入字节数据
用文件存储 Python 对象
Python 中可以使用 pickle
模块来实现对象的序列化和反序列化,将对象存储到文件或从文件中加载对象。
-
存储对象到文件:
import pickle data = {'name': 'Alice', 'age': 30} with open('data.pickle', 'wb') as file: pickle.dump(data, file)
-
从文件加载对象:
import pickle with open('data.pickle', 'rb') as file: loaded_data = pickle.load(file) print(loaded_data)
使用 pickle
可以方便地将 Python 对象序列化为字节流并存储到文件中,以及从文件中加载对象。
程序流控制
if 分支语句
if 语句基本结构
if
分支语句是编程中常用的控制流结构,用于根据条件选择不同的执行路径。在 Python 中,if
语句的基本结构如下:
if condition: # 如果条件为真,执行这里的代码块
真值测试
在 Python 中,条件表达式的真值测试是根据条件表达式的值来确定其真假。Python 中的一些对象会被视为假,如 False
、None
、0
、空字符串 ''
、空列表 []
、空字典 {}
、空集合 set()
等,其他对象都被视为真。
示例代码:
x = 10 if x: print("x 是真值") else: print("x 是假值")
if……else三元表达法
Python 中的三元表达式是一种简洁的写法,用于根据条件选择不同的值。它的基本结构如下:
value_if_true if condition else value_if_false
这种写法可以在一行代码中根据条件返回不同的值,提高代码的简洁性和可读性。
示例代码:
x = 10 result = "x 是正数" if x > 0 else "x 是负数或零" print(result)
使用三元表达式可以在一些简单的情况下替代传统的 if...else
结构,使代码更加简洁。
for 循环
for 循环基本格式
for
循环是一种常见的循环结构,用于遍历序列中的元素或执行一定次数的循环操作。在 Python 中,for
循环的基本格式如下:
for element in iterable: # 对每个元素执行操作
其中,element
是迭代变量,iterable
是可迭代对象,如列表、元组、字符串等。
多个变量迭代
在 Python 的 for
循环中,可以同时迭代多个变量,这样可以方便地处理多个序列的对应元素。示例代码如下:
fruits = ['apple', 'banana', 'cherry'] colors = ['red', 'yellow', 'purple'] for fruit, color in zip(fruits, colors): print(f"The {fruit} is {color}")
break 和 continue
在循环中,break
和 continue
是常用的控制语句,用于改变循环的执行流程。break
用于提前结束循环,而 continue
则用于跳过当前循环中的剩余代码,直接进入下一次循环。
示例代码:
for i in range(5): if i == 2: break # 当 i 等于 2 时提前结束循环 print(i)
嵌套使用 for 循环
在 Python 中,可以嵌套使用 for
循环,用于处理多维数据结构或多重循环场景。嵌套循环的结构如下:
for i in range(3): for j in range(2): print(f"({i}, {j})")
这种嵌套循环的结构可以处理二维数组、矩阵等复杂数据结构,或者在需要多重循环的情况下使用。
while 循环
while 循环基本结构
while
循环是另一种常见的循环结构,它会在条件为真的情况下重复执行一段代码块。while
循环的基本结构如下:
while condition: # 在条件为真时执行的代码
在每次循环迭代开始时,首先会检查 condition
是否为真。只要条件为真,循环就会继续执行;一旦条件为假,循环就会结束。
示例代码:
count = 0 while count < 5: print(count) count += 1
嵌套使用 while 循环
和 for
循环一样,while
循环也可以嵌套使用。这种嵌套结构可以用于处理复杂的逻辑或需要多层循环的情况。
示例代码:
row = 0 while row < 3: col = 0 while col < 2: print(f"({row}, {col})") col += 1 row += 1
在上面的示例中,外部 while
循环控制行数,内部 while
循环控制列数,这样可以实现对二维数据结构的遍历或处理。
迭代和列表解析
迭代
迭代是一种重要的编程概念,用于遍历数据集中的元素。在 Python 中,我们可以使用循环结构(如 for
循环)来进行迭代操作。通过迭代,我们可以逐个访问数据集中的元素,执行特定操作。
示例代码:
fruits = ["apple", "banana", "cherry"] for fruit in fruits: print(fruit)
列表解析
列表解析是一种简洁而强大的方式来创建列表。它允许我们在一行代码中根据现有的列表快速生成新的列表。列表解析通常比传统的循环方法更简洁和高效。
示例代码:
numbers = [1, 2, 3, 4, 5] squared_numbers = [x**2 for x in numbers] print(squared_numbers)
zip, map, filter
-
zip
:将多个可迭代对象打包成元组的列表。 示例代码:
fruits = ["apple", "banana", "cherry"] colors = ["red", "yellow", "purple"] fruit_colors = list(zip(fruits, colors)) print(fruit_colors)
-
map
:对可迭代对象中的每个元素应用函数。 示例代码:
numbers = [1, 2, 3, 4, 5] squared_numbers = list(map(lambda x: x**2, numbers)) print(squared_numbers)
-
filter
:根据函数的返回值过滤可迭代对象中的元素。 示例代码:
numbers = [1, 2, 3, 4, 5] even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) print(even_numbers)
这些函数提供了一种便捷的方法来处理数据集,使代码更简洁和易读。