档案网站建设文献综述,湖北随州住房和城乡建设部网站,wordpress怎么改图标,河北建设厅网站登陆怎么找附件这里写目录标题 一、什么是WSGI,uwsgi,uWSGI1、WSGI2、uWSGI3、uwsgi 二、python中为什么没有函数重载#xff1f;三、Python中如何跨模块共享全局变量?四、内存泄露是什么?如何避免?五、谈谈lambda函数作用?六、写一个函数实现字符串反转#xff0c;尽可能写出你知道的所… 这里写目录标题 一、什么是WSGI,uwsgi,uWSGI1、WSGI2、uWSGI3、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是匿名函数一般用来给filtermapreduce这样的函数式编程服务; (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):resres.title()return reselse:return resAA
def func123(s):return sprint(func123(qwe))九、按照题目要求写出对应的函数。 
要求:写一个函数传入的参数是一个列表(列表中的元素可能也是一个列表)返回该列表最大的嵌套深度。 例如:列表[123]的嵌套深度为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)