Python大纲
1. 基础
环境搭建与基本语法
2.数据结构
字符串、列表、元组、集合、字典
定义、操作、方法、生成式
2.1 Python内置数据结构
分为三种类型:
序列(Sequence):字符串、列表(可变)、元组
集合(Set):可变/不可变集合
映射(Mapping):字典
2.1.1 列表 List
有序、可变
# 创建
lst = [1, 2, 'list', 1.414]
lstfruit = ['apple', 'banana']
# 添加
lst.append('hello')
lst.extend(lstfruit)
lst.insert(1, 0)
lst.insert(-1, 999)
# 删除
lst.remove(0)
lst.remove(lst[0])
lst.pop(2)
del lst[0:2]
lst.clear()
# 修改
lst[0] = ('orange')
lst2 = lst.copy()
# 访问
print(lst[3])
print(lst.index('list'))
# 切片
print(lst[1:4])
# 反转
lst.reverse()
lst[::-1]
# 排序
lst.sort()
2.1.2 元组 Tuple
有序、不可变
# 创建
tup = (1, 2, 3, 'Hello')
# 访问
print(tup[3])
# 切片
print(tup[:2])
# 反转
tup[::-1]
# 解包
A, B, C, D = tup # 将元组中个元素分别赋值给对应变量
2.1.3 集合 Set
无序、可变、唯一(集合中的元素唯一不可重复)
# 创建
set1 = {1, 2, 4, 'Hello'}
set_f = frozenset([3,2,3,‘one’,frozenset([1,2]),True])
# 添加
set1.add(6)
# 删除
set1.remove(2)
set1.discard(2)
# 集合操作
set2 = {4, 6, 9}
set1.union(set2) # 并集
set1.intersection(set2) # 交集
set1.difference(set2) # 差集
set1.symmetric_difference(set2) # 异或
set1.issuperset(set2) # 判断set1是否是set2的超集
2.1.4 字典 Dictionary
无序、可变、键值对
# 创建
dic = {'name': 'Alice', 'age': 25, 'language': 'Python'}
# 添加
dic['country'] = 'Wonderland'
dic.update({'weight': 50, 'sexual': 'female'})
# 删除
del dic['language']
dic.pop('sexual')
dic.clear()
# 修改
dic['age'] = 26
# 访问
print(dic['name'])
# 返回所有键/值
dic.keys()
dic.values()
# 返回一个包含所有(键、值)元组的列表
dic.items()
# 判断键是否存在
dic.has_key('name')
# 遍历
for key, value in dic.items():
print(f"{key}: {value}")
3.函数与模块
3.1 函数
3.1.1 函数参数
###############参数缺省###############
def addnum(a = 0, b = 1):
c = a + b
print c
if __name__ == '__main__':
addnum(2, 4) # 参数缺省,可以设置参数默认值,带有默认值的参数需放在参数列表后面
###############不定长参数###############
# *args会存放所有未命名的变量参数,为元组
# **kwargs会存放命名键值对参数,为字典
def func(a, b, *args, **kwargs):
print("a=%d" % a)
print("b=%d" % b)
print("args:")
print(args)
print("kwargs:")
for key, value in kwargs.items():
print("key=%s" % value)
if __name__ == '__main__':
q = 99
func(1, 2, 3, 4, 5, q, m=6, n=7, p=8)
tips
缺省参数放在*args后面;**kwargs放在最后面
def func(a, *args, b = 11, c = 22, **kwargs):
print(a)
print(b)
print(c)
print(args)
print(kwargs)
if __name__ == '__main__':
func(1, 2, 3, 4, 5, b = 999, c = 666, m=6, n=7, p=8)
3.1.2 返回值与全局/局部变量
def func(a, b):
div = a / b
plus = a + b
return div, plus # 默认返回元组;return后面可以是列表、字典等数据类型
# 函数内部默认不能修改全局变量
a = 1
def func1():
a = 2
print(a)
def func2():
print(a)
if __name__ == '__main__':
func1()
func2()
####输出结果:2 1
# 使用函数修改全局变量
a = 1
def func1():
global a
print("a0= %d" % a)
a = 2
print("a1= %d" % a)
def func2():
print("a2= %d" % a)
if __name__ == '__main__':
func1()
func2()
####输出结果a0= 1;a1= 2;a2= 2
3.1.3 拆包、交换变量
# 对返回的数据直接拆包
def get_my_info():
height = 170
weight = 110
age = 23
return height, weight, age
if __name__ == '__main__':
my_height, my_weight, my_age = get_my_info() # 左右个数须一致
print(my_height)
print(my_weight)
print(my_age)
# 交换变量
a = 1
b = 2
a = a + b
b = a - b
a = a - b
c, d = 4, 5
c, d = d, c
3.1.4 引用
def test1(b): # 变量b一定是一个局部变量,就看它指向的是谁?可变还是不可变
# b += b # += 是直接对b指向的空间进行修改,而不是让b指向一个新的
b = b+b # xx = xx+yyy 先把=号右边的结果计算出来,然后让b指向这个新的地方,不管原来b指向谁
print(b) # 现在b一定指向这个新的地方
print(id(b))
# a = [11, 22]
a = 100
test1(a)
#测试一下
print(a)
print(id(a))
3.2 模块
一个.py文件就可以称之为一个模块(Module)
分类:
内置标准模块(标准库) [ help(‘modules’)查看所有自带模块列表 ]
第三方开源模块 可通过 pip install 联网安装
自定义模块
3.2.1 模块的导入与调用
# 模块1
# mod1.py
num = 20
import mod1
print(mod1.num)
from mod1 import num
print(num)
from mod1 import num as a
print(a)
*和__all__
Python中使用from module_name import *
表示导入模块中的所有内容;
使用from module_name import __all__
限制导入的内容。
# 模块1
# mod2.py
__all__ = ['func1', 'func2']
def func1():
print("func1")
def func2():
print("func2")
def func3():
print("func3")
if __name__ == '__main__;:
func3()
from mod2 import *
func1()
func2()
func3() # 会提示报错Unresolved reference 'func3'
3.2.2 标准库
os:与操作系统交互的功能;如文件和目录操作、环境变量访问等。
sys:对Python解释器和运行时环境的访问与控制。
datetime:包含处理日期和时间的类与函数,包括日期计算、格式化、解析等。
math:提供数学函数和常量;如三角函数、指数函数、对数函数等。
random:用于生成伪随机数的功能,包括随机数生成器、随机样本选择等。
json:用于处理JSON(JavaScript Object Notation)数据的编码、解码和操作。
re:正则表达式的匹配和操作。
csv:用于读写CSV(Comma-Separated Values)格式的文件。
urllib:用于进行URL请求和操作,包括HTTP、FTP等。
sqlite3:提供与SQLite数据库进行交互的功能,包括连接、查询、执行事务等。
collections:提供额外的数据类型,如defaultdict、Counter等,用于数据集合的高效操作。
itertools:提供用于迭代操作的函数,如排列组合、循环迭代等。
logging:用于记录日志信息和调试信息的功能,支持多种日志级别和输出方式。
time:提供与时间相关的功能,如获取当前时间、暂停程序执行等。
socket:用于进行网络通信,包括建立TCP、IP连接、发送和接收数据等。
import os
# 获取当前工作目录
current_dir = os.getcwd()
# 创建新目录
new_dir = "my_directory"
os.mkdir(new_dir)
# 遍历目录中的文件夹和子目录
for root, dirs, files in os.walk(current_dir):
print("当前目录:", root)
print("子目录:", dirs)
print("文件:", files)
from datetime import datetime, timedelta
# 获取当前时间
current_time = datetime.now()
print("当前时间:", current_time)
# 格式化日期时间字符串
formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
print("格式化时间:", formatted_time)
# 计算日期差值
future_date = current_time + timedelta(days=7)
days_diff = (future_date - current_time).days
print("未来日期:", future_date)
print("日期差值(天数):", days_diff)
import random
# 生成随机整数
rand_num = random.randint(1, 10)
print("1-10的随机整数:", rand_num)
# 从列表中随机选择一个元素
lst = ["apple", "banana", "cherry"]
rand_item = random.choice(lst)
print("随机选择元素:", rand_item)
# 打乱列表顺序
random.shuffle(lst)
print("打乱顺序后的列表:", lst)
import math
# 数学常量
print(math.pi)
# 数学函数
print(math.sqrt(16))
print(math.ceil(3.7)) # 向上取整
print(math.floor(3.7)) # 向下取整
print(math.sin(math.pi/2))
print(math.cos(math.pi))
print(math.tan(0))
print(math.log(10)) # 自然对数函数,默认底数为 e
print(math.log10(100))
print(math.degrees(math.pi/2)) # 弧度转角度
print(math.radians(180)) # 角度转弧度
print(math.factorial(5)) # 阶乘
import sys
# 获取命令行参数列表
print(sys.argv) # 输出当前脚本的命令行参数列表
# 获取命令行参数个数
print(len(sys.argv))
# 强制退出程序
# sys.exit() # 程序立即退出
# 获取Python解释器版本信息
print(sys.version) # 输出Python解释器的版本信息字符串
print(sys.version_info) # 输出Python解释器的版本信息元组
# 获取操作系统平台信息
print(sys.platform) # 输出当前操作系统的平台标识符
# 获取模块搜索路径
print(sys.path) # 输出Python解释器搜索模块的路径列表
# 获取模块的引用计数
import math
print(sys.getrefcount(math)) # 输出math模块的引用计数
# 标准输入输出
sys.stdout.write('Hello, World!\n') # 使用后标准输出打印文本
sys.stdin.readline() # 从标准输入读取一行文本
# 执行程序时的警告设置
sys.warnoptions.append('ignore') # 忽略所有警告信息
# 运行时异常处理
try:
1/0
except:
exc_type, exc_value, exc_traceback = sys.exc_info() # 获取当前一场信息
print(exc_type, exc_value)
4.面向对象编程
类与对象;继承与多态;特殊方法
5.文件操作
6.异常处理
7.Python标准库
8.高级主题
迭代器与生成器、装饰器、上下文管理器、多线程与多进程
9.数据库操作
10.Web开发基础
Flask框架、Django框架
11.项目实践
Git版本控制