Python基础教程——20个让人眼前一亮的逻辑妙用!

文末免费赠精品编程资料~~

Python不仅仅是一种编程语言,它还是解决问题的艺术,充满了让人拍案叫绝的“小巧思”。通过这15个小技巧,你不仅能提升编程技能,还能让你的代码更加优雅、高效。让我们一探究竟吧!

1. 列表推导式 - 快速处理列表

妙用 : 将所有列表中的元素平方。

numbers = [1, 2, 3]  
squared = [num ** 2 for num in numbers]  
print(squared)  # 输出: [1, 4, 9]  

解析 : 这行代码比循环简洁多了,一行完成任务,提升代码可读性。

2. 生成器表达式 - 节省内存

当处理大数据时,使用生成器而非列表。

big_range = (i for i in range(1000000))  

只在需要时才计算下一个值,内存友好。

3. enumerate - 遍历同时获取索引和值

fruits = ['apple', 'banana', 'cherry']  
for i, fruit in enumerate(fruits):  print(f"Index {i}: {fruit}")  

这样可以清晰地知道每个元素的位置。

4. 解包操作 - 简化变量赋值

a, b, *rest = [1, 2, 3, 4, 5]  
print(a, b, rest)  # 1 2 [3, 4, 5]  

星号(*)帮助我们轻松解包剩余元素。

5. 字典推导式 - 快速构建字典

keys = ['x', 'y', 'z']  
values = [1, 2, 3]  
my_dict = {k: v for k, v in zip(keys, values)}  
print(my_dict)  # {'x': 1, 'y': 2, 'z': 3}  

字典推导让字典创建变得轻而易举。

6. any()all() - 高级逻辑判断

  • any()只要列表中有一个元素为True就返回True。

  • all()需要所有元素都为True才返回True。

numbers = [0, 1, 2]  
print(any(numbers))  # True  
print(all(numbers != 0))  # False  

7. 切片操作 - 不只是取子序列

numbers = [1, 2, 3, 4, 5]  
# 反转列表  
print(numbers[::-1])  # [5, 4, 3, 2, 1]  

切片的强大远远不止于此。

8. 高阶函数 - map(), filter(), reduce()

  • map(func, iterable)应用函数于每个元素。

  • filter(func, iterable)过滤出使函数返回True的元素。

  • reduce(func, iterable[, initializer])对序列应用累积函数。

from functools import reduce  
nums = [1, 2, 3]  
print(list(map(lambda x: x**2, nums)))  # [1, 4, 9]  
print(list(filter(lambda x: x % 2 == 0, nums)))  # [2]  
print(reduce(lambda x, y: x+y, nums))  # 6  

9. 上下文管理器 - 自动资源管理

with open('example.txt', 'w') as file:  file.write("Hello, world!")  

确保文件无论成功还是异常都会被正确关闭。

10. 装饰器 - 动态增强函数功能

def my_decorator(func):  def wrapper():  print("Something is happening before the function is called.")  func()  print("Something is happening after the function is called.")  return wrapper  @my_decorator  
def say_hello():  print("Hello!")  say_hello()  

装饰器让函数增强功能变得优雅。

11. 生成器函数 - 懒惰计算

def count_up_to(n):  num = 1  while num <= n:  yield num  num += 1  

使用yield关键字,按需生成数据。

12. 类的魔术方法 - 深入对象内部

__init__, __str__, 让你的类行为更像内置类型。

class Person:  def __init__(self, name):  self.name = name  def __str__(self):  return f"I am {self.name}"  p = Person("Alice")  
print(p)  # 输出: I am Alice  

13. 断言 - 简单的错误检查

def divide(a, b):  assert b != 0, "除数不能为0"  return a / b  

用于测试代码的假设条件,提高代码健壮性。

14. 软件包管理 - pip

安装第三方库,比如requests

pip install requests  

简化依赖管理,拓宽编程可能性。

15. F-strings - 字符串格式化新星(自Python 3.6起)

name = "Bob"  
age = 30  
print(f"My name is {name} and I am {age} years old.")  

直观且高效的字符串拼接方式。


进阶与高级技巧

16. 异步编程 - 使用asyncio

异步编程是现代Python中处理I/O密集型任务的重要工具。Python 3.7+ 引入了asyncawait关键字,简化了并发编程。

import asyncio  async def my_coroutine():  await asyncio.sleep(1)  print("Coroutine finished after 1 second.")  async def main():  task = asyncio.create_task(my_coroutine())  await task  asyncio.run(main())  

这段代码展示了如何定义一个协程并等待其完成,异步执行使得程序在等待I/O操作时不会阻塞。

17. 路径库pathlib - 文件系统操作的新方式

自Python 3.4起,pathlib模块提供了面向对象的方式来处理文件路径。

from pathlib import Path  # 创建或访问路径  
my_path = Path.home() / "Documents/example.txt"  
my_path.touch()  # 创建文件  
print(my_path.read_text())  # 读取文件内容  

使用pathlib,文件操作变得更自然、更少出错。

18. 单元测试 - unittest框架

编写单元测试是确保代码质量的关键。Python标准库中的unittest提供了丰富的测试工具。

import unittest  class TestMyFunction(unittest.TestCase):  def test_add(self):  from my_module import add  self.assertEqual(add(1, 2), 3)  if __name__ == '__main__':  unittest.main()  

通过单元测试,你可以验证函数的正确性,及时发现错误。

19. 类的继承与多态

面向对象编程的核心概念之一。

class Animal:  def speak(self):  raise NotImplementedError()  class Dog(Animal):  def speak(self):  return "Woof!"  class Cat(Animal):  def speak(self):  return "Meow!"  for animal in [Dog(), Cat()]:  print(animal.speak())  

这里展示了通过继承实现多态,不同的类对同一方法的不同实现。

20. 虚拟环境 - 环境管理

虚拟环境 (venvpipenv) 保证项目依赖隔离。

python3 -m venv myenv  
source myenv/bin/activate  # 在Linux/macOS  
myenv\Scripts\activate  # 在Windows  
pip install package-you-need  

使用虚拟环境避免了库版本冲突,是现代开发的标准做法。


最后这里免费分享给大家一份Python全台学习资料,包含视频、源码。课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
编程资料、学习路线图、源代码、软件安装包等!【点击这里】领取!
Python所有方向的学习路线图,清楚各个方向要学什么东西
100多节Python课程视频,涵盖必备基础、爬虫和数据分析
100多个Python实战案例,学习不再是只会理论
华为出品独家Python漫画教程,手机也能学习
历年互联网企业Python面试真题,复习时非常方便

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/29381.shtml

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

相关文章

终于把TikTok账号养好了!我是如何做的?

对于很多刚开始运营TikTok的新手小白来说&#xff0c;都会有一个同样的疑问&#xff0c;那就是&#xff1a;TikTok到底需不需要养号&#xff1f;这里明确告诉大家是需要养号的&#xff0c;今天就把我自己实操过的养号经验和策略总结出来&#xff0c;分享给大家。 一、什么是Tik…

2025年计算机毕业设计题目参考

今年最新计算机毕业设计题目参考 以下可以参考 springboot洗衣店订单管理系统 springboot美发门店管理系统 springboot课程答疑系统 springboot师生共评的作业管理系统 springboot平台的医疗病历交互系统 springboot购物推荐网站的设计与实现 springboot知识管理系统 springbo…

Character Animator 2024 mac/win版:赋予角色生命,动画更传神

Character Animator 2024是一款强大的角色动画制作软件&#xff0c;以其创新的功能和卓越的性能&#xff0c;为动画师、游戏开发者以及设计师们带来了全新的创作体验。 Character Animator 2024 mac/win版获取 这款软件采用了先进的骨骼绑定技术&#xff0c;使得角色动画的制作…

【JavaScript】什么是异步处理,如何异步处理?

概要 在 JavaScript 中&#xff0c;代码默认是同步执行的。这意味着每一行代码都是按照顺序执行的&#xff0c;前一行代码执行完毕后才会执行下一行。这种执行方式称为同步&#xff08;synchronous&#xff09;执行。 然而&#xff0c;在实际开发中&#xff0c;我们常常需要执行…

系统架构设计师【论文-2016年 试题4】: 论微服务架构及其应用(包括写作要点和经典范文)

论微服务架构及其应用&#xff08;2016年 试题4&#xff09; 近年来&#xff0c;随着互联网行业的迅猛发展&#xff0c;公司或组织业务的不断扩张&#xff0c;需求的快速变化以及用户量的不断增加&#xff0c;传统的单块(Monolithic)软件架构面临着越来越多的挑战&#xff0c;…

基于Java的冬奥会科普平台

开头语&#xff1a;你好&#xff0c;我是计算机学姐码农小野。如果你对冬奥会科普平台感兴趣或有其他技术需求&#xff0c;欢迎随时私信我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java、B/S架构 工具&#xff1a;MyEclipse、MySQL 系统展示…

Arcgis导入excel出现的问题

我手动添加了object-id字段也没有用&#xff0c;然后再excel里面又添加了一行&#xff0c;关闭后打开还是不行&#xff0c;额案后在网上看到了一种方法&#xff0c;很有效&#xff0c;予以记录。 1、我的文件是csv格式&#xff0c; 先在excel里面另存为xlsx格式 2、转换工具里…

【vue3 + element plus 】拖动排序实现(只能拖拽一次的问题、拖动后的位置不准确问题)

1.使用sortablejs插件 用于el-table列表拖动排序 import Sortable from sortablejs // 拖拽插件 mounted() { this.rowDrop() }, swap(arr, from, to) { // 在这方法中按需求修改排序规则即可if (from < 0 || from > arr.length || to < 0 || to > arr.length) r…

1 catboot:房价预测

学到的知识&#xff1a; 面对传统特征层面如何进行深度挖掘&#xff0c;衍生有价值的特征&#xff0c;让模型更好的理解数据&#xff1b;如何处理文本特征&#xff1b;如何对类别特征进行处理&#xff1b;类别特征与连续特征如何组合更加的高效&#xff1b;如何使用catboost, …

联华集团:IT团队如何实现从成本中心提升至价值中心|OceanBase 《DB大咖说》(十)

OceanBase《DB大咖说》第 10 期&#xff0c;我们邀请到了联华集团的CTO楼杰&#xff0c;来分享他如何思考 IT 业务价值&#xff0c;以及联华华商数据库的升级实践。 楼杰从大学毕业后就进入了联华工作&#xff0c;并一直扎根在近 20 年的&#xff0c;从一名底层的技术员成长为…

[每日一练]利用左右指定键连接实现经理的下属员工数量

该题目来自于力扣&#xff1a; 1731. 每位经理的下属员工数量 - 力扣&#xff08;LeetCode&#xff09; 题目要求&#xff1a; 表&#xff1a;Employees----------------------- | Column Name | Type | ----------------------- | employee_id | int | | name …

【区块链】POS(Proof of Stake)权益证明算法深度解析

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 POS&#xff08;Proof of Stake&#xff09;权益证明算法深度解析引言1. POS基本…

Bash sleep随机时间

在 Bash 中&#xff0c;如果你想让 sleep 命令等待一个随机的时间&#xff0c;你可以使用 $RANDOM 变量来生成一个随机数&#xff0c;然后将其转换为秒数。但是&#xff0c;$RANDOM 生成的数字范围是从 0 到 32767&#xff0c;这可能对于你想要的等待时间来说太大了。 为了得到…

【代码随想录】【算法训练营】【第42天】 [1049]最后一块石头的重量II [494]目标和 [474]一和零

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 42&#xff0c;周二&#xff0c;坚持一下~ 题目详情 [1049] 最后一块石头的重量II 题目描述 1049 最后一块石头的重量II 解题思路 前提&#xff1a;最多只会剩下一块 石头&#xff0c;求此…

生命在于学习——Python人工智能原理(3.5)

三、深度学习 9、常见神经网络 常见的神经网络有卷积神经网络&#xff08;AlexNet、VGGNet&#xff09;、循环神经网络&#xff08;RNN&#xff09; 长短时记忆网络&#xff08;LSTM&#xff09;。 &#xff08;1&#xff09;AlexNet AlexNet于2012年由Hinton学生Alex提出&a…

SqlServer添加索引

1. 聚集索引&#xff08;Clustered Index&#xff09; 描述&#xff1a;表数据按照索引顺序实际存储。适用场景&#xff1a;数据经常需要排序或范围查询&#xff0c;比如按日期排序的查询。优点&#xff1a; 提高排序和范围查询性能。一个表只能有一个聚集索引&#xff0c;但可…

uniapp顶部导航栏实现自定义功能按钮+搜索框并监听响应事件

目录 第一步&#xff1a;先下载按钮需要展示的图标&#xff08;若不使用图标&#xff0c;直接使用文字可跳过这步&#xff09; 1、点击需要的图标&#xff0c;添加入库 2、点击旁边的购物车&#xff0c;在弹出的窗口中选择下载代码 3、解压下载的压缩包&#xff0c;将这几个…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑绿证—碳交易的多能互补综合能源系统电—热—气协同低碳优化调度 》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

【Seata】分布式事务解决方案——理论

目录 回顾什么是事务数据库事务的四大特性&#xff1a;ACID 分布式事务解释面临挑战分布式事务产生场景1. 单体架构中多数据源场景2. 分布式架构场景 分布式事务解决方案jta AtomikosLCN模式问题 Alibaba的Seata解决分布式事务问题 使用MQ解决分布式事务问题问题1&#xff1a;…

Thymeleaf 全局变量

在Spring Boot中&#xff0c;我们可以使用ThymeleafViewResolver的addStaticVariable方法来添加全局变量&#xff0c;这些全局变量可以在所有的Thymeleaf模板中直接使用&#xff0c;而不需要在每个视图控制器中重复定义。 以下是一个简单的例子&#xff0c;展示如何在Spring B…