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中如何跨模块共享全局变量?

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

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

内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。导致程序运行速度减慢甚至系统崩溃等严重后果。
__del__()函数的对象间的循环引用是导致内存泄漏的主凶。

不使用一个对象时使用: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.hqwc.cn/news/543728.html

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

相关文章

lua脚本的基础内容

官方地址:http://luajit.org/ 官方wiki地址:http://wiki.luajit.org/Home 推荐书籍: OpenResty 最佳实践:https://moonbingbing.gitbooks.io/openresty-best-practices/content/ lua基础文档:https://www.runoob.com/l…

SpringBoot Servlet容器启动解析

介绍 容器架构 容器处理请求 容器启动全局流程解析 启动前准备 WebServer创建入口 WebServer创建 Servlet启动 Web容器工厂类加载解析 Web容器个性化配置 属性注入 工厂类初始化 BeanPostProcessor方法实现 定制化流程 面试题 请描述下Servlet容器启动流程?介绍下…

深入理解TCP:序列号、确认号和自动ACK的艺术

深入理解TCP:序列号、确认号和自动ACK的艺术 在计算机网络的世界里,TCP(传输控制协议)扮演着至关重要的角色。它确保了数据在不可靠的网络环境中可靠地、按顺序地传输。TCP的设计充满智慧,其中序列号(Seq&a…

uniapp 写安卓app,运行到手机端 调试

手机 设置》关于手机》点击版本号 4-5次,弹出手机锁屏页面,输入手机锁屏密码 2.手机 设置中 》搜索 开发人员选项 》 调试》打开USB调试 同页面 找到 选择USB配置》选择 MIDIhbuilder 编辑器 点击 》运行》运行到手机或模拟器》运行到Android App基座 》…

[Windows] Win11 常用快捷键

文章目录 🚀 [Windows] Win11 常用快捷键🌐 Windows 操作系统🔥 Windows 11 🌐 Windows 11 快捷键概览🔥 基本快捷键🔥 窗口快捷键🔥 功能快捷键 📝 小结 🚀 [Windows] W…

Java手写简易数据库--持续更新中

MYDB 0. 项目结构0.1 引用计数缓存框架为什么不使用LRU引用计数缓存缓存框架实现 0.2 共享内存数组 1. 事务管理器--TM1.1 XID 文件XID 规则XID 文件结构读取方式事务状态 1.2 代码实现 2. 数据管理器--DM2.1 页面缓存页面结构页面缓存数据页管理第一页普通页 2.2 日志文件 3. …

Linux 系统调用函数fork、vfork、clone详解

文章目录 1 fork1.1 基本介绍1.2 fork实例1.2.1多个fork返回值1.2.2 C语言 fork与输出1.2.3 fork &#x1f4a3; 2 vfork2.1 基本介绍2.2 验证vfork共享内存 3 clone3.1 基本介绍3.2 clone使用 1 fork 1.1 基本介绍 #include <sys/types.h> #include <unistd.h>p…

c语言按位与,按位或,按位异或,按位取反

1、按位与& 按位与的实现逻辑是相同为1&#xff0c;相异为0&#xff1b; 2、按位或 | 按位或的实现逻辑是有1为1&#xff0c;无一为0&#xff1b; 3、按位异或 ^ 按位或的实现逻辑是相同为0&#xff0c;相异为1&#xff1b; 4、按位取反 ~ 按位取反的实现逻辑是0改1&am…

TinTin Web3 动态精选:以太坊坎昆升级利好 Layer2,比特币减半进入倒计时

TinTin 快讯由 TinTinLand 开发者技术社区打造&#xff0c;旨在为开发者提供最新的 Web3 新闻、市场时讯和技术更新。TinTin 快讯将以周为单位&#xff0c; 汇集当周内的行业热点并以快讯的形式排列成文。掌握一手的技术资讯和市场动态&#xff0c;将有助于 TinTinLand 社区的开…

【模糊集合】示例

【模糊集合】隶属函数、关系与运算 例1 设&#xff0c; 分别进行交、并、补运算&#xff0c;有&#xff1a; 由上模糊集合的全体组成的集合称为的模糊幂集&#xff0c;记为&#xff0c;fuzzy 上述为模糊集合的Zadeh记法&#xff0c;其中的“”号不表示分式求和&#xff0c;仅作…

Jmeter —— jmeter导入和导出接口的处理!

JMeter测试导入接口 利用Jmeter测试上传文件&#xff0c;首先可根据接口文档或者fiddler抓包分析文件上传的接口&#xff1b;如下图&#xff1a; 以下是我通过fiddler所截取的文件上传的接口 1、填写导入接口的信息 查看文件上传栏下的填写信息&#xff1a; 文件名称&#x…

购票小程序有哪些功能

​通过小程序购买电子票&#xff0c;然后在使用时&#xff0c;出示电子票二维码&#xff0c;由商家进行验证/核销。通过小程序购票和核销&#xff0c;使得整个流程非常顺利&#xff0c;免去了线下购票的繁琐&#xff0c;而且还容易遗失。下面我们就来具体看一下小程序如何进行购…