Python
文章平均质量分 74
Jenrey
这个作者很懒,什么都没留下…
展开
-
CSRF介绍及Python实现
你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。原创 2024-04-04 04:10:50 · 938 阅读 · 0 评论 -
Python 装饰器decorator 圣经
实际上在Python的语法层面,任何的东西都可以调用,只不过如果这个东西不是callable的话,会在Python的runtime时会出错。在Python里,自定义的class类的实例,如果我们直接打印实例,是不会打印出任何有价值的信息的,只会打印出这个实例对象是一个什么类。装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变)。当我们理解了函数在Python中只是一个普通的对象后,我们就可以理解函数可以被当作参数传进其他的函数里。原创 2024-03-12 20:59:50 · 719 阅读 · 0 评论 -
Python 中的 Iterable 和 Iterator(Iterable and Iterator in Python)
简而言之,Python 中的 Iterable 对象是一个可以被遍历(通过 for 循环)的对象。Iterator 是 Iterable 的子类,但它包含一个产生项item的方法而不是项items本身。首先,我们应该知道 可迭代的对象Iterable 和 迭代器Iterator 是不同的。Iterator 也是 Iterable,因为它是 Iterable 的子类。Iterator 只保存方法而不是项items,它是 Iterable 的子类,以减少时间和空间成本。在简单的情况下,我们可以在。原创 2023-12-31 14:25:07 · 1007 阅读 · 0 评论 -
动态令牌的原理(OTP & HOTP &TOTP)
2FA,全称 Two-Factor Authentication,中文名叫 双重因素认证。OTP(One-Time Password,中文名:一次性口令)HOTP(HMAC-based One-Time Password)HMAC(Hash-based Message Authentication Code,中文名:基于哈希的消息认证码)TOTP是基于时间的一次性密码(Time-based One-Time Password)原创 2023-12-31 13:49:19 · 1714 阅读 · 0 评论 -
Python生成器 (Generators in Python)
只要一个函数function中使用了 yield 这个关键字,就代表这个函数function每次调用时返回的是一个生成器对象 generator object。这个生成器对象的类型是。包含 yield 语句的函数function本身并不是生成器generator,它仍然是一个函数function。生成器是一个类class,而不是函数function。生成器是迭代器Iterator的一个子类。生成器保存的是产生item的生成方法/算法,而不是items原创 2023-12-30 12:03:13 · 1711 阅读 · 0 评论 -
Python 中的异常处理
有些错误是由我们的代码造成的。例如,当我们打开一个文件并对其进行一些操作operations时,我们应该确保最终finally关闭该文件。幸运的是Fortunately,Python 有一个内置的异常处理机制built-in exception handling mechanism,可以帮助我们方便地处理异常。如上例所示,当我们考虑到代码的某些部分可能会发生异常may occur exceptions时,可以将其放入。来捕捉不同类型的错误。因此,我们的代码更加健壮,因为它可以处理两种类型的异常。原创 2023-12-29 21:28:32 · 1080 阅读 · 0 评论 -
在 Python 中跳出嵌套循环的 5 种方法
我们都知道,Python 是一种优雅的编程语言。但任何事物都有弱点。有时,Python 并不那么优雅。关键字keyword只能帮助我们跳出最内层的循环inner-most loop。我们能直接同时跳出两个嵌套循环two nested loops吗?Python 中是否有一些内置关键字built-in keywords或技巧tricks?遗憾的是,该操作没有内置支持no built-in support。俗话说:“比较是快乐的小偷comparison is the thief of joy”。原创 2023-12-29 20:59:38 · 2087 阅读 · 0 评论 -
在 Python 中编写循环Loops的艺术
循环是大多数编程语言中非常基本的控制流工具。对于复杂的场景,我们通常需要编写难看的嵌套循环nested loops或定义大量辅助变量assistant variables(如上述代码中的i幸运的是,在 Python中事情就变得方便多了。我们有很多技巧来编写更优雅的循环loops,它们确实让我们的生活变得更轻松。原创 2023-12-29 20:01:16 · 1082 阅读 · 0 评论 -
通过 LEGB 规则掌握 Python 范围Scope
对于内层函数inner functions来说,外层函数outer functions中的变量既不是局部变量local variables,也不是全局变量global variable,而是 非局部变量nonlocal variables也称为封闭变量enclosing variables。如果我们要在内部函数inner function中改变非局部变量nonlocal variables也称为封闭变量enclosing variables(你也可以理解为外层变量),则需要。关键字语句一样简单。原创 2023-12-29 16:15:09 · 924 阅读 · 0 评论 -
Python 中下划线Underscores的四种使用场景
这是 Python 解释器的一个有趣的小技巧。我们可以使用一个下划线简单地获取最后一个表达式的值last expression’s value。原创 2023-12-29 15:29:04 · 953 阅读 · 0 评论 -
Python中闭包Closure的5个层次
闭包closure是嵌套函数nested functions中的一个概念concept。如果你还不了解闭包closures,上面的例子可能会让你很头疼。我们已经删除了outer_func函数function。但是,f()仍然可以打印 “Zhang San”,它是outer_func函数function的局部变量local variable。为什么删除outer_func函数后它的局部变量local variable仍然存在?显然,这不是因为"Zhang San"是魔术师。原创 2023-12-29 14:01:22 · 926 阅读 · 0 评论 -
在Python中使用列表推导式List Comprehension的8个层次
列表表达式是一种非常具有 Pythonic 风格的技术,能让你的代码变得非常优雅。不过,它的语法有点令人困惑,尤其是对于新手和来自其他语言的程序员来说。我读过很多关于它的资料,但说实话,没有一本能完美地展示列表理解的全貌,以及它有多么强大和美丽。因此,我写了这篇文章。本篇文章将由浅入深elementary to profound地展示使用列表表达式list comprehension的 8 个层次。在了解了所有 8 个层次之后,掌握列表表达式list comprehension就变得易如反掌了。原创 2023-12-29 12:12:42 · 1494 阅读 · 0 评论 -
Python中星号的5种用法
星号asterisk被称为乘法运算符multiplication operator,是所有程序中常用的符号。我们只需将其用作乘法运算符即可。但是,如果你真的想成为一名 Python 专家expert。是时候了解星号asterisk在 Python 中的作用useful和功能powerful了。本篇文章将用最通俗易懂的例子,由浅入深地讲解星号的 5 种使用场景。原创 2023-12-29 10:58:56 · 1088 阅读 · 0 评论 -
在 Python 中使用装饰器decorator的 7 个层次
装饰器decorator只是 Python 的一个函数式编程特性functional programming feature。装饰器decorator接收一个可调用对象callable(函数function、方法method或类class),并返回一个可调用对象callable。上述函数是一个简单的装饰器decorator。它在接收函数运行前打印作者姓名。如果函数需要使用该装饰器,我们可以在函数顶部的"@"符号后添加该装饰器。原创 2023-12-28 22:28:15 · 809 阅读 · 0 评论 -
在 Python 中使用上下文管理器context manager的 5 个层次
由于每台机器的计算资源都是有限的,因此每个程序都需要考虑资源管理。比如文件处理,最好在使用完文件后将其关闭。files = []因此,只要不再需要,就应关闭每个已打开的文件。Python 有相对的内置函数built-in functions,因此我们可以方便地打开和关闭文件。")f.close()上述程序是可行的。但是,如果open()和close()之间的处理过程变得更加复杂,并且出现错误,那么没有人能够保证文件最终会被关闭。原创 2023-12-28 20:46:09 · 955 阅读 · 0 评论 -
19个Python语法糖和9个内置装饰器
lambda 函数(或称为匿名函数anonymous function)是一种语法糖,可以在 Python 中轻松定义一个小函数,使代码更简洁、更短小。lambda 函数的一个常见应用是用来定义内置sort()在上面的示例中,定义了一个接收变量并返回其长度的 lambda 函数,作为列表排序的比较方法。当然,我们也可以用正常的方法在这里写一个完整的函数。但鉴于这个函数非常简单,将其写成 lambda 函数无疑更简洁明了。原创 2023-12-28 19:53:46 · 1020 阅读 · 0 评论 -
Python Socket编程
socket编程是理解异步IO、协程的基础。是必须要掌握的。Socket在整个网络模型中,可以让我们直接脱离应用层而自动帮我们与底层协议打交道,这样我们就可以完成很多的功能哦。原创 2023-12-14 12:22:35 · 1187 阅读 · 0 评论 -
Python的yield生成器对象底层原理及协程思想的由来
堆内存的特性是:不去释放它,它就会一直存在于内存当中。生成器对象也是分配在堆内存当中的,所以生成器对象可以独立于调用而存在。所以只要我们拿到生成器对象,每一次调用都会重新生成栈帧对象,这样我们就能控制它继续往前走。所以我们在代码的任何地方只要拿到生成器对象,都可以去恢复它、去暂停它。正是因为这一特点,才有了协程哦!因为这就是协程的理论基础。原创 2023-12-13 12:50:49 · 651 阅读 · 0 评论 -
Python iterable(可迭代)和iterator(迭代器)底层源码剖析,简称【迭代器圣经】
Python 迭代器圣经,一篇精通!注意是【精通】,而非千篇一律。从反汇编讲原理,从源码讲设计思想,顺便帮你解惑为什么__getitem__被那么多人误认为是可迭代类型?之所以写摘要是怕你错过这么好的文章。原创 2023-12-12 15:59:51 · 1266 阅读 · 0 评论 -
Python 详解__init_subclass__类方法
【代码】Python 详解__init_subclass__类方法。原创 2023-12-09 15:23:08 · 595 阅读 · 0 评论 -
Python异常继承树图
没有文字,因为图足够好。原创 2023-12-09 00:58:16 · 349 阅读 · 0 评论 -
Python中type、object和class的关系,一图即懂
没有文字描述,因为图足够好!原创 2023-12-09 00:55:46 · 465 阅读 · 0 评论 -
Python的内存管理机制及两种垃圾回收机制,一篇即通!
在大多数情况下,当一个对象没有被任何其他对象引用时,Python的垃圾回收器会自动删除这个对象。但是在这个例子中,尽管。这就是为什么最后两次打印的结果都是1的原因。这个例子展示了Python中循环引用和垃圾回收的一个特性。被删除了,但是由于它们相互引用,所以它们实际上并没有被完全删除,这就造成了一个循环引用。并没有被完全删除,所以数量仍然是1。函数来计算当前Python环境中。类的实例数量,这时候数量都是1。听不懂很正常,先扫一眼有个印象。这段代码首先创建了两个类,,然后创建了这两个类的实例。原创 2023-12-09 00:47:44 · 1630 阅读 · 0 评论 -
jetbrains卡顿(Pycharm等全家桶)终极解决方案,肯定解决!非常肯定!
话越短,越有用,一共四种方案,肯定能解决!!!非常肯定!!下面四种解决方案,笔者按照实际体验后的结果,按照优先级从高到低排序。你只要按顺序试试就知道了。原创 2023-12-08 12:09:47 · 1404 阅读 · 0 评论 -
Python super()详解
【super不是调用父类方法】,这一点切记!!!super只是个代理,作用是沿着MRO链条,找到下一级节点,去调用对应的方法。原创 2023-12-07 22:25:59 · 620 阅读 · 0 评论 -
Python继承的设计及演化
为什么要单独研究Python的继承呢?因为Python中是存在多继承的。在 概念明确 阶段,如果看不懂,可以先往后面看,有代码例子,你肯定会明白的。原创 2023-12-03 20:40:51 · 983 阅读 · 0 评论 -
Python contextlib模块
来写就很繁琐很复杂。装饰器的生成器方法,会把。如果我们每一段都通过。原创 2023-09-09 12:32:13 · 385 阅读 · 0 评论 -
Python并发 & 并行 、同步 & 异步、阻塞 & 非阻塞 以及代码实现
线程安全:指某个函数、函数库在多线程环境中被调用时,能够正确地处理多个线程之间的共享变量,使程序功能正确完成。线程不安全:由于线程的执行随时会发生切换,就造成了不可预料的结果,出现线程不安全协程可以在单线程内实现并发。整体上还是单线程执行的,但是原理就是超级循环,在CPU遇到IO的时候不会等待,而是切换到下一个任务继续执行,而执行完一遍所有的任务后,会回来继续执行一遍任务,挨个轮询的进行。至尊循环驭众生至尊循环寻众生至尊循环引众生普照众生欣欣荣# 获取事件循环# 定义协程。原创 2023-09-08 17:48:44 · 2723 阅读 · 1 评论 -
Python 日志记录:6大日志记录库的比较
日志记录框架是一种工具,可帮助您标准化应用程序中的日志记录过程。虽然某些编程语言提供内置日志记录模块作为其标准库的一部分,但大多数日志记录框架都是第三方库,例如logging(Python)、Log4j(Java)、Zerolog(Go) 或Winston(Node.js)。有时,组织会选择开发自定义日志记录解决方案,但这通常仅限于具有高度专业化需求的大型公司。虽然 Python 在其标准库中提供了强大且功能丰富的日志记录解决方案,但第三方日志记录生态系统也提供了一系列引人注目的替代方案。原创 2023-07-30 18:46:58 · 9338 阅读 · 0 评论 -
pyenv + poetry
我们不要安装,而是应该使用Poetry进行虚拟环境的管理,这样可以做到思路清晰,而Poetry的虚拟环境更加的方便好用。再次强调:有了 Poetry,就不要再装了。原创 2023-07-16 22:31:26 · 1564 阅读 · 0 评论 -
Python垃圾回收
GC彻底把程序员从资源管理的重担中解放出来,让他们有更多的时间放在业务逻辑上。但这并不意味着码农就可以不去了解GC,毕竟多了解GC知识还是有利于我们写出更健壮的代码。原创 2023-07-16 22:30:07 · 375 阅读 · 0 评论 -
Python操作 JWT(python-jose包)、哈希(passlib包)、用户验证完整流程
JWT 即JSON 网络令牌JWT(JSON Web Token) 是一种用于在身份提供者和服务提供者之间传递身份验证和授权数据的开放标准。JWT是一个JSON对象,其中包含了被签名的声明。这些声明可以是身份验证的声明、授权的声明等。JWT可以使用数字签名进行签名,以确保它不被篡改。JWT 是一种将 JSON 对象编码为没有空格,且难以理解的长字符串的标准。JWT 字符串没有加密,任何人都能用它恢复原始信息。jwt官网及在线解码但 JWT 使用了签名机制。接受令牌时,可以用签名校验令牌。原创 2023-01-18 17:28:37 · 6976 阅读 · 1 评论 -
Python状态机(transitions模块)
使用states的`on_enter`、`on_exit`属性进行设置。`on_enter`:进入该状态后做的事,此时状态已经转换了。`on_exit`:即将离开某状态时做的事,此时状态未转换。给基础类增加动态方法:`on_enter_{stateName}`、`on_exit_{stateName}`transition的`before`属性、`after`属性`before`: 在 属性转换方法 调用即将开始前进`after`: 在 属性转换方法 调用即将结束前进行回调,此时属性原创 2023-01-09 01:11:17 · 10267 阅读 · 1 评论 -
Python中的getter、setter、deleter
getter作用:在获取某个属性值(面积)之前想要做别的事情(获取长宽),就给这个属性添加 getter。setter作用:在给属性(面积)赋值之前想要做别的事情(不许修改面积,代码中返回ValueError报错),就给这个属性添加 setter。原创 2023-01-07 21:16:26 · 2507 阅读 · 2 评论 -
Pycharm 2to3配置,python2转python3
Pycharm 2to3配置文章目录Pycharm 2to3配置找到python3的安装路径配置pycharm添加自定义工具把2to3配置进去在pycharm中使用2to3小技巧找到python3的安装路径python3自带一个把python2代码转换成python3代码的程序,叫"2to3"我们这里就只需要把该程序配置到pycharm中即可。配置pycharm添加自定义工具pyCharm菜单栏–>「File」–>「Settings」–>「Tools」–>「Ext原创 2021-11-12 10:28:18 · 1727 阅读 · 0 评论 -
Python yield 详解(嚼碎了喂你,一篇精通,无需再看其他文章)
Python yield详解文章目录Python yield详解由“斐波那契”深入理解yield案例第一个版本第二个版本问题的引出第三个版本第四个版本总结细化总结归纳总结引深如何判断一个def是否是一个特殊的 generator 函数?类的定义和类的实例另一个例子另一个角度理解yield案例理解示例1代码解释小结示例2代码解释由“斐波那契”深入理解yield案例 斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到第一个版本def原创 2021-11-09 16:44:36 · 3960 阅读 · 1 评论 -
python 解析hcl文件
文章目录HCL官网pyhcl官网安装python代码示例将hcl转换为jsonpython-hcl2官网安装python代码示例HCL HCL(HashiCorp配置语言)是由HashiCorp构建的一种配置语言。HCL的目标是构建一种结构化的配置语言,它对人和机器都是友好的,可以与command-line工具一起使用,但特别针对DevOps工具、服务器等。注意:python针对hcl文件做解析有两个主要的大版本。hclpython-hcl2(本人采用) HCL也完全兼容JSON。也原创 2021-09-18 16:48:25 · 1174 阅读 · 0 评论 -
python dictdiffer 复杂字典比较
复杂字典比较这里的复杂字典比较,指的是有嵌套的字典,以嵌套两层的字典为例。安装:pip install dictdifferimport dictdifferfirst_dict = { "template": "11", "template1": "11", "data": { "name": "鸣人", "age": 22, "sex": "女", "title": "六代火影" } # 数.原创 2021-08-30 18:29:53 · 1051 阅读 · 0 评论 -
Flask框架中的四种请求勾子
Flask框架中的四种请求勾子文章目录Flask框架中的四种请求勾子四种勾子详解场景应用在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理 比如:在请求开始时,建立数据库连接;在请求开始时,根据需求进行权限校验;在请求结束时,指定数据的交互格式;四种勾子详解为了让每个视图函数避免编写重复功能的代码,Flask提供了通用设施的功能,即请求钩子。 请求钩子是通过***装饰器*** 的形式实现,Flask支持如下四种请求钩子:before_first_request原创 2021-06-19 11:20:33 · 450 阅读 · 0 评论 -
python字典列表根据字段key去重
edata = [{"resource_id": "test", "operation_status": "change"}, {"resource_id": "test", "operation_status": "create"}, {"resource_id": "test1","operation_status": "change"}, {"resource_id": "test1","operation_status": "delete"}].原创 2021-05-21 15:57:33 · 1171 阅读 · 0 评论