python知识点总结(一)

在这里插入图片描述


这里写目录标题

  • 一、什么是WSGI,uwsgi,uWSGI
    • 1、WSGI
    • 2、uWSGI
    • 3、uwsgi
  • 二、python中为什么没有函数重载?
  • 三、Python中如何跨模块共享全局变量?
  • 四、内存泄露是什么?如何避免?
  • 五、谈谈lambda函数作用?
  • 六、写一个函数实现字符串反转,尽可能写出你知道的所有方法。
  • 七、时间复杂度和空间复杂度
  • 八、要求:设计一个装饰器函数,如果被装饰的函数返回字符串则将字符串每个单词首字母大写
  • 九、按照题目要求写出对应的函数。

一、什么是WSGI,uwsgi,uWSGI

1、WSGI

WSGI:是python web应用程序与web服务器之间的通用标准接口。 它定义了web服务器和python应用程序之间的通信协议,使得不同的web服务器和python框架可以无缝集成。WSGI允许开发者使用统一的方式编写web应用程序,而不用关心底层的服务器实现细节。

为什么需要wsgi呢?
当请求时Web服务器需要和web应用程序进行通信,但是web服务器有很多种啊,例如最新的是nginx,专门提供http服务的;Python web开发框架也对应多种啊,例如django、flask、fastapi,专门开发web应用的;它们之间需要一个桥梁,所以WSGI应运而生,定义了一套通信标准。试想一下,如果不统一标准的话,就会存在Web框架和Web服务器数据无法匹配的情况,那么开发就会受到限制,这显然不合理的。

2、uWSGI

uWSGI:是一种web服务器软件,它实现了WSGI协议,并提供高性能的web服务。uWSGI可以作为一个独立的Web服务器运行,也可以作为一个与其他Web服务器(如Nginx、Apache等)配合使用的应用程序容器。它支持多线程、多进程、异步I/O等特性,能够处理大量并发请求,并提供了丰富的配置选项和插件机制。

3、uwsgi

uwsgi:是一种通信协议,它是uWSGI服务器与其他Web服务器(如Nginx)之间进行通信的协议。 uwsgi协议是uWSGI服务器与前端Web服务器之间传递请求和响应的标准格式,它定义了数据包的结构和字段含义。通过uwsgi协议,uWSGI服务器可以与前端Web服务器进行高效的通信,实现负载均衡、反向代理等功能。

因此,uWSGI 是一个 Web 服务器,可以通过 WSGI 协议与 Python 应用程序通信,并使用 uwsgi 协议进行通信。WSGI 是 Python Web 应用程序与 Web 服务器之间的接口规范,定义了应用程序和服务器之间的标准接口而 uwsgi 则是 uWSGI 服务器与应用程序之间的二进制通信协议。

二、python中为什么没有函数重载?

首先python是解释性语言,函数重载现象通常出现在编译型语言中。
其次python是动态类型语言,函数的参数没有类型约束,也就无法根据参数类型区分重载。
再者python中函数的参数可以有默认值,可以使用可变参数和关键字参数,因此即便没有函数重载,也要可以让一个函数根据调用者传入的参数产生不同的行为。

三、Python中如何跨模块共享全局变量?

要在单个程序中跨模块共享全局变量,请创建一个特殊模块。在应用程序的所有模块中导入配置模块。该模块将作为跨模块的全局变量提供。

四、内存泄露是什么?如何避免?

内存泄漏是指在程序运行时,申请的内存空间没有及时被释放,导致程序占用的内存不断的增大,最终可能导致系统崩溃或者变得缓慢。

Python中的内存泄漏原因可以归结为以下几种情况:

  • 1.对象引用未释放:当一个对象不再被使用时,如果其引用计数没有归零,垃圾回收机制无法回收该对象所占用的内存。这种情况通常发生在循环引用的情况下,即两个或多个对象相互引用,导致它们的引用计数无法归零。为了解决这个问题,可以使用手动解除循环引用。

  • 2.缓存对象未正确管理:在某些情况下,为了提高性能,程序会使用缓存来存储一些对象。如果缓存对象未正确管理,即没有适时地从缓存中移除不再需要的对象,那么这些对象将一直占用内存。解决这个问题的方法是在适当的时机清理缓存,或使用LRU(LeastRecently Used)等缓存替换算法。

  • 3.大对象未释放:Python中的大对象(如大列表或大字典)在不再使用时可能会导致内存泄漏。这是因为这些对象的引用计数可能不会立即归零,从而延迟了垃圾回收的执行。为了避免这种情况,可以考虑手动释放大对象的引用,或者将其拆分为更小的对象来减少内存占用。

不使用一个对象时使用:del object 来删除一个对象的引用计数就可以有效防止内存泄漏问题。
通过 Python 扩展模块gc 来查看不能回收的对象的详细信息。
可以通过 sys.getrefcount(obj)来获取对象的引用计数,并根据返回值是否为 0来判断是否内存泄漏。

五、谈谈lambda函数作用?

(1)、lambda函数比较轻便,即用即扔,很适合需要完成某一项简单功能,但是这个简单的功能只在此一处使用,连名字都很随意的情况下;
(2)、lambda是匿名函数,一般用来给filter,map,reduce这样的函数式编程服务;
(3)、作为回调函数,可以传递给某些应用,比如消息处理等。

六、写一个函数实现字符串反转,尽可能写出你知道的所有方法。

方法1

name = "abcde"
print(name[::-1])

方法2

print(''.join(list(name)[::-1]))

方法3

def a(name):res = ''for i in range(len(name) - 1, -1, -1):res += name[i]return resname = "abcde"
r = a(name)
print(r)

七、时间复杂度和空间复杂度

在这里插入图片描述

八、要求:设计一个装饰器函数,如果被装饰的函数返回字符串则将字符串每个单词首字母大写

class AA:def __init__(self, func):self.func = funcdef __call__(self, *args, **kwargs):res = self.func(*args, **kwargs)if isinstance(res, str):res=res.title()return reselse:return res@AA
def func123(s):return sprint(func123("qwe"))

九、按照题目要求写出对应的函数。

要求:写一个函数,传入的参数是一个列表(列表中的元素可能也是一个列表),返回该列表最大的嵌套深度。
例如:列表[1,2,3]的嵌套深度为1,
列表[[1],[2,[3]]]的嵌套深度为3。

def list_depth(items):if isinstance(items, list):max_depth = 1for item in items:max_depth = max(list_depth(item) + 1, max_depth)return max_depthelse:return 0items = [[1], [2, [3]]]
r = list_depth(items)
print(r)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/277208.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试官:volatile如何保证可见性的,具体如何实现?

写在开头 在之前的几篇博文中,我们都提到了 volatile 关键字,这个单词中文释义为:不稳定的,易挥发的,在Java中代表变量修饰符,用来修饰会被不同线程访问和修改的变量,对于方法,代码…

电脑自带dll修复在哪里打开呢?马上教会你

由于各种原因,电脑可能会出现一些问题,其中之一就是dll文件丢失。Dll文件是动态链接库文件,它们包含了许多程序运行所需的函数和资源。当这些文件丢失或损坏时,可能会导致程序无法正常运行或出现错误提示。本文将介绍电脑dll文件丢…

Fork - 将 GitHub 的某个特定仓库复制到自己的账户下

Fork - 将 GitHub 的某个特定仓库复制到自己的账户下 1. ForeverStrongCheng/OpenCV-tutorials2. Fork -> ForeverStrongCheng/R2CNN_Faster-RCNN_TensorflowReferences 访问仓库页面,点击 Fork 按钮创建自己的仓库。 Fork 是将 GitHub 的某个特定仓库复制到自己…

C语言内存函数详解

文章目录 前言一、memcpy函数(内存拷贝函数)二、memmove重叠拷贝函数三.memset内存设置函数四.memcmp内存比较函数总结 前言 我们之前按学习了C语言标准库中提供了一系列的字符和字符串库函数,接下来我们就学习一下关于内存相关的一些函数。…

LeetCode 面试经典150题 26.删除有序数组中的重复项

题目: 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量…

AVCE - AV Evasion Craft Online 更新 8 种加载方式 - 过 WD 等

免责声明:本工具仅供安全研究和教学目的使用,用户须自行承担因使用该工具而引起的一切法律及相关责任。作者概不对任何法律责任承担责任,且保留随时中止、修改或终止本工具的权利。使用者应当遵循当地法律法规,并理解并同意本声明…

【Linux-网络编程】

Linux-网络编程 ■ 网络结构■ C/S结构■ B/S结构 ■ 网络模型■ OSI七层模型■ TCP/IP四层模型 ■ TCP■ TCP通信流程■ TCP三次握手■ TCP四次挥手 ■ 套接字:socket 主机IP 主机上的进程(端口号)■ TCP传输文件 ■ 网络结构 ■ C/S结构…

基于java+springboot开发的计算机毕业设计网文论坛管理系统设计与实现【附源码】

基于javaspringboot开发的计算机毕业设计网文论坛管理系统设计与实现【附源码】 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联…

JavaScript 基础知识

一、初识 JavaScript 1、JS 初体验 JS 有3种书写位置&#xff0c;分别为行内、内部和外部。 示例&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"wid…

深入了解 大语言模型(LLM)微调方法

引言 众所周知&#xff0c;大语言模型(LLM)正在飞速发展&#xff0c;各行业都有了自己的大模型。其中&#xff0c;大模型微调技术在此过程中起到了非常关键的作用&#xff0c;它提升了模型的生成效率和适应性&#xff0c;使其能够在多样化的应用场景中发挥更大的价值。 那么&…

pta上的几个例题

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

Git学习记录

目录 Git Git介绍 版本控制 版本控制工具 集中式版本控制工具 分布式版本控制工具 Git工作机制 ​编辑 Git和代码托管中心 Git安装 Git常用命令 设置用户签名 初始化本地库 查看本地库状态 添加到暂存区 提交到本地库 修改文件 历史版本 查看历史版本 版本…

【系统架构师】-第3章-信息系统基础知识

1、信息系统的基本功能 输入&#xff1a;决定于系统所要达到的目的及系统的能力和信息环境的许可存储&#xff1a;存储各种信息资料和数据的能力处理&#xff1a;数据处理工具&#xff0c;利用OLAP、DM&#xff08;数据挖掘&#xff09;技术输出&#xff1a;保证最终实现最佳的…

SQLiteC/C++接口详细介绍之sqlite3类(八)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;七&#xff09; 下一篇&#xff1a; SQLiteC/C接口详细介绍之sqlite3类&#xff08;八&#xff09;&#xff08;暂未发表&#xff09; 24.sqlite3_cr…

Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 2、线条平滑曲面但有间隔

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata imp…

微服务:Bot代码执行

每次要多传一个bot_id 判网关的时候判127.0.0.1所以最好改localhost 创建SpringCloud的子项目 BotRunningSystem 在BotRunningSystem项目中添加依赖&#xff1a; joor-java-8 可动态编译Java代码 2. 修改前端&#xff0c;传入对Bot的选择操作 package com.kob.botrunningsy…

【QT】文件流操作(QTextStream/QDataStream)

文本流/数据流&#xff08;二级制格式&#xff09; 文本流 &#xff08;依赖平台&#xff0c;不同平台可能乱码&#xff09;涉及文件编码 #include <QTextStream>操作的都是基础数据类型&#xff1a;int float string //Image Qpoint QRect就不可以操作 需要下面的 …

瑞_23种设计模式_策略模式

文章目录 1 策略模式&#xff08;Strategy Pattern&#xff09;★1.1 介绍1.2 概述1.3 策略模式的结构1.4 策略模式的优缺点1.5 策略模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 JDK源码解析&#xff08;Comparator&#xff09; &#x1f64a…

2核4G服务器够用吗?性能测评自己看

腾讯云轻量2核4G5M带宽服务器支持多少人在线访问&#xff1f;5M带宽下载速度峰值可达640KB/秒&#xff0c;阿腾云以搭建网站为例&#xff0c;假设优化后平均大小为60KB&#xff0c;则5M带宽可支撑10个用户同时在1秒内打开网站&#xff0c;并发数为10&#xff0c;经阿腾云测试&a…

电源常用电路:采样电路

在之前的帖子中,我们已经介绍了数字电源及其核心控制器PPEC。当然,数字电源除了包含电源拓扑电路以及数字控制核心外,还包括采样、驱动和通讯等外围电路。 本篇就先对电源的ADC采样原理和常用的采样调理电路进行介绍吧。 一、ADC采样原理 ADC(模数转换器)采样是将模拟信号…