Python基础入门指南
Python 简介
Python 是一种由 Guido van Rossum 于 1989 年开发的高级、通用、解释型编程语言。它以简洁易读的语法(如使用缩进而非大括号)和丰富的标准库而闻名,被广泛应用于 Web 开发、数据科学、人工智能、自动化脚本、网络爬虫、游戏开发等领域。
学习资源
运算符
| 类型 | 符号 | 说明 | 示例 |
|---|---|---|---|
| 算术运算符 | + |
加法 | 5 + 3 → 8 |
- |
减法 | 5 - 3 → 2 |
|
* |
乘法 | 5 * 3 → 15 |
|
/ |
除法(结果为浮点数) | 5 / 2 → 2.5 |
|
// |
整除(向下取整) | 5 // 2 → 2 |
|
% |
取模(余数) | 5 % 2 → 1 |
|
** |
幂运算 | 2 ** 3 → 8 |
|
| 比较运算符 | == |
等于 | 5 == 5 → True |
!= |
不等于 | 5 != 3 → True |
|
> |
大于 | 5 > 3 → True |
|
< |
小于 | 5 < 3 → False |
|
>= |
大于等于 | 5 >= 5 → True |
|
<= |
小于等于 | 5 <= 3 → False |
|
| 逻辑运算符 | and |
逻辑与 | True and False → False |
or |
逻辑或 | True or False → True |
|
not |
逻辑非 | not True → False |
|
| 位运算符 | & |
按位与 | 5 & 3 → 1 |
| |
按位或 | 5 | 3 → 7 |
|
^ |
按位异或 | 5 ^ 3 → 6 |
|
~ |
按位取反 | ~5 → -6 |
|
<< |
左移 | 5 << 1 → 10 |
|
>> |
右移 | 5 >> 1 → 2 |
|
| 赋值运算符 | = |
基本赋值 | x = 5 |
+= |
加法赋值 | x += 3 等价于 x = x + 3 |
|
-= |
减法赋值 | x -= 3 等价于 x = x - 3 |
|
*= |
乘法赋值 | x *= 3 等价于 x = x * 3 |
|
/= |
除法赋值 | x /= 3 等价于 x = x / 3 |
|
//= |
整除赋值 | x //= 3 等价于 x = x // 3 |
|
%= |
取模赋值 | x %= 3 等价于 x = x % 3 |
|
**= |
幂赋值 | x **= 3 等价于 x = x ** 3 |
|
&= |
按位与赋值 | x &= 3 等价于 x = x & 3 |
|
|= |
按位或赋值 | x |= 3 等价于 x = x | 3 |
|
^= |
按位异或赋值 | x ^= 3 等价于 x = x ^ 3 |
|
<<= |
左移赋值 | x <<= 3 等价于 x = x << 3 |
|
>>= |
右移赋值 | x >>= 3 等价于 x = x >> 3 |
|
| 成员运算符 | in |
判断元素是否存在于序列中 | 'a' in ['a', 'b'] → True |
not in |
判断元素是否不存在于序列中 | 'c' not in ['a', 'b'] → True |
|
| 身份运算符 | is |
判断两个对象是否为同一实例(比较内存地址) | a = [1]; b = a; a is b → True |
is not |
判断两个对象是否不是同一实例 | a = [1]; |
字符串操作
| 操作 | 符号 / 语法 | 说明 | 示例 |
|---|---|---|---|
| 字符串字面量 | '单引号' |
单引号包裹的文本,允许包含双引号 | 'Hello "World"' |
"双引号" |
双引号包裹的文本,允许包含单引号 | "It's a string" |
|
'''三引号''' |
三引号(单 / 双)允许跨多行,常用于文档字符串 | '''Line 1\nLine 2''' |
|
| 字符串拼接 | + |
连接两个字符串 | 'Hello' + ' World' → 'Hello World' |
| 字符串重复 | * |
重复字符串指定次数 | 'a' * 3 → 'aaa' |
| 字符串索引 | [] |
访问字符串中单个字符(0-based) | s = 'abc'; s[0] → 'a' |
| 字符串切片 | [start:end:step] |
截取子字符串,支持负数索引和步长 | s = 'abcde'; s[1:3] → 'bc' |
| 格式化字符串 | f"{}" |
f-string(Python 3.6+),嵌入表达式 | name = 'Alice'; f"Hello, {name}" → 'Hello, Alice' |
| 格式化方法 | str.format() |
传统格式化方法 | "{0} + {1} = {2}".format(1, 2, 3) → '1 + 2 = 3' |
| 字符串替换 | str.replace() |
替换子字符串 | 'apple'.replace('p', 'b') → 'abble' |
| 字符串分割 | str.split() |
按分隔符分割字符串为列表 | 'a,b,c'.split(',') → ['a', 'b', 'c'] |
| 字符串连接 | str.join() |
用指定字符串连接列表元素 | ','.join(['a', 'b', 'c']) → 'a,b,c' |
| 大小写转换 | str.upper() |
转为大写 | 'hello'.upper() → 'HELLO' |
str.lower() |
转为小写 | 'WORLD'.lower() → 'world' |
|
| 去除空白 | str.strip() |
去除字符串首尾空格(或指定字符) | ' abc '.strip() → 'abc' |
| 查找子串 | str.find() |
查找子串位置,不存在返回 – 1 | 'apple'.find('p') → 1 |
str.index() |
查找子串位置,不存在抛出异常 | 'apple'.index('p') → 1 |
|
| 判断子串 | in |
判断子串是否存在 | 'p' in 'apple' → True |
| 字符串长度 | len() |
返回字符串字符数 | len('abc') → |
特殊符号
| 符号 | 名称 | 用途 | 示例 |
|---|---|---|---|
# |
注释符号 | 用于添加单行注释 | # 这是一个注释 |
''' 或 """ |
多行注释 / 文档字符串 | 用于添加多行注释或函数 / 类的文档字符串 | '''这是一个多行注释''' |
, |
逗号 | 分隔函数参数、元组元素等 | a, b = 1, 2 |
: |
冒号 | 用于分隔切片、定义代码块(如 if/for/def 后) | if True: print('a') |
; |
分号 | 用于在同一行分隔多条语句(不推荐频繁使用) | a = 1; b = 2 |
() |
圆括号 | 用于函数调用、元组、表达式分组等 | (1, 2); func() |
[] |
方括号 | 用于列表、索引、切片等 | [1, 2]; my_list[0] |
{} |
花括号 | 用于字典、集合 | {'a': 1}; {1, 2} |
@ |
at 符号 | 用于装饰器(Python 3.8+) | @staticmethod def func(): pass |
\ |
反斜杠 | 用于转义字符或行延续 | 'It\'s'; print('hello \\\nworld') |
r'...' |
原始字符串 | 忽略转义字符 | r'C:\path\to\file' |
f'...' |
f-string | 格式化字符串(Python 3.6+) | name = 'Alice'; f'Hello, {name}' |
* |
星号 | 用于解包(如函数参数展开)、可变参数、乘法等 | def func(*args); [*[1,2], 3] |
** |
双星号 | 用于字典解包、幂运算、关键字参数等 | def func(**kwargs); {'a': 1, **{'b': 2}} |
关键字( keyword)
| 作用 | 示例 | |
|---|---|---|
| async | 定义异步函数或异步生成器 | async def fetch_data(): await asyncio.sleep(1) |
| await | 等待异步操作完成(只能在 async 函数中使用) |
result = await async_function() |
| match | 结构模式匹配(替代复杂的 if-elif 链) |
match x: case 0: print("零") |
| case | match 语句的分支条件 |
case [x, y]: print(f"列表: {x}, {y}") |
1. 注释(#)和换行
给代码添加说明:
避免注释冗余
#1. 这是单行注释
2.用'''...'''的格式表示多行内容,...是提示符不是代码的一部分,超过了一行,可以用三引号、圆括号、方括号或者大括号扩展新一行,使用"""或'''包裹多行文本,字符串中的换行符会被保留(输出为多行)。可包含单引号和双引号,无需转义。
"""
这是多行注释
可以写很多内容
"""
3.圆括号 () 作用:将表达式用圆括号包裹,允许在括号内自由换行。
特点:常用于函数参数、元组、复杂表达式等。换行处无需任何符号(Python 自动延续)。
result = (1 + 2 + 3 +
4 + 5 + 6)
print(result) # 输出21
4.方括号 [] 作用:在列表、字典、集合等字面量中自由换行。
特点:代码更易读,尤其适合包含大量元素的容器。
my_list = [
"apple",
"banana",
"cherry"
]
my_dict = {
"name": "Alice",
"age": 30,
"city": "New York"
}
5. 大括号 {} 作用:与方括号类似,用于字典和集合的多行定义。
my_set = {
"apple",
"banana",
"cherry"
}
person = {
"name": "Bob",
"age": 25,
"hobbies": ["reading", "swimming"]
}
5. 显式行延续符 \ 作用:当无法使用括号时,使用反斜杠\强制换行。
total = 1 + 2 + 3 + \
4 + 5 + 6
print(total) # 输出21
注意:
\后不能有任何字符(包括空格),否则会报错。
不推荐频繁使用,优先考虑括号方式。
2. 变量和数据类型
变量就像 “盒子”,可以存放不同类型的数据:
常量(Constant) 是指在程序运行过程中其值不会发生变化的量。
变量(Variable) 则是指在程序运行过程中其值可以改变的标识符。
变量由一个或多个字符组成的名称构成,并通过赋值运算符(即等号 =)赋予一个具体的值。
- 变量名不能包含空格,可使用下划线
_代替,如my_variable。 - 变量名只能由字母、数字和下划线组成。
- 变量名不能以数字开头;以下划线开头的变量有特殊含义,建议暂时避免使用。
- 变量名不能是 Python 的关键字(保留字)。
x = 10 # 整数(int)
name = "Alice" # 字符串(str)
is_student = True # 布尔值(bool)
height = 1.75 # 浮点数(float)
3. 条件语句(if/elif/else)
根据条件选择执行不同的代码:
age = 18
if age >= 18:
print("成年人")
else:
print("未成年人")
4. 循环(for/while)
重复执行代码:
# for 循环:遍历列表
fruits = ["苹果", "香蕉", "橘子"]
for fruit in fruits:
print(f"我喜欢吃{fruit}")
# while 循环:条件满足时继续
count = 0
while count < 3:
print(f"计数: {count}")
count += 1
5. 函数(def)
封装可复用的代码块:
def add(a, b):
return a + b
result = add(3, 5) # 调用函数
print(result) # 输出: 8
6. 列表(List)
存储多个值的有序集合:
numbers = [1, 2, 3, 4, 5]
names = ["Alice", "Bob", "Charlie"]
print(numbers[0]) # 输出: 1(索引从0开始)
names.append("David") # 添加元素
print(names) # 输出: ['Alice', 'Bob', 'Charlie', 'David']
7. 字典(Dict)
用键值对存储数据:
person = {
"name": "Alice",
"age": 30,
"city": "北京"
}
print(person["name"]) # 输出: Alice
person["age"] = 31 # 修改值
print(person) # 输出: {'name': 'Alice', 'age': 31, 'city': '北京'}
8. 文件操作(with/open)
读取或写入文件:
# 写入文件
with open("test.txt", "w") as f:
f.write("Hello, World!\n")
# 读取文件
with open("test.txt", "r") as f:
content = f.read()
print(content) # 输出: Hello, World!
9. 异常处理(try/except)
捕获和处理错误:
try:
result = 10 / 0 # 会触发除零错误
except ZeroDivisionError:
print("不能除以零!")
10. 类和对象(class)
创建自定义数据类型:
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
print(f"{self.name} 汪汪叫!")
my_dog = Dog("小白", 3) # 创建对象
my_dog.bark() # 输出: 小白 汪汪叫!
11. 布尔逻辑(and/or/not)
组合条件判断:
x = 5
y = 10
if x > 0 and y < 20:
print("两个条件都满足")
if x > 10 or y > 5:
print("至少一个条件满足")
if not x > 10:
print("x 不大于 10")
12. 空语句(pass)
占位符,不执行任何操作:
def empty_function():
pass # 暂时不写代码,用 pass 占位
if True:
pass # 占位
13.海象运算符
用途:在表达式中赋值,减少重复计算。
示例:
# 传统写法
data = input("输入数字:")
if len(data) > 3:
print(f"长度为 {len(data)},太长了!") # 重复调用 len()
# 海象运算符
if (n := len(data)) > 3: # 赋值同时判断
print(f"长度为 {n},太长了!")
14.结构模式匹配(match-case)
用途:替代复杂的 if-elif,支持模式解构。
示例:
def handle_result(result):
match result:
case {"code": 200, "data": data}: # 匹配字典结构
print(f"成功: {data}")
case {"code": 404}:
print("资源不存在")
case _: # 类似 default
print("未知结果")
15. 异步编程升级
async/await
用途:高效处理 I/O 密集型任务(如网络请求)。
示例:
import asyncio
async def fetch(url):
await asyncio.sleep(1) # 模拟网络请求
return f"数据来自 {url}"
async def main():
results = await asyncio.gather(
fetch("https://api1.com"),
fetch("https://api2.com")
)
print(results) # 并行执行,总耗时约 1 秒
asyncio.run(main())
16.依赖管理(PDM/Poetry)
用途:替代 pip + requirements.txt。
示例(PDM):
# 创建项目
pdm init
# 添加依赖
pdm add requests
17.数据类(Data Classes)
用途:自动生成类的 __init__、__repr__ 等方法。
示例:
from dataclasses import dataclass
@dataclass
class Point:
x: float
y: float
z: float = 0 # 默认值
p = Point(1, 2)
print(p) # 输出: Point(x=1, y=2, z=0)
作者:LILR_