当前位置: 首页 > news >正文

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)

在这里插入图片描述

相关文章:

python知识点总结(一)

这里写目录标题 一、什么是WSGI,uwsgi,uWSGI1、WSGI2、uWSGI3、uwsgi 二、python中为什么没有函数重载?三、Python中如何跨模块共享全局变量?四、内存泄露是什么?如何避免?五、谈谈lambda函数作用?六、写一个函数实现字符串反转,尽可能写出你知道的所…...

【Poi-tl Documentation】区块对标签显示隐藏改造

前置说明&#xff1a; <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version> </dependency>模板&#xff1a; 删除行表格测试.docx 改造前测试效果 package run.siyuan…...

第十四届蓝桥杯 三国游戏

一开始的思路就是想着暴力&#xff0c;但是呢&#xff0c;如果真的用暴力一个一个列的话&#xff0c;连30%的数据都搞定不了&#xff0c;所以这里需要考虑别的办法。 这道题的思路就是贪心。 我们这样想&#xff1a;既然要满足至少一个国X>YZ&#xff0c;那么我们何不变成…...

数据结构——通讯录项目

1.通讯录的介绍 顺序表是通讯录的底层结构。 通讯录是将顺序表的类型替换成结构体类型来储存用户数据&#xff0c;通过运用顺序表结构来实现的。 用户数据结构&#xff1a; typedef struct PersonInfo {char name[12];char sex[10];int age;char tel[11];char addr[100]; }…...

学点Java打小工_Day4_数组_冒泡排序

1 数组基本概念 程序算法数据结构 算法&#xff1a;解决程序的流程步骤 数据结构&#xff1a;将数据按照某种特定的结构来存储 设计良好的数据结构会导致良好的算法。 ArrayList、LinkedList 数组是最简单的数据结构。 数组&#xff1a;存放同一种类型数据的集合&#xff0c;在…...

内存分配方式?

内存分配方式主要有三种&#xff1a; 静态存储区分配&#xff1a;这种方式在程序编译的时候就已经分配好内存&#xff0c;并且这块内存在程序的整个运行期间都存在。全局变量和静态变量通常就是在静态存储区分配的。这种分配方式效率高&#xff0c;因为内存在程序开始执行前就已…...

2024/3/17周报

文章目录 摘要Abstract文献阅读题目引言模型架构编码器和解码器堆栈AttentionPosition-wise Feed-Forward NetworksEmbeddings and SoftmaxPositional Encoding 实验数据实验结果 深度学习TransformerEncoderDecoder 总结 摘要 本周阅读了Transformer的开山之作《Attention Is…...

函数连续性和Lipschitz连续性

摘要&#xff1a; 直观上&#xff0c;Lipschitz连续性的含义是函数图像的变化速度有一个全局的上限&#xff0c;即函数的增长速率不会无限增加。这种性质确保了函数在任何地方都不会过于陡峭&#xff0c;有助于分析函数的行为&#xff0c;并且在优化、动力系统理论、机器学习等…...

Qt 鼠标滚轮示例

1.声明 void wheelEvent(QWheelEvent *event) override;2.实现&#xff08;方便复制、测试起见用静态变量&#xff09; #include <mutex> void MainWindow::wheelEvent(QWheelEvent *event) {static QLabel *label new QLabel("Zoom Level: 100%", this);st…...

【Unity】进度条和血条的三种做法

前言 在使用Unity开发的时候&#xff0c;进度条和血条是必不可少的&#xff0c;本篇文章将简单介绍一下几种血条的制作方法。 1.使用Slider Slider组件由两部分组成&#xff1a;滑动区域和滑块。滑动区域用于显示滑动条的背景&#xff0c;而滑块则表示当前的数值位置。用户可…...

多人聊天室 (epoll - Linux网络编程)

文章目录 零、效果展示一、服务器代码二、客户端代码三、知识点1.connect()2.socket()3.bind()4.send()5.recv() 四、改进方向五、跟练视频 零、效果展示 一个服务器作为中转站&#xff0c;多个客户端之间可以相互通信。至少需要启动两个客户端。 三个客户端互相通信 一、服务…...

vite配置

"vite": "^5.1.4" resolve.alias&#xff1a;配置别名 1、执行npm install -D types/node 或者 yarn add types/node -D 2、以下配置代表访问src时可以用“”代替 resolve: {alias: {"": path.resolve(__dirname, "./src"),},}, 使…...

服务器生产环境问题解决思路

游戏服务器开发节奏比较快,版本迭代很频繁,有一些项目甚至出现了周更新(每周准时停服更新维护)。由于功能开发时间短,研发人员本身技术能力等原因,线上出现bug很常见。笔者经历过的游戏项目,一年到头没几次更新不出现bug的(当然,配置问题也算bug)。那当出现bug,我们…...

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Column)

沿垂直方向布局的容器。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 可以包含子组件。 接口 Column(value?: {space?: string | number}) 从API version 9开始&#xff0c;该接口…...

LLM之RAG实战(三十)| 探索RAG语义分块策略

在LLM之RAG实战&#xff08;二十九&#xff09;| 探索RAG PDF解析解析文档后&#xff0c;我们可以获得结构化或半结构化的数据。现在的主要任务是将它们分解成更小的块来提取详细的特征&#xff0c;然后嵌入这些特征来表示它们的语义&#xff0c;其在RAG中的位置如图1所示&…...

软件测试-------Web(性能测试 / 界面测试 / 兼容性测试 / 安全性测试)

Web&#xff08;性能测试 / 界面测试 / 兼容性测试 / 安全性测试&#xff09; 一、Web性能测试&#xff1a;&#xff08;压力测试、负载测试、连接速度测试&#xff09;1、压力测试&#xff1a;      并发测试 &#xff08;如500人同时登录邮箱&#xff09; 2、负载测试…...

工欲善其事,必先利其器,Markdown和Mermaid的梦幻联动(2)

该文章Github地址&#xff1a;https://github.com/AntonyCheng/typora-notes/tree/master/chapter03-mermaid 在此介绍一下作者开源的SpringBoot项目初始化模板&#xff08;Github仓库地址&#xff1a;https://github.com/AntonyCheng/spring-boot-init-template & CSDN文…...

STM32基础--使用寄存器点亮流水灯

GPIO 简介 GPIO 是通用输入输出端口的简称&#xff0c;简单来说就是 STM32 可控制的引脚&#xff0c;STM32 芯片的 GPIO 引脚与外部设备连接起来&#xff0c;从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的 GPIO被分成很多组&#xff0c;每组有 16 个引脚&#xf…...

代码随想录训练营Day25:● 216.组合总和III ● 17.电话号码的字母组合

216.组合总和III 题目链接 https://leetcode.cn/problems/combination-sum-iii/description/ 题目描述 思路 自己写的效率会慢一些&#xff0c;而且没有用到剪枝 class Solution {List<List<Integer>> list new ArrayList<>();List<Integer> lis…...

SwiftUI的 特性 - ViewModify

SwiftUI的 特性 - ViewModify 记录一下SwiftUI的 特性 - ViewModify的使用方式 可以通过viewModify来管理视图的样式&#xff0c;结合extension来完成封装达到解偶效果 import SwiftUI/// 我们可以通过viewModify来管理视图的样式&#xff0c;来达到解偶效果 struct DefaultB…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...