Python 基础语法笔记
1. 变量与数据类型
1.1 变量
-
定义: 变量是用来存储数据的命名内存位置。
-
声明与赋值: Python 中声明变量不需要指定类型,直接赋值即可。
name = "张三" # 字符串类型 age = 25 # 整数类型 height = 1.75 # 浮点数类型 is_student = True # 布尔类型 -
变量命名规则:
- 可以包含字母、数字和下划线。
- 不能以数字开头。
- 区分大小写 (
name和Name是不同的变量)。 - 不能使用 Python 关键字 (如
if,for,while等)。
-
动态类型: Python 是一种动态类型语言,这意味着变量的类型可以在运行时改变。
x = 10 print(type(x)) # 输出: <class 'int'> x = "hello" print(type(x)) # 输出: <class 'str'>
1.2 基本数据类型
-
数值类型 (Numeric Types) :
int(整数): 任意大小的整数,例如10,-5,1000000。float(浮点数): 带有小数点的数字,例如3.14,-0.5,2.0。complex(复数): 由实部和虚部组成,例如1 + 2j。
-
布尔类型 (Boolean Type) :
bool: 只有两个值True和False。常用于条件判断。
-
字符串类型 (String Type) :
str: 用单引号 (')、双引号 (") 或三引号 ('''或""") 括起来的文本序列。- 三引号可以用于多行字符串。
s1 = 'Hello' s2 = "World" s3 = """This is a multi-line string."""- 字符串是不可变的 (immutable)。
-
列表类型 (List Type) :
list: 有序、可变 (mutable) 的元素集合,用方括号[]表示。- 可以包含不同类型的元素。
my_list = [1, "apple", 3.14, True] print(my_list[0]) # 访问元素: 1 my_list.append("new_item") # 添加元素 my_list[0] = 100 # 修改元素 -
元组类型 (Tuple Type) :
tuple: 有序、不可变 (immutable) 的元素集合,用圆括号()表示。- 一旦创建,元组中的元素不能被修改。
my_tuple = (1, "banana", 2.71) print(my_tuple[1]) # 访问元素: banana # my_tuple[0] = 10 # 错误: 元组不可修改 -
字典类型 (Dictionary Type) :
dict: 无序、可变 (mutable) 的键值对 (key-value pairs) 集合,用花括号{}表示。- 键 (key) 必须是唯一的且不可变 (通常是字符串、数字或元组)。
my_dict = {"name": "Alice", "age": 30, "city": "New York"} print(my_dict["name"]) # 访问值: Alice my_dict["age"] = 31 # 修改值 my_dict["job"] = "Engineer" # 添加新键值对 -
集合类型 (Set Type) :
set: 无序、不重复 (unique) 元素的集合,用花括号{}表示。- 主要用于成员测试和消除重复元素。
my_set = {1, 2, 3, 2, 1} print(my_set) # 输出: {1, 2, 3} (重复元素被自动移除) my_set.add(4) # 添加元素
2. 运算符
2.1 算术运算符
+(加)-(减)*(乘)/(除,结果为浮点数)%(取模,返回余数)**(幂,例如2 ** 3等于 8)//(整除,返回商的整数部分)
2.2 比较运算符 (关系运算符)
==(等于)!=(不等于)>(大于)<(小于)>=(大于等于)<=(小于等于)- 比较结果为布尔值 (
True或False)。
2.3 逻辑运算符
and(逻辑与): 如果两个操作数都为真,则结果为真。or(逻辑或): 如果至少一个操作数为真,则结果为真。not(逻辑非): 反转操作数的值。
2.4 赋值运算符
=(简单赋值)+=(加法赋值,例如x += 1等同于x = x + 1)-=(减法赋值)*=(乘法赋值)/=(除法赋值)%=(取模赋值)**=(幂赋值)//=(整除赋值)
2.5 成员运算符
-
in: 如果序列中包含指定值,则返回True。 -
not in: 如果序列中不包含指定值,则返回True。fruits = ["apple", "banana", "cherry"] print("apple" in fruits) # True print("grape" not in fruits) # True
2.6 身份运算符
-
is: 判断两个变量是否引用同一个对象 (内存地址)。 -
is not: 判断两个变量是否不引用同一个对象。a = [1, 2] b = [1, 2] c = a print(a is b) # False (a和b是不同的列表对象,尽管内容相同) print(a is c) # True (a和c引用同一个列表对象)
3. 控制流
3.1 条件语句 (if, elif, else)
用于根据条件执行不同的代码块。
score = 85
if score >= 90:
print("优秀")
elif score >= 70:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
3.2 循环语句
-
for循环: 遍历序列 (列表、元组、字符串、字典、集合) 或其他可迭代对象。# 遍历列表 for item in ["apple", "banana", "cherry"]: print(item) # 遍历数字序列 (使用 range()) for i in range(5): # 从 0 到 4 print(i) for i in range(1, 6): # 从 1 到 5 print(i) for i in range(0, 10, 2): # 从 0 到 8,步长为 2 print(i) -
while循环: 当给定条件为真时重复执行代码块。count = 0 while count < 5: print(f"Count is: {count}") count += 1
3.3 循环控制语句
-
break: 立即终止当前循环,跳出循环体。for i in range(10): if i == 5: break print(i) # 输出 0, 1, 2, 3, 4 -
continue: 跳过当前循环的剩余部分,进入下一次迭代。for i in range(5): if i == 2: continue print(i) # 输出 0, 1, 3, 4 -
pass: 占位符,表示什么都不做。当语法要求有语句但你不想执行任何操作时使用。if True: pass # 以后再添加代码
4. 函数
4.1 定义函数
使用 def 关键字定义函数。
def greet(name):
"""
这个函数用于向指定的人打招呼。
"""
print(f"你好, {name}!")
greet("小明") # 调用函数
4.2 函数参数
-
位置参数: 按照参数的顺序传递。
def add(a, b): return a + b print(add(5, 3)) # a=5, b=3 -
关键字参数: 通过参数名传递,可以不按顺序。
print(add(b=3, a=5)) -
默认参数: 为参数设置默认值,调用时可以不传。
def power(base, exp=2): return base ** exp print(power(3)) # 3的2次方,输出 9 print(power(3, 3)) # 3的3次方,输出 27 -
可变参数 (
*args) : 接收任意数量的位置参数,作为元组。def sum_all(*numbers): total = 0 for num in numbers: total += num return total print(sum_all(1, 2, 3)) # 输出 6 print(sum_all(10, 20, 30, 40)) # 输出 100 -
关键字可变参数 (
**kwargs) : 接收任意数量的关键字参数,作为字典。def print_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") print_info(name="Alice", age=30, city="London")
4.3 返回值
使用 return 语句返回函数执行结果。如果没有 return 语句,函数默认返回 None。
def multiply(x, y):
return x * y
result = multiply(4, 5)
print(result) # 输出 20
4.4 匿名函数 (Lambda 表达式)
用于创建小型、一次性使用的函数。
add_one = lambda x: x + 1
print(add_one(5)) # 输出 6
# 结合高阶函数使用
numbers = [1, 2, 3, 4]
squared_numbers = list(map(lambda x: x * x, numbers))
print(squared_numbers) # 输出 [1, 4, 9, 16]
5. 模块与包
5.1 模块 (Module)
-
定义: 一个包含 Python 代码的文件 (以
.py结尾),可以定义函数、类和变量。 -
导入模块:
import math # 导入整个 math 模块 print(math.pi) from datetime import date # 从 datetime 模块导入 date 对象 today = date.today() print(today) import random as rnd # 导入模块并使用别名 print(rnd.randint(1, 10)) from collections import Counter as Cnt # 导入特定对象并使用别名 my_list = [1, 2, 2, 3, 3, 3] count = Cnt(my_list) print(count)
5.2 包 (Package)
-
定义: 组织模块的方式,是一个包含多个模块和其他子包的目录。
-
包目录通常包含一个特殊的
__init__.py文件 (Python 3.3+ 之后可以省略,但建议保留)。 -
导入包中的模块: 假设有以下目录结构:
my_project/ ├── main.py └── my_package/ ├── __init__.py └── module_a.py └── module_b.py在
module_a.py中:def func_a(): print("这是 module_a 中的函数")在
main.py中导入module_a:from my_package import module_a module_a.func_a() # 或者 from my_package.module_a import func_a func_a()
6. 注释
-
单行注释: 使用
#符号。# 这是一个单行注释 x = 10 # 变量 x 的赋值 -
多行注释 (文档字符串) : 使用三引号
'''...'''或"""..."""。通常用于函数、类或模块的文档说明。def my_function(): """ 这是一个多行注释,也称为文档字符串。 它解释了函数的功能。 """ print("Hello from function!")
7. 输入与输出
7.1 输出 (print())
-
用于在控制台打印信息。
-
可以打印变量、字符串、数字等。
-
sep参数: 指定多个参数之间的分隔符 (默认为空格)。 -
end参数: 指定打印结束后的字符 (默认为换行符\n)。 pyprint("Hello, World!") name = "Python" print("学习", name, "真有趣!", sep="-", end="!!!\n")
7.2 输入 (input())
-
用于从用户那里获取输入。
-
input()函数总是返回一个字符串。如果需要数字,需要进行类型转换。user_name = input("请输入你的名字: ") print(f"你好, {user_name}!") age_str = input("请输入你的年龄: ") age = int(age_str) # 将字符串转换为整数 print(f"你的年龄是 {age} 岁。")