1.创建虚拟环境与打开虚拟环境
1.新建文件夹,打开命令行输入cmd,黑窗口输入Python -m venv 文件名创建虚拟环境。
2.打开黑窗口输入workon,在输入mk virtualenv 虚拟环境名,在Python文件打开设置进入interpreter选择新创建的虚拟环境
2.with open语句
1.自动关闭文件: 使用with open语句可以确保在操作结束后自动关闭文件。在代码块执行完毕后,无论是正常执行还是发生异常,文件都会被正确关闭。这样可以避免因为忘记关闭文件而导致资源泄漏的问题。
2.简洁和优雅: with open语句的语法简洁明了,使得代码更加清晰和易读。它可以将文件操作的相关代码块封装在一个作用域内,提高了代码的可维护性。
3.递归
特点:
一个函数内部调用自己,函数内部可以调用其他函数,当然在函数内部也可以调用自己。
代码特点:
1. 函数内部的代码是相同的,只是针对参数不同,处理的结果不同
2. 当参数满足一个条件时,函数不再执行。这个非常重要,通常被称为递归的出口,否则会出现死循环
4.隐式递归
隐式递归是一种递归算法的实现方式,期中递归调用并没有明确地出现在代码中,而是通过函数或方法内部的循环来隐式地实现递归。
5.堆和栈是在计算机内存中用于存储数据的两种不同的区域,它们有以下几个方面的区别
1. 分配方式:堆是由程序员手动管理的,需要显式地进行内存分配和释放,以便存储动态分配的数据。栈是自动分配和释放的,数据存储在栈上以支持函数调用和局部变量的使用。
2. 内存管理:在堆中,程序员需要手动分配内存,并负责释放不再使用的内存。而栈有一个管理机制,它会自动分配和释放内存,不需要手动操作。
3. 空间大小:堆的空间大小通常比较大,取决于操作系统和计算机硬件的限制。栈的空间相对较小,大小通常是固定的,取决于编译器或操作系统的限制。
4. 分配速度:堆空间的分配速度相对较慢,因为需要搜索合适的内存块,以满足动态分配的需求。栈的分配速度相对较快,因为只需要移动栈指针来分配内存。
5. 存储数据类型:堆可以存储各种数据类型,包括基本类型和自定义类型。而栈主要存储局部变量和函数调用的上下文信息,如栈帧和返回地址。
6. 存在时间:堆上分配的内存可能会在程序的整个生命周期内存在,直到程序员显式释放它。栈上分配的内存只在函数调用期间存在,函数返回后会自动释放。
7. 后果:当堆中的内存分配不当或未释放时,可能会导致内存泄漏,造成程序性能下降或崩溃。栈上分配的内存不需要手动释放,避免了内存泄漏的风险。
总之,堆和栈在内存分配方式、内存管理、空间大小、分配速度、存储数据类型和存在时间等方面有所区别。了解它们的区别可以帮助程序员更有效地管理和使用内存资源。
6.文件操作
打开文件的模式有:
r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
w,只写模式【不可读;不存在则创建;存在则清空内容】
x, 只写模式【不可读;不存在则创建,存在则报错】
a, 追加模式【可读; 不存在则创建;存在则只追加内容】
"+" 表示可以同时读写某个文件
r+, 读写【可读,可写】
w+,写读【可读,可写】
x+ ,写读【可读,可写】
a+, 写读【可读,可写】
"b"表示以字节的方式操作
rb 或 r+b
wb 或 w+b
xb 或 w+b
ab 或 a+b
7. 数据持久化
数据持久化就是指将数据以文件的形式保存到磁盘中。
常见的数据持久化工具:数据库文件(.db、.sqlite)、json文件(.json)、excel文件、csv文件、txt文件、plist文件等
8.文件和文件夹的操作
os.函数名
rename(目标文件名,新文件名):重命名
remove(目标文件名):删除
mkdir(文件夹名字)创建文件夹
rmdir(文件夹名字)删除文件夹
getcwd()获取当前目录
chdir(目录)改变默认目录
listdir(目录)获取目录列表