1.python语言的优点及缺点。
优点:
(1)语法简洁易读
代码风格清晰,接近自然语言。减少了冗余符号和复杂结构,更容易上手。例如:
for i in range(5):
print(i)
比 C/C++、Java 更简洁。
(2)跨平台
Python 可以在 Windows、Linux、macOS 上运行。无需修改代码,只要有 Python 解释器即可。
(3)丰富的标准库和第三方库
标准库涵盖文件操作、网络、正则、数学、并发等。
第三方库几乎覆盖所有领域:
数据分析:NumPy, Pandas
机器学习/深度学习:scikit-learn, TensorFlow, PyTorch
Web 开发:Django, Flask
图像处理:OpenCV, Pillow
(4)开发效率高
动态类型和自动内存管理(垃圾回收),不需要编译,修改后直接运行即可。特别适合快速原型开发和脚本任务。
(5)强大的社区和生态
Python 社区活跃,文档和教程丰富。可以方便地找到解决方案和库支持。
(6)支持多种编程范式
面向对象、函数式、过程式都支持。适合不同风格的开发需求。
缺点:
(1)运行速度较慢
Python 是 解释型语言,对比 C/C++ 或 Java 性能低。对性能敏感的场景,需要用 C/C++ 扩展或通过 NumPy、Cython、PyTorch 等库加速。
(2)动态类型可能出错
动态类型虽然方便,但在大型项目中容易出现类型错误。需要借助 mypy 或 IDE 的类型检查来减少错误。
(3)移动端支持不足
Python 在 Android/iOS 上的支持有限,不适合移动端应用开发。
(4)内存消耗较高
Python 对象开销大,使用大量数据时内存占用比 C/C++ 高。不适合对内存敏感的嵌入式或系统级开发。
(5)GIL 限制多线程
Python 的 全局解释器锁(GIL) 会限制 CPU 多线程效率。多线程计算密集型任务无法充分利用多核 CPU,需要用多进程或其他语言实现。
2.python中为什么要这样写?if __ name __ == "__ main __":main()
这个写法在模块化开发和脚本复用中非常重要,首先每个 Python 文件都是一个模块(module)。在脚本复用时Python 会为每个模块生成一个内置变量 __ name __ 。当我们直接执行脚本时: __ name __ 会被赋值=" __ main __ ",此时我们会运行main中的主体函数。如果其他模块导入:__ name __ 会被赋值当前模块的名字 (文件名去掉 .py),此时我们不会运行main中的主体函数。
作用
1.避免导入副作用
不希望导入模块时执行测试代码或脚本逻辑,只执行函数/类定义。
2.方便模块复用
同一个文件既可以作为脚本运行,也可以作为模块被导入。
3.明确入口点
对大型项目来说,if __ name __ == "__ main __": 定义了程序的“入口点”,结构清晰。
3.linux操作系统常用命令
1.文件和目录操作
pwd:显示当前文件夹路径
ls:列出当前文件夹下的文件和文件夹、ls -l:列出详细信息、ls-a:显示当前文件夹下的所有子目录与文件(包括隐藏文件)
cd [目录路径]:切换到该目录、cd ..:返回上级目录、cd ~:切换到当前用户的主目录
mkdir 新建目录
rmdir 删除空目录(若该目录下还有文件则无法删除)
rm -r 删除目录及目录内的文件、rm -ri逐个询问每个文件是否要删除、rm -v输出删除文件名称
cp 复制目录、cp file1.txt file2.txt:把 file1.txt 复制为 file2.txt、cp file1.txt/home/user/Documents/:将 file1.txt 复制到 /home/user/Documents/ 目录下、cp -r:递归复制整个目录、cp -i:交互模式
mv 移动或重命名文件及目录、mv oldname.txt newname.txt:重命名、mv file.txt /home/user/Documents/:移动文件到目录
find . -name ".txt":查找当前目录下的 .txt 文件、find /var/log -type d:查找 /var/log 下的目录(d为目录,f为文件)、find . -name ".tmp" -exec rm -f {} ;:查找并删除 .tmp 文件、find . -name "*.jpg" -exec mv {} ./images/ ;:查找并移动所有 .jpg 文件到 images 文件夹( ; 用于结束 -exec,必须写)
2.文件查看与编辑
4.在http协议里,get请求与post请求有什么区别?
1. 用途
GET用来获取数据。比如访问网页、搜索内容、获取用户信息。POST用来提交数据。比如用户登录、注册、上传文件、提交表单。
2. 数据传输方式
GET参数放在 URL 后面(查询字符串),例如:http://example.com/page?name=Tom&age=18,浏览器会缓存这个 URL,参数也能直接看到。POST参数放在 请求体 (body) 里,URL 不显示参数。适合传输大量数据(比如表单、JSON、文件)。
3. 数据大小
GET URL长度有限制(不同浏览器和服务器限制不同,一般 2KB 左右)。POST理论上没有大小限制,主要取决于服务器设置。
4. 安全性
GET参数暴露在 URL 里,不适合传输密码等敏感信息。可能被缓存或记录在浏览器历史中。
POST参数在请求体中,相对更安全,但仍需 HTTPS 加密 才能真正保证安全。
5. 幂等性
GET幂等:多次请求结果相同(只是获取数据,不应有副作用)。POST非幂等:每次请求可能导致服务器状态变化(比如重复下单)。
5.Cookies与Session
Cookies
定义:Cookies 是存储在客户端(浏览器)上的一小段文本数据,由服务器发送给浏览器,浏览器会在之后的请求中自动携带这些数据。
作用:
保存用户偏好设置(如语言、主题)。
记录用户行为(如访问记录、广告跟踪)。
维持会话状态(存储 SessionID,让服务器识别用户身份)。
Session
定义:Session 是存储在服务器端的一份用户会话数据,用来记录用户的状态和信息。每个用户会分配一个唯一的 SessionID,通常通过 Cookie 在客户端和服务器之间传递。
作用:
保存用户登录信息(用户名、权限等)。
维持用户会话状态(如购物车、浏览历史)。
提供比 Cookie 更安全的敏感数据存储方式。