1.创建虚拟环境:
新建文件夹,打开命令行输入cmd,黑窗口输入Python -m venv 文件名创建虚拟环境。
创建好之后要启动虚拟环境:
进入虚拟环境里面在scripts目录下cmd进入黑窗口,再打activate回车就启动了。
2.在Python中,使用with open语句进行文件操作的好处:
1.自动关闭文件: 使用with open语句可以确保在操作结束后自动关闭文件。在代码块执行完毕后,无论是正常执行还是发生异常,文件都会被正确关闭。这样可以避免因为忘记关闭文件而导致资源泄漏的问题。
2.简洁和优雅: with open语句的语法简洁明了,使得代码更加清晰和易读。它可以将文件操作的相关代码块封装在一个作用域内,提高了代码的可维护性。
总之,使用 with open 语句是一种推荐的做法,可以确保文件操作的安全性和简洁性。
3.什么是递归函数:
递归指一个函数在它的函数体内调用它自身,执行递归函数将反复调用其自身,每调用一次就进入新的一层,递归函数必须有结束条件
当函数在一直递推,知道遇到墙厚返回,这个墙就是结束条件
所以递归要有两个要素,结束条件和递推关系
递归有两个基本要素:
边界条件:确定递归到何时终止,也称为递归出口
递归模式:大问题是如何分解成小问题的,也成为递归体。递归函数也只有具备了这两个要素,才有在有限计算后得出结果
4.递归函数的限制条件:
基本情况(递归终止条件):递归函数必须定义一个基本情况,当满足该条件时,递归停止,返回一个明确的结果。如果没有正确定义基本情况,递归函数可能会陷入无限递归的循环中。
递归调用的规模减小:递归函数必须通过每次调用自身来解决一个规模更小的子问题,否则递归没有意义。这样,通过不断缩小规模,递归函数可以最终达到基本情况。
递归深度限制:递归函数的递归深度是指递归调用的层数。每一层的递归调用都对应着一个栈帧的创建,如果递归深度过大,可能会导致栈溢出的问题。因此,需要注意控制递归深度,避免出现栈溢出的情况。
合适的问题类型:递归函数适用于可以通过将问题分解为更小的子问题来解决的问题。不是所有的问题都适合使用递归函数,有些问题可能更适合使用迭代或其他方法来解决。
5.堆和栈是在计算机内存中用于存储数据的两种不同的区域,它们有以下几个方面的区别:
1. 分配方式:堆是由程序员手动管理的,需要显式地进行内存分配和释放,以便存储动态分配的数据。栈是自动分配和释放的,数据存储在栈上以支持函数调用和局部变量的使用。
2. 内存管理:在堆中,程序员需要手动分配内存,并负责释放不再使用的内存。而栈有一个管理机制,它会自动分配和释放内存,不需要手动操作。
3. 空间大小:堆的空间大小通常比较大,取决于操作系统和计算机硬件的限制。栈的空间相对较小,大小通常是固定的,取决于编译器或操作系统的限制。
4. 分配速度:堆空间的分配速度相对较慢,因为需要搜索合适的内存块,以满足动态分配的需求。栈的分配速度相对较快,因为只需要移动栈指针来分配内存。
5. 存储数据类型:堆可以存储各种数据类型,包括基本类型和自定义类型。而栈主要存储局部变量和函数调用的上下文信息,如栈帧和返回地址。
6. 存在时间:堆上分配的内存可能会在程序的整个生命周期内存在,直到程序员显式释放它。栈上分配的内存只在函数调用期间存在,函数返回后会自动释放。
7. 后果:当堆中的内存分配不当或未释放时,可能会导致内存泄漏,造成程序性能下降或崩溃。栈上分配的内存不需要手动释放,避免了内存泄漏的风险。
6.什么是隐式递归:
隐式递归是一种递归算法的实现方式,其中递归调用并没有明确地出现在代码中,而是通过函数或方法内部的循环来隐式地实现递归。
在隐式递归中,函数或方法通过不断迭代自身来实现递归调用,而不是显式地使用递归关键字或语句。这样做的好处是避免了递归调用带来的函数调用开销和堆栈空间的使用,使得算法更加高效一个常见的示例是使用循环来计算阶乘。而不是使用传统的递归调用方式,我们可以使用一个循环来迭代地计算乘积。这种方式被称为隐式递归。
7.python中open的方法:
file:要打开的文件的路径(字符串类型),可以是相对路径或绝对路径。
mode:可选参数,指定文件的打开模式。默认值为'r',表示以只读方式打开文件。常用的模式有:
'r':只读模式
'w':写入模式,会覆盖原有文件内容
'x':创建写入模式,如果文件已存在则会引发错误
'a':追加写入模式,在文件末尾添加内容
'b':二进制模式,用于处理二进制文件
't':文本模式,用于处理文本文件(默认值)
8.递归函数写法:
def func(n):
print(n)
func(n+1)
func(1)
# 我们也可以自己设置递归次数。
import sys
sys.setrecursionlimit(100000)
def func(n):
print(n)
func(n + 1)
func(1)
9.对文件进行操作,读取出所有文件:
import os
def traverse_directory(directory):
for dirpath, dirnames, filenames in os.walk(directory):
for filename in filenames:
file_path = os.path.join(dirpath, filename)
print(file_path)
# 遍历目录树并打印文件路径
directory_to_traverse = r"D:\P10\kaoshi"
traverse_directory(directory_to_traverse)
10.对文件进行操作,读取出文件的数量和目录的数量:
import os
def count_files_and_dirs(directory):
file_count = 0
dir_count = 0
for root, dirs, files in os.walk(directory):
dir_count += len(dirs)
file_count += len(files)
return file_count, dir_count
# 指定目录路径
directory_path = r'D:\P10\kaoshi'
# 统计文件和目录数量
file_count, dir_count = count_files_and_dirs(directory_path)
print(f'目录中的文件数量:{file_count}')
print(f'目录中的目录数量:{dir_count}')
11.免费学习python的基础知识:
https://www.liaoxuefeng.com/wiki/1016959663602400 廖雪峰python官网
12.免费教程,题库,python基础:
Python 基础教程 | 菜鸟教程 (runoob.com)