8大核心语句,带你深入python
人生苦短 我用python
又来给大家整点好东西啦~
咱就直接开练噜!内含大量代码配合讲解
python 安装包+资料:点击此处跳转文末名片获取

1. for - else
什么?不是 if 和 else 才是原配吗?
No,你可能不知道,
else 是个脚踩两只船的家伙,
for 和 else 也是一对,而且是合法的。
>> for i in [1,2,3,4]:
print(i)
else:
print(i, '我是else')1
2
3
4 我是else
如果在 for 和 else 之间(循环体内)有第三者 if 插足,
也不会影响 for 和 else 的关系。
因为 for 的级别比 if 高,else 又是一个攀附权贵的家伙,
根本不在乎是否有 if,
以及是否执行了满足 if 条件的语句。
else 的眼里只有 for,只要 for 顺利执行完毕
else 就会屁颠儿屁颠儿地跑一遍:
>>> for i in [1,2,3,4]:
if i > 2:
print(i)
else:
print(i, '我是else')
4 我是else
那么,如何拆散这对冤家呢?
只有当 for 循环被 break 语句中断之后,
才会跳过 else 语句:
>>> for i in [1,2,3,4]:
if i>2:
print(i)
break
else:
print(i, '我是else')
2.lambda函数
lambda 听起来很高大上,
其实就是匿名函数(了解js的同学一定很熟悉匿名函数)。
匿名函数的应用场景是什么呢?
就是仅在定义匿名函数的地方使用这个函数,
其他地方用不到,
所以就不需要给它取个阿猫阿狗之类的名字了。
下面是一个求和的匿名函数,
输入参数有两个,x和y,函数体就是x+y,
省略了return关键字。
>>> lambda x,y: x+y
<function <lambda> at 0x000001B2DE5BD598>
>>> (lambda x,y: x+y)(3,4)
匿名函数一般不会单独使用,
而是配合其他方法,
为其他方法提供内置的算法或判断条件。
比如,使用排序函数sorted对多维数组或者字典排序时,就可以指定排序规则。
>>> a = [{'name':'B', 'age':50}, {'name':'A', 'age':30}, {'name':'C', 'age':40}]
>>> sorted(a, key=lambda x:x['name'])
[{'name': 'A', 'age': 30}, {'name': 'B', 'age': 50}, {'name': 'C', 'age': 40}]
>>> sorted(a, key=lambda x:x['age'])
[{'name': 'A', 'age': 30}, {'name': 'C', 'age': 40}, {'name': 'B', 'age': 50}]
再举一个数组元素求平方的例子,这次用map函数:
>>> a = [1,2,3]
>>> for item in map(lambda x:x*x, a):print(item, end=', ')1, 4, 9,
3.列表推导式
在各种稀奇古怪的语法中,
列表推导式的使用频率应该时最高的,
对于代码的简化效果也非常明显。
比如,求列表各元素的平方,
通常应该这样写(当然也有其他写法,比如使用map函数):
>>> a = [1, 2, 3, 4, 5]
>>> result = list()
>>> for i in a:result.append(i*i)>>> result
[1, 4, 9, 16, 25]
如果使用列表推导式,看起来就舒服多了:
>>> a = [1, 2, 3, 4, 5]
>>> result = [i*i for i in a]
>>> result
[1, 4, 9, 16, 25]
4.列表索引的各种骚操作
Python 引入负整数作为数组的索引,
这绝对是喜大普奔之举。
想想看,在C/C++中,想要数组最后一个元素,
得先取得数组长度,减一之后做索引,
严重影响了思维的连贯性。
Python语言之所以获得成功,
我个人觉得,在诸多因素里面,
列表操作的便捷性是不容忽视的一点。
请看:
>>> a = [0, 1, 2, 3, 4, 5]
>>> a[2:4]
[2, 3]
>>> a[3:]
[3, 4, 5]
>>> a[1:]
[1, 2, 3, 4, 5]
>>> a[:]
[0, 1, 2, 3, 4, 5]
>>> a[::2]
[0, 2, 4]
>>> a[1::2]
[1, 3, 5]
>>> a[-1]
5
>>> a[-2]
4
>>> a[1:-1]
[1, 2, 3, 4]
>>> a[::-1]
[5, 4, 3, 2, 1, 0]
如果说,这些你都很熟悉,
也经常用,那么接下来这个用法,
你一定会感觉很神奇:
>>> a = [0, 1, 2, 3, 4, 5]
>>> b = ['a', 'b']
>>> a[2:2] = b
>>> a
[0, 1, 'a', 'b', 2, 3, 4, 5]
>>> a[3:6] = b
>>> a
[0, 1, 'a', 'a', 'b', 4, 5]
5.三元表达式
熟悉 C/C++ 的程序员,
初上手 python 时,
一定会怀念经典的三元操作符,
因为想表达同样的思想,
用python 写起来似乎更麻烦。
比如:
>>> y = 5
>>> if y < 0:print('y是一个负数')
else:print('y是一个非负数')y是一个非负数
其实,python 是支持三元表达式的,
只是稍微怪异了一点,类似于山东人讲话。
比如,
山东人最喜欢用倒装句:
打球去吧,要是不下雨的话;
下雨,咱就去自习室。
翻译成三元表达式就是:
打球去吧 if 不下雨 else 去自习室
来看看三元表达式具体的使用:
>>> y = 5
>>> print('y是一个负数' if y < 0 else 'y是一个非负数')
y是一个非负数
python 的三元表达式也可以用来赋值:
>>> y = 5
>>> x = -1 if y < 0 else 1
>>> x
1
—
6.巧用断言assert
所谓断言,
就是声明表达式的布尔值必须为真的判定,
否则将触发 AssertionError 异常。
严格来讲,assert是调试手段,
不宜使用在生产环境中,
但这不影响我们用断言来实现一些特定功能,
比如,输入参数的格式、类型验证等。
>>> def i_want_to_sleep(delay):assert(isinstance(delay, (int,float))), '函数参数必须为整数或浮点数'print('开始睡觉')time.sleep(delay)print('睡醒了')>>> i_want_to_sleep(1.1)
开始睡觉
睡醒了
>>> i_want_to_sleep(2)
开始睡觉
睡醒了
>>> i_want_to_sleep('2')
Traceback (most recent call last):File "<pyshell#247>", line 1, in <module>i_want_to_sleep('2')File "<pyshell#244>", line 2, in i_want_to_sleepassert(isinstance(delay, (int,float))), '函数参数必须为整数或浮点数'
AssertionError: 函数参数必须为整数或浮点数
7.while语句
这个就很常见了,
几乎是学过一点python语言的小伙伴都会知道while语句的啦,如:
我用while写了一个小的游戏
import randomanswer = random.randint(1, 100)
counter = 0
while True:counter += 1number = int(input('请输入: '))if number < answer:print('大一点')elif number > answer:print('小一点')else:print('恭喜你猜对了!')break
print('你总共猜了%d次' % counter)
if counter > 7:print('你的智商余额明显不足')
8.with - as
with 这个词儿,英文里面不难翻译,
但在 Python 语法中怎么翻译,
我还真想不出来,大致上是一种上下文管理协议。
作为初学者,不用关注 with 的各种方法以及机制如何,
只需要了解它的应用场景就可以了。
with 语句适合一些事先需要准备,
事后需要处理的任务,比如,文件操作,
需要先打开文件,操作完成后需要关闭文件。
如果不使用with,文件操作通常得这样:
fp = open(r"D:\CSDN\Column\temp\mpmap.py", 'r')
try:contents = fp.readlines()
finally:fp.close()
如果使用 with - as,那就优雅多了:
>>> with open(r"D:\\Column\temp\mpmap.py", 'r') as fp:contents = fp.readlines()
好了,你如果以上都会的话,那我要给你一个大大的赞(我绝对不会告诉你,我都不知道assert,哈哈哈哈)
今天的分享到这就结束了,下次再见哈!

相关文章:
8大核心语句,带你深入python
人生苦短 我用python 又来给大家整点好东西啦~ 咱就直接开练噜!内含大量代码配合讲解 python 安装包资料:点击此处跳转文末名片获取 1. for - else 什么?不是 if 和 else 才是原配吗? No,你可能不知道, else 是个…...
【批处理】- 批处理自动安装Mysql与Redis
前言 在全新环境中安装MySQL与Redis操作是挺麻烦的,于是就想使用脚本来自动安装,使用批处理进行一步到位的安装,后面还能使用工具进行打包成exe可执行文件,一键安装,最后能够更好的部署项目到windows系统的服务器。 …...
聊聊华为的工作模式
目录 一、试用期与加班工资 二、招聘 三、月度答辩和转正答辩 四、可信考试认证 五、接口人 六、问题缺陷单 七、代码检视 八、功能开发 九、出征海外 一、试用期与加班工资 一般而言,试用期持续的时间为3-6个月,工资、奖金都按正式员工的标准…...
燕山大学-面向对象程序设计实验-实验6 派生与继承:多重派生-实验报告
CSDN的各位友友们你们好,今天千泽为大家带来的是燕山大学-面向对象程序设计实验-实验5 派生与继承:单重派生-实验报告,接下来让我们一起进入c的神奇小世界吧,相信看完你也能写出自己的 实验报告!本系列文章收录在专栏 燕山大学面向对象设计报告中 ,您可以在专栏中找…...
分割两个字符串得到回文串[抽象--去除具体个性取共性需求]
抽象前言一、分割两个字符串得到回文串二、双指针总结参考文献前言 抽象去个性留共性,是因为具体个性对于解决问题是个累赘。少了累赘,直击需求,才能进行问题转换或者逻辑转换。 一、分割两个字符串得到回文串 二、双指针 // 限定死了&…...
【LeetCode】1609. 奇偶树、1122. 数组的相对排序
作者:小卢 专栏:《Leetcode》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 1609. 奇偶树 1609. 奇偶树 题目描述: 如果一棵二叉树满足下述几个条件&#x…...
【C++初阶】4. Date类的实现
如果下面博客有不理解的地方,可以查看源码:代码提交:日期类的实现 1. 构造函数的实现 由于系统实现的默认构造函数即便采用默认值的形式也只能存在1个固定的默认日期(例如:1997-1-1)。所以,构…...
ES6新特性--变量声明
可以使用let关键字来声明变量let a;let b,c;//同时声明多个变量let stu = 张三;let name =李四,age = 12;//声明变量的同时赋值 let关键字使用的注意事项(1).变量在声明的时候不可以重复,这也符合其他语言的变量声明规范 let name = 李四; let name = 张三;//这里开始报错,但…...
【Django】缓存机制
文章目录缓存的介绍Django的6种缓存方式开发调试缓存dummy.DummyCache内存缓存locmem.LocMemCache文件缓存filebased.FileBasedCache⭐️数据库缓存db.DatabaseCacheMemcache缓存memcached.MemcachedCacheMemcache缓存memcached.PyLibMCCacheDjango缓存的应用内存缓存cache_pag…...
我的创作纪念日——一年的时间可以改变很多
机缘 不知不觉来到CSDN已经创作一年了。打心底讲,对于在CSDN开始坚持创作的原因,我用一句话来概括最合适不过了——“无心插柳柳成荫” 为什么这么说呢? 这要从我的一篇博客说起——《输入命令Javac报错详解》: 那也是我第一次…...
Jetson Nano驱动机器人的左右两路电机
基于Jetson Nano板子搭建一个无人车,少不了减速电机驱动轮子滚动,那如何驱动呢?从Jetson.GPIO库文件来说,里面没有支持产生PWM的引脚,也就意味着Jetson nano没有硬件产生PWM的能力,所以我们不得不使用别的方…...
如何通过openssl生成公钥和私钥?
1、生成RSA秘钥的方法 生成RSA秘钥的方法: openssl genrsa -des3 -out privkey.pem 2048 注:建议用2048位秘钥,少于此可能会不安全或很快将不安全。 这个命令会生成一个2048位的秘钥,同时有一个des3方法加密的密码,…...
Verilog的If语句和Case语句
这篇文章将讨论 verilog 中两个最常用的结构----if语句和case语句。在之前的文章中学习了如何使用过程块(例如always块)来编写按顺序执行的verilog 代码。此外还可以在过程块中使用许多语句----统称为顺序语句,如case 语句和 if 语句。这篇文…...
HJ31 单词倒排
描述 对字符串中的所有单词进行倒排。 说明: 1、构成单词的字符只有26个大写或小写英文字母; 2、非构成单词的字符均视为单词间隔符; 3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时…...
leetcode——203.移除链表元素
文章目录🐨1.题目🪅2.解法1-头节点迭代🌿2.1 思路🌿2.2 代码实现🦆3. 解法2-创建新链表🎏3.1 思路🎏3.2 代码实现🐐4. 题目链接🐨1.题目 给你一个链表的头节点head和一个…...
GPT-4来袭:开启人工智能新时代
文章目录介绍GPT4 模型演示示例示例 1示例 2示例 3示例 4示例 5最后Reference介绍 2023年3月15日,OpenAI公司正式发布了先进的自然语言处理模型GPT-4,前不久发布的GPT-3.5模型只能理解文字的语言模型,而新发布的GPT4则是多模态模型ÿ…...
芯微电子IPO终止:业绩开始大幅下滑,王日新、王苟新兄弟不同命
近日,深圳证券交易所披露的信息显示,黄山芯微电子股份有限公司(下称“芯微电子”)申请撤回发行上市申请文件。因此,深圳证券交易所决定终止对其首次公开发行股票并在创业板上市的审核。 据贝多财经了解,芯…...
【C++】用手搓的红黑树手搓set和map
目录 一、set/map的底层结构 1、set/map的源码 2、利用模板区分set/map 3、利用仿函数控制比较大小 二、set/map的迭代器(红黑树的迭代器) 1、红黑树的begin、end迭代器 2、红黑树迭代器的operator 3、红黑树迭代器的operator-- 三、set的const…...
【C++】空指针弃NULL用nullptr
空指针(null pointer)不指向任何对象,在试图使用一个指针之前代码可以首先检查它是否为空。声明空指针的3种方法: int* p1 NULL; int* p2 nullptr; int* p3 0; 在C语言中常用NULL生成空指针,NULL是一个宏…...
【selenium学习】数据驱动测试
数据驱动在 unittest 中,使用读取数据文件来实现参数化可以吗?当然可以。这里以读取 CSV文件为例。创建一个 baidu_data.csv 文件,如图所示:文件第一列为测试用例名称,第二例为搜索的关键字。接下来创建 test_baidu_da…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
