那些被忽视的Python核心功能...

从Pikachu靶场实战解析越权漏洞:原理、攻击与防御 本文通过Pikachu靶场实战详细解析越权漏洞的原理、攻击方式与防御策略。文章深入探讨水平越权和垂直越权的危害,结合代码示例展示漏洞利用过程,并提供代码层和架构层的立体化防御方案,帮助开发者有效防范这一Web安全隐形杀手。 阅读详情

最实用、最简单、最优美…近些年,大家学习Python的热潮从未消退;无论是数据分析还是科学计算都少不了Python的身影。

Python也没有让人失望,Java用100行代码写出的程序,用Python10行就能搞定!

当你要说Hello World时,C语言、Java、Python分别是这样的:

图片

一目了然,Python只需一行!

虽然Python非常容易学习,但是许多实践者只触及到它的表面,而忽视了深入研究这门语言更高级、更强大的方面,而正是这些被忽视的方面使它如此独特和强大。

​ ——节选自《Fluent Python》

图片

(摄影:Stefan Steinbauer)

如果你的目标是成为一名经验丰富的Python程序员,你一定想了解的更多。因此,让我们共同了解下你没听过的Python核心功能,先从最简单的排列与组合开始…

功能一:排列与组合

你可以组合不同的for循环,输出排列、组合和笛卡尔积等。

1.排列

举个例子:当你在排列函数中输入{[1,2,3],2}时,会输出如下结果:

图片

2.组合

当你在组合函数中输入(‘ABC’,2)时,输出的排列如下:

图片

3.笛卡尔积

笛卡尔积是数学中的一种运算,用于求两个集合中所有可能的有序对。

当我们用笛卡尔积计算Python时,结果是这样的:

图片

功能二:可变的参数默认值

现在,开始增加难度…

当你每次调用fib_memo函数却不为memo参数赋值时,它将自动使用定义该函数时的原始值,公式和代码如下:

图片

由于在Python中,默认参数是可变的,你也可以像在“for循环”中一样在单个脚本中多次执行函数,每次执行都能自动增加要计算的斐波那契数,而不会超过“最大递归深度”限制,因为memo可持续扩展。

重要提示:

请记住,尽管可变的默认参数(如上所述)可以减少代码,但它可能产生难以解决的bug。有些人将其判定为“陷阱”,而不是功能。因此,你仍需要坚持Python中所透露出的禅意:显式优于隐式。

就像Hacker news中指出的那样:if n not in memo比if not n in memo更容易读取,但是二者输出结果相同。

功能三:海象运算符

下面,再来讲讲比较有趣的“海象运算符”…

“海象运算符”是在Python 3.8版本中引入的赋值表达式运算符,用于在表达式中进行赋值操作,其符号为“:=”。这个符号有点像海象的眼睛和獠牙(因此被称为「海象运算符」)。

在这里插入图片描述

它可以被翻译成英文**“whale calculus”,是一种基于单词语法规则的特殊运算符,用于定义表达式和一系列操作步骤的语言建模方式**。

在这里插入图片描述

显然,用Python,赋值和检查返回值是否包含真值变得更容易了:

在这里插入图片描述

功能四:单星号(*)和双星号(**)

使用()可以在将参数或**关键字参数***传递给函数之前解压缩**,让我们在如下代码中使用:

在这里插入图片描述

当调用sum_numbers函数而不解包my_numbers时,会引发"TypeError",因为该函数需要输入两个单独的参数才能输出结果。

但是,通过使用(*),我们可以解压缩my_numbers函数中的值,并将它们作为单独的参数进行传递,从而产生正确的输出。

这种解包技术不仅适用于元组和列表,也适用于字典。

当关键字作为参数时,我们可以使用双星号(**),以如下代码为例:

在这里插入图片描述

除解压缩序列以将其作为参数传递给函数外,你还可以使用它来创建新序列,例如:

在这里插入图片描述

在此过程中,原始数字列表不受影响,并且你还将拥有一个new_list_numbers 变量,它包括相同列表的副本。

在这里插入图片描述

功能五:any and all

any和all都是python中的内置函数,它们对可迭代对象(如,列表、元组或集合)进行操作,并根据可迭代对象中的元素以Boolean运算的形式返回,语句如下:

在这里插入图片描述

你可以将any和all函数与列表推导式结合使用,列表推导式返回一个可迭代对象并将其作为参数传递给all函数:

在这里插入图片描述

或任意函数:

在这里插入图片描述

下表列出可迭代对象中用any和all函数赋值的输出差异:

在这里插入图片描述

功能六:交换变量

用Python,你可以将参数打包((=)号右边)和解包((=)号左边)结合起来,并利用此功能交换变量:

在这里插入图片描述

功能七:str vs repr

在字符串处理方面,Python中的str()和repr()有所不同。str()将值转化为前端样式文本,repr()是后端底层代码。

·str()函数:将值转化为适于人阅读的形式,面向用户,返回值具有可读性、可理解性较强。

·repr()函数:将对象转化为供解释器读取的形式,面向开发人员,返回值表示python解释器内部的含义。

下图是一个很好的例子:

在这里插入图片描述

如你所见,repr()简单将时间排列为字符串后输出;如果你想确定当前变量是否包含字符串或时间对象,无法借此识别。

str()提供了变量持有的实际对象信息,这些信息在调试过程中非常有价值。

功能八:扩展的迭代解包

迭代解包可应用到任何可迭代对象上,唯一的硬性要求是:被迭代对象中的元素数量必须与接受这些元素的元组空档数一致,也可以使用星号 * 表示忽略多余的元素。

这种方式的优点在于:更好赋值、更好获取迭代对象中的某个值(一般的迭代对象分为:元组,列表,字典,字符串等)。

如果你想获得序列的第一个和最后一个值,需要输入如下代码:

在这里插入图片描述

更换输入和输出语句后同样可行…

在这里插入图片描述

其它组合也同样适用…

功能九:多个上下文管理器

通常,我们习惯一次性使用一个上下文管理器,比如,当你打开一个程序文件,需要输入如下代码:

在这里插入图片描述

但是,在Python中,用一行语句就能打开多个文件。如果你想将行写入其它文件,用Python语句就很容易实现,例如:

在这里插入图片描述

功能十:调试程序

为达到调试目的,我们可以在文件中输出大量变量或可以简单使用Python调试器(pdb),它可以帮我们设置断点:

在这里插入图片描述

程序将在断点处停止,你可以在该断点处获取任何变量以检查其值或该特定断点是否存在。当程序遇到断点时,可使用如下几个命令:

· n或next:执行下一行。

· s或step:进入功能调用。

· c或continue:继续执行,直到下一个断点。

· l或list:显示当前代码的上下文。

· p 或pp :打印表达式的值。

· b 或break :在指定的行上设置新断点。

· h或help:在使用pdb时提供帮助。

· q或quit:退出调试器并终止程序。

功能十一:collections模块中的Counter

collections模块中的Counter类提供了一种便捷的方法,可以对可迭代对象中的元素进行计数:

在这里插入图片描述

功能十二:使用下划线的两种情况

在Python中有两种需要用到下划线:多位数分隔或排除不需要的值。

1.排除不需要的值

下划线 _ 可被用作排除不需要的值:

在这里插入图片描述

2.多位数分隔符

**
**

在处理多位数时,可以使用下划线 (_) 作为视觉分隔符,能增强可读性。这个功能是在Python3.6中被引入的。

在这里插入图片描述

用户:简单、实用但范围有限

在这里插入图片描述

在reddit上,我们找到了关于用户关于本篇文章的181条评论:

在这里插入图片描述

正如文章开头所述,他们认为:“用Python调试出的程序确实简单、实用。”

话虽如此,有些用户也提出了质疑:“Pythonic的过滤器和映射方式更具可读性,但是范围有限。”

但这一点也不影响用户对Python的喜爱!

写在最后:Python是你成为全栈工程师的必备武器

前端开发、后端开发、项目测试.…如果你想成为一名合格的全栈工程师,Python是你不可或缺的“武器”。

在这里插入图片描述

在开发领域如此内卷的情况下,要完成一个现代化项目,需要一个人来掌控全局,他不需要是各种技术的资深专家,但需要熟悉各种技术。对于一个团队特别是互联网企业来说,全局性思维的人真的不可多得。

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方优快云官方认证二维码或者点击链接免费领取【保证100%免费】

Android 10.0 kenel中修改rom系统内部存储的大小 在10.0的系统rom产品开发定制中,在对一些产品开发中的配置需求方面,由于在产品后续订单中,有些产品是出口的,但是硬件方面已经定板,时间比较仓促,所以 就需要软件方面在rom内部存储的大小方面作假,修改rom真实的大小容量,所以就需要在kenel驱动部分来修改这部分的值最好了,接下来分析下计算rom容量的 相关代码,然后做出修改 阅读详情

相关推荐

沐数科技数据开发岗笔试题2025

与数据库中的主键(Primary Key)​有所不同,业务主键(Business Key)​是业务层面的唯一标识,通常由业务规则决定,例如,订单号、订单明细号,身份证号等。用户授信表(table_credit):包含用户ID(uid)、授信申请时间(credit_submit_time_local)、授信状态(credit_status)。:在正态分布中,大约68%的数据值落在距离均值一个标准差的范围内,约95%的数据值落在两个标准差的范围内,而约99.7%的数据值落在三个标准差的范围内。

weixin_40121264的博客 3525

Python核心技术总结

变量命名规则常量使用大写常见操作字符串大小写 合并字符串 删除空白和特殊字符 字符串的搜索和替换 字符串分割 字符串连接 字符串切片 string 模块 1.4 数字 常见操作 1.5 注释 单行注释 多行注释 1.6 标准数据类型 Number(数字) int float bool complex(复数) String(字符串) List(列表) Tuple(元组) Set(集合) Dictionary(字典) 在这六个标准数据类型中分可

weixin_44446122的博客 1359

验证(uvm常见问题)--子类和父类的句柄和对象问题

sv中的子类和父类 在sv中,有如下两个类,child继承于parent。然后在test module中,正确转换的方法如下面所示。其中c1,c2,p1 都指向了同一个子类的对象c1。总结如下: 一个子类的对象是包括子类的成员变量,方法和父类的成员变量,方法。 子类的句柄c1可以直接赋值给父类的句柄p1,此时p1只可以访问父类的成员变量和方法,或者子类的虚方法,比如下面调用p1.display是...

q876507447的博客 7633

python核心知识汇总

一、列表和元组 基本概念 列表和元组,都是一个可以放置任意数据类型的有序集合。其中列表是动态的,长度大小不固定,可以随意地增加、删减或者改变元素;而元组是静态的,长度大小固定,无法增加删减或者改变。 Python 中的列表和元组都支持负数索引,-1 表示最后一个元素,-2 表示倒数第二个元素,以此类推。 列表和元组都支持切片操作 列表和元组都可以随意嵌套 两者也可以通过 list() 和 tuple() 函数相互转换 列表和元组常用的内置函数: count(

Snippers的博客 3602

国产数据库迁移必看:达梦到ES的CDC方案优化全记录(含完整代码)

本文详细记录了从达梦数据库到Elasticsearch的CDC方案优化全过程,涵盖触发器方案局限性、Debezium架构优势及完整代码实现。通过Flink集成和性能调优,实现毫秒级延迟同步,显著降低数据库负载,为国产数据库迁移提供可落地的技术方案。

weixin_29079671的博客 499

conda upgrade出现Solving environment:failed CondaValueError Malformed version string invalid chars解决方案

本文主要介绍了conda install出现Solving environment:failed、CondaValueError: Malformed version string invalid character(s),希望能对使用conda的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 步骤一 2.2 步骤二

weixin_43178406的博客 8万+

Python 进阶:从“能用”到“精通”的 8 个核心技术维度(附实战代码)

本文从四个维度深入解析Python高级编程技术:1)装饰器作为工程化解耦利器,实现权限校验等模块化复用;2)迭代器与生成器通过惰性计算高效处理海量数据;3)上下文管理器确保资源安全释放;4)实战案例包括带参装饰器、生成器处理10GB日志等。每个技术点均配有可落地的代码示例,帮助开发者从基础使用进阶到专业级应用。

fykam的博客 2420

【雕爷学编程】MicroPython手册之 Teensy 4.1 实时时钟 (RTC)

在类的初始化函数中,定义了用于控制I2C总线的i2c对象和RTC模块的I2C地址。接着,使用该引脚初始化了一个Pin对象。它还提供了8个串口,3个SPI端口,3个I2C端口,2个I2S/TDM数字音频端口,3个CAN总线(其中一个支持CAN FD),以及一个SDIO(4位数据)原生SD卡端口12。2、内存:Teensy 4.1配备了1024 KB的RAM(其中512 KB是紧密耦合的),8 MB的Flash(其中64 KB用于恢复和EEPROM模拟),以及两个位置可以选择添加更多的QSPI内存芯片。

雕爷学编程 575

Django面试题库

目录 文章目录目录HTTP模块01.HTTP是什么02.HTTP请求报文与响应报文格式03.HTTP常见首部字段有哪些04.HTTP与HTTPS的区别05.列举HTTP请求中常见的请求方式06.GET方法与POST方法的区别07.常见的HTTP相应状态码08.如何对HTTP进行优化09.TCP与UDP的区别10.请介绍TCP的3次握手和4次挥手流程11.为什么TCP连接的时候是3次握手,关闭的时候...

MakChiKin 1万+

Yield Management软件:Lam Research二次开发_(5).缺陷分析与分类方法

在半导体制造过程中,缺陷分析和分类是提高良率管理(Yield Management)的关键步骤。通过准确地识别和分类缺陷,可以更好地理解工艺过程中的问题,从而采取有效的措施来提高生产效率和产品质量。本节将详细介绍缺陷分析和分类的方法,包括缺陷检测、特征提取、分类算法及其在Lam Research软件中的应用。

2401_87715305的博客 690

Unity 面试篇⚠️ | Unity性能优化好,山寨机都能跑~

Unity 面试篇⚠️ | Unity性能优化好,山寨机都能跑~

m0_58523831的博客 1万+

python基础

Python基础 深浅拷贝 深拷贝 表面理解:对象A赋值给对象B,且我们修改对象B中的数据和或方法,对象A不受影响,我们称之为深拷贝 底层理解:深拷贝拷贝的是原数据的值,就是把新的数据重新的开辟一个新内存进行存储 (深拷贝是对一个对象的所有层次的拷贝(递归),内部和外部都会被拷贝到新的内存地址) 对于可变与不可变类型 对于不可变类型(字符串(str)、数字(number)、...

anqiongsha8211的博客 233

Burpsuite系列安全渗透--自动扫描生成h5报告

第一章简述 Burpsuite是基于Java的用于web安全的工具,能够进行爬虫、代理、编码、密码爆破等任务,并支持对XSS漏洞、文件包含等漏洞的主动扫描或被动扫描。burpsuite2.0具体分为以下11个模块: Dashboard(仪表盘)——显示任务、实践日志等。 Target(目标)——显示目标目录结构的的一个功能。 Proxy(代理)——拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。 Intruder(...

魔都虫师的博客 2890

Python:被忽视的核心功能

【编者按】这篇文章主要介绍了一些在 Python 编程中可能被忽视的核心功能,包括默认参数、海象运算符、*args 和 **kwargs 的使用、变量交换、str 与 repr 的区别、可迭代对象的扩展解包、多个上下文管理器的使用、Python 调试器、collections.Counter 的使用、itertools 的使用以及下划线的两种用法等。原文链接:https://erikvandeve...

优快云资讯 5072

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Python中容易被忽视的核心功能

Python是一门富有魅力的编程语言,拥有丰富的功能和库,以及强大的社区支持。然而,有一些核心功能经常被忽视,而它们实际上可以极大地提高代码的质量、可读性和性能。

涛哥聊Python 128

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Python 中被忽视的核心功能

这篇文章主要介绍了一些在 Python 编程中可能被忽视的核心功能,包括默认参数、海象运算符、*args 和 **kwargs 的使用、变量交换、str 与 repr 的区别、可迭代对象的扩展解包、多个上下文管理器的使用、Python 调试器、collections.Counter 的使用、itertools 的使用以及下划线的两种用法等。另一方面,repr() 提供了有关变量所持有的实际对象的信息。使这个功能更有价值的是,程序会在你设置的断点处停止,你可以打印任何变量来检查其在特定断点处的值或存在情况。

m0_59596937的博客 236

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Python中有哪些容易被忽视的核心功能

Python是一门富有魅力的编程语言,拥有丰富的功能和库,以及强大的社区支持。然而,有一些核心功能经常被忽视,而它们实际上可以极大地提高代码的质量、可读性和性能。

Maisule的博客 120

opencv 4.x python包问题

opencv4.x 安装包

shliu220506的博客 500

别只当画图软件用!挖掘ArcGIS Desktop里那些被忽略的高效功能:目录、搜索与Python窗口

本文深入探讨了ArcGIS Desktop中被忽视的高效功能,包括目录窗口、搜索工具和Python窗口。通过实际案例和技巧分享,展示了如何利用这些功能提升地理数据处理效率,实现从简单绘图到高级自动化的转变,特别适合GIS分析师和地理数据工作者。

weixin_28700411的博客 341

Ersilia:打造传染与被忽视疾病研究的AI/ML模型集成平台

Ersilia:打造传染与被忽视疾病研究的AI/ML模型集成平台 项目介绍 Ersilia Model Hub 是一个集成平台,旨在为传染性疾病和被忽视疾病的研究提供一系列预训练的AI/ML模型。该项目是一个开源低代码解决方案,旨在为药物发现提供无缝的模型访问服务。Ersilia Model Hub 中的模型来源于两部分:一是文献中已发布的模型(附带第三方认可),二是Ersilia团队或其贡献者开...

gitblog_00704的博客 680

IPython核心功能解析与高效Python开发实践

交互式开发环境是现代编程工作流的重要组成部分,它通过实时反馈和丰富的工具链显著提升开发效率。IPython作为Python生态中最强大的交互式工具,基于Jedi库实现了上下文感知的智能代码补全,并创新性地引入了魔法命令系统(如%timeit性能分析、%%bash多行脚本执行)。这些特性使其成为数据科学、自动化脚本开发和教学演示的首选环境。在Jupyter Notebook等场景中,IPython的富输出展示和对象自省机制(通过?/??访问文档)大幅简化了数据探索过程。对于需要处理复杂项目的开发者,IPyth

weixin_34126557的博客 642

Python自动化部署实战:Fabric核心功能与应用

自动化部署是现代DevOps实践中的关键技术,通过脚本化操作替代人工干预,显著提升软件交付效率。基于SSH协议的远程操作是自动化部署的核心原理,Python生态中的Fabric库为此提供了优雅的解决方案。Fabric封装了连接管理、命令执行和文件传输等基础功能,支持多环境配置和错误处理机制,特别适合中小型项目的持续集成与交付场景。在实际工程中,结合CI/CD工具链使用Fabric可以实现分钟级的部署流程,同时通过并行执行和连接复用等优化技巧,部署效率可提升40%以上。本文以电商平台为例,详细解析如何构建安全

weixin_30892889的博客 1533

用Python代码演示RSA的乘法同态:一个被忽视的‘隐藏’特性

本文通过Python代码演示了RSA加密的乘法同态特性,这一常被忽视的'隐藏'功能允许在不解密密文的情况下直接对加密数据进行乘法运算。文章详细解释了其数学原理,提供了完整的Python实现代码,并探讨了在加密投票系统、隐私保护统计等场景的实际应用价值。

weixin_30496999的博客 249
上一篇: 程序员如何写出一手漂亮的代码?
下一篇: 一文读懂:AI大模型!
冻感糕人~
博客等级 码龄3年 8926粉丝 2384原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值