如何激怒一位Python爱好者?

Simulink与MATLAB在动漫主题技术演讲中的创意应用与实践指南 系统仿真与数据分析是工程实践和科学研究中的基础技术,其核心原理在于通过数学模型和算法对真实世界的过程进行模拟与洞察。Simulink作为一款基于模型设计的可视化仿真环境,通过框图化建模和动态仿真,为控制系统、信号处理等复杂系统的设计与验证提供了强大支持。MATLAB则以其高效的数值计算和丰富的数据可视化能力,成为算法开发与数据分析的行业标准工具。这些技术的价值在于能够将抽象的理论转化为直观、可交互的模型,极大地提升了设计效率并降低了试错成本。在工业自动化、学术研究、教育科普等广泛场景中,它们都是不可或缺的利 阅读详情

写代码不那么pythonic风格的,多多少少都会让人有点难受。

什么是pythonic呢?简而言之,这是一种写代码时遵守的规范,主打简洁、清晰、可读性高,符合PEP 8(Python代码样式指南)约定的模式。在这里插入图片描述

Python社区发展几十年,已经沉淀出一套更加科学规范的代码书写法则,该踩的坑都帮你踩过了,按这个来基本不会出什么错。

下面举几个不那么pythonic的代码案例,虽然不会出错,但十分不建议这样写。

1、函数、变量命名无意义、不规范

很多人图省事,使用a、aa、bbb这样无意义的变量名、函数名,这样在编程中会大大降低代码的可读性,也影响代码质量。

def a(revenue, cost):  
    """  
    计算销售利润率。  
    :param revenue: 销售额(或总收入)  
    :param cost: 成本  
    :return: 销售利润率(以百分比表示)  
    """  
    if revenue <= 0 or cost < 0:  
        return "错误:销售额必须大于0,成本不能为负数。"  
    aa = revenue - cost  
    bbb = (aa / revenue) * 100  
    return bbb

更有初学者使用中文来作为变量名,虽然在语法上是允许的,但会引起歧义,不符合代码规范

年龄 = 30
名字 = "张三"
print("{}的年龄是{}".format(名字,年龄))

2、不善于使用函数和类,重复写代码

Python是鼓励用函数和类去封装一些重复用的功能,这样能增加代码的可读性,也减少不必要的劳动,但一些人就是喜欢写很长的代码,导致看着很冗余。

在Python中大家可以把一个复杂的功能,用多个函数去分解,一个函数代码行数最好不要超过十行,如果确实需要很多代码,那就进行分解,多写几个函数来实现。

比如以下的函数,用来实现csv文件的读取、行去重、空值剔除、保存等功能。

import csv  

def process_csv(input_file, output_file):  
    """  
    读取CSV文件,去重,剔除空值,并保存到新文件。  
    :param input_file: 输入的CSV文件路径  
    :param output_file: 输出的CSV文件路径  
    """  
    # 读取CSV文件  
    with open(input_file, mode='r', newline='', encoding='utf-8') as file:  
        reader = csv.reader(file)  
        rows = [row for row in reader if row]  # 剔除空行  

    # 去重  
    unique_rows = []  
    for row in rows:  
        # 将行转换为元组以用于集合去重  
        unique_rows.append(tuple(row))  

    # 剔除空值  
    processed_rows = [[cell for cell in row if cell] for row in unique_rows]  

    # 转换回列表以写入CSV文件  
    processed_rows = [[str(cell) for cell in row] for row in processed_rows]  

    # 写入新的CSV文件  
    with open(output_file, mode='w', newline='', encoding='utf-8') as file:  
        writer = csv.writer(file)  
        writer.writerows(processed_rows) 

当你看到这个函数,是不是觉得有点冗长,一个函数实现了四个功能,不易阅读也不利于重复利用。

如果把它拆分成四段函数,分别实现读取、行去重、空值剔除、保存这四个功能,就会更加清晰。

import csv  

def read_csv(file_path):  
    """  
    读取CSV文件并返回行的列表。  

    :param file_path: CSV文件路径  
    :return: CSV文件行的列表  
    """  
    with open(file_path, mode='r', newline='', encoding='utf-8') as file:  
        reader = csv.reader(file)  
        return [row for row in reader if row]  # 剔除空行  

def remove_duplicates(rows):  
    """  
    去除行列表中的重复行。  

    :param rows: 行的列表  
    :return: 去重后的行列表  
    """  
    return list(set(tuple(row) for row in rows))  

def remove_empty_values(rows):  
    """  
    从行列表中剔除含有空值的行。  

    :param rows: 行的列表  
    :return: 剔除空值后的行列表  
    """  
    return [[cell for cell in row if cell] for row in rows]  

def write_csv(file_path, rows):  
    """  
    将行列表写入CSV文件。  

    :param file_path: CSV文件路径  
    :param rows: 要写入的行列表  
    """  
    with open(file_path, mode='w', newline='', encoding='utf-8') as file:  
        writer = csv.writer(file)  
        writer.writerows(rows)  

3、使用很复杂的列表推导式,较难阅读

列表推导式可以简化列表的创建,既实用还能让代码更加美观,但列表推导式只适合创建逻辑简单的列表,对于很复杂且代码量大的列表,是不建议用列表推导式的,比如以下案例。

nested_list = [[(i * j, i + j, i - j) for j in range(1, 4)] for i in range(5, 10)]

改成如下循环函数是否更好?

def generate_nested_list(start_i, end_i):  
    nested_list = []  
    for i in range(start_i, end_i):  
        sublist = []  
        for j in range(1, 4):  
            sublist.append((i * j, i + j, i - j))  
        nested_list.append(sublist)  
    return nested_list  

4、代码行特别长,也很难阅读

一般Python代码行长度最好不要超过79,vscode和pycharm等编辑器里都有代码长度指引线,写代码时遇到它就是提示你要换行了。

连续代码(一行代码很长,需要分在多行写)中被裹着的代码(可能被 (), [], {} 包裹)应该垂直(左)对齐。

def long_function_name(
        var_one, var_two, var_three,
        var_four):
    print(var_one)

其实还有很多pythonic风格的规范,需要大家注意,建议按照约定俗成的方法去写,第一原则是可读性强,可读性强,可读性强。

关于Python学习指南

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

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

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

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

在这里插入图片描述

👉Python学习视频600合集👈

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

在这里插入图片描述

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

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

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

在这里插入图片描述

👉Python大厂面试资料👈

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

在这里插入图片描述

在这里插入图片描述

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

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

在这里插入图片描述

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

高德地图JSAPI中旋转Marker点标签图片时候,且不旋转lable内容方法。 高德地图JSAPI中旋转Marker点标签图片时候,且不旋转lable内容方法 阅读详情

相关推荐

RISC-V IP中的ITCM/DTCM与Slave-AHB接口设计解析

本文深入解析RISC-V IP中ITCM/DTCM与Slave-AHB接口的设计要点,涵盖TCM架构原理、总线协议实现及性能优化策略。通过实际案例展示如何实现单周期访问延迟,解决跨时钟域同步等关键问题,为嵌入式系统提供确定性内存访问方案。特别探讨了AHB总线仲裁机制和RTL实现技巧,助力开发者构建高效可靠的RISC-V处理器子系统。

weixin_28419039的博客 529

德州仪器计算器 C语言编程,德州仪器因取消对计算器编程的支持而激怒业余爱好者...

根据TI-Planet上发布的客户支持电子邮件(通过Linus Tech Tips),受影响的计算器包括流行的TI-84 Plus CE,以及TI-83 Plus CE-T和TI-83 Premium CE。可编程功能在设备的最新固件更新中消失,升级后目前还没有办法回滚。这一改变是为了阻止学生们规避计算器的考试模式限制,但在这个过程中,它也消除了业余爱好者们用来运行程序的一个关键途径。尽管计算器仍...

weixin_35443436的博客 308

用Python+ArcGIS分析厦门共享单车数据:5分钟搞定订单时长与距离分布的可视化

本文详细介绍了如何利用Python和ArcGIS Pro 3.x快速分析厦门共享单车数据,实现订单时长与距离分布的可视化。通过数据清洗、预处理和高级可视化技巧,揭示用户行为特征,为运营优化提供数据支持。文章还提供了环境配置、代码示例和业务洞察,帮助开发者高效完成数据分析任务。

weixin_28327051的博客 336

Python实现XOR加密勒索程序模型:从原理到防御的逆向学习

XOR(异或)加密是密码学中的基础对称加密算法,其原理基于二进制位的异或运算,具有加解密使用同一操作的核心特性。在工程实践中,XOR运算因其实现简单、执行高效的特点,常被用于演示加密技术的基本原理,但也因密钥管理不当易受攻击。理解XOR加密有助于掌握更广泛的加密技术概念,如密钥生成、文件操作和异常处理,这些是构建安全应用和进行威胁分析的通用基础。通过模拟勒索软件的关键模块——包括文件系统遍历、XOR加密引擎和勒索信生成——可以深入理解恶意软件的攻击链,从而提升在文件监控、行为检测和应急响应方面的防御能力。本

weixin_30788619的博客 446

告别Quartus II的漫长等待:用VSCode+iverilog+GTKWave搭建你的轻量级Verilog仿真环境(2024保姆级教程)

本文详细介绍了如何利用VSCode、iverilog和GTKWave构建高效的Verilog/SystemVerilog开发环境,替代传统的Quartus II和ModelSim工具。通过2024年最新的保姆级教程,帮助开发者实现秒级启动、低资源消耗的轻量级仿真环境,显著提升数字电路设计的开发效率和调试体验。

weixin_33690963的博客 559

7、Python高光谱分析工具(PyHAT)简介

Python高光谱分析工具(PyHAT)是一个开源、跨平台的Python库及图形用户界面,用于行星光谱数据的可视化与分析。它支持多种高光谱传感器数据,如火星勘测轨道飞行器的CRISM、月船1号的M3以及SELENE Kaguya SP点光谱仪,提供预处理、衍生产品生成、统计学习和机器学习分析功能。PyHAT基于Pandas和NumPy构建,兼容Jupyter和QGIS环境,旨在解决现有光谱分析方法缺乏开源实现、难以探索性分析和算法分散的问题。其模块化架构涵盖数据输入/输出、通用光谱变换、测绘与点观测工具及高

aa123的博客 138

程序猿来做一下这套试卷,看看你的实力如何!

作者:王大伟 微软最有价值专家(MVP)Python爱好者社区唯一小编选择题(每题4分,共计100分)1、一个假期在外游玩不会游泳的程序猿看到河边有如下警告后结...

zandaoguang的博客 236

世界职业院校技能大赛财经赛道项目参考逐字稿五

世界职业院校技能大赛财经赛道项目参考逐字稿五

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 129

游戏经济循环设计:程序化生成与AI谈判系统的Python实现

程序化内容生成是游戏开发中的关键技术,它通过算法动态创建游戏元素,解决了传统预设内容带来的重复性问题。其核心原理在于将对象属性拆分为多个维度,并基于权重与规则进行随机组合,从而构建出近乎无限的内容池。这项技术不仅大幅提升了游戏的可玩性与重玩价值,也为独立开发者提供了高效的内容生产方案。在模拟经营等游戏类型中,程序化生成常与AI行为系统结合,通过模拟顾客的神态、心理与决策逻辑,创造出深度的策略博弈体验。本文以《当铺人生2》为案例,详细解析了如何将程序化生成道具与基于神态的谈判机制相结合,并提供了完整的Pyth

weixin_34221773的博客 329

yolov26改进 | 检测头篇 | 利用渐近特征金字塔网络AFPN改进yolov26检测头融合P2网络结构(让小目标无所遁形,全网独家首发)

本文介绍一种基于AFPN渐近特征金字塔网络改进的YOLOv26四检测头Detect_FPN。AFPN通过逐级融合底层细节、中层结构与高层语义特征,缩小不同尺度特征之间的语义差距,减少直接融合带来的信息冲突,使检测头获得更稳定、更充分的多尺度表达。本文进一步增加高分辨率小目标检测分支,强化对微小目标、密集目标和复杂背景目标的感知能力,适合工业缺陷、遥感及无人机等场景。文中将展示基础模型与改进模型的训练对比结果,并提供完整代码、配置文件、模块注册方法及Codex修改思路,方便直接复现和二次创新。

Snu77的博客 368

Open3D (C++) 计算点云坐标最值及其索引

使用C++版本的Open3D计算点云最值点及其对应的下标索引

点云侠的博客 728

基于多智能体协作的智能机器人任务规划:从场景抽象到代码实现

多智能体系统是人工智能领域的重要分支,它研究多个智能体在共享环境中如何通过感知、决策与协作完成复杂任务。其核心原理在于将现实场景抽象为包含环境、实体与状态的世界模型,并通过策略函数或学习算法实现智能决策。这一技术对于构建自动化系统、游戏AI和智能机器人具有重要价值,广泛应用于智能家居、安防巡逻和自动化管理等场景。本文以经典动画场景为切入点,通过Python代码演示如何构建一个包含环境感知、威胁评估和动作执行的智能体系统,并深入探讨了决策树、状态管理和模拟调试等关键技术环节,为开发者理解智能体协作与任务规划提

cneo2012的博客 335

【大语言模型 21】语言模型训练目标:MLM vs CLM vs GLM对比分析

本文深入对比分析三种主流语言模型训练目标:掩码语言模型(MLM)、因果语言模型(CLM)和双空白填充(GLM)。通过数学推导、代码实现和实验对比,揭示不同训练目标的工作机制、适用场景和性能差异,为选择合适的预训练策略提供科学指导。

熵数实验室 1174

从库使用者到创造者:掌握软件库设计与实现的核心原则

在软件开发中,库是实现代码复用和模块化的核心机制,它通过封装复杂逻辑、提供清晰接口来提升开发效率。其设计原理遵循抽象、可移植、接口稳定和易用性等基本原则,旨在降低使用门槛并确保长期维护性。从技术价值看,优秀的库能显著减少重复劳动、提升系统可维护性,并促进技术生态的标准化。在应用场景上,无论是嵌入式开发中的硬件驱动库,还是服务端的高性能网络库,亦或是前端UI组件库,其设计思想都是相通的。本文以Arduino智能小车驱动库和C++日志库为例,深入探讨了库的设计哲学与实现细节,涵盖了静态库与动态库的选择、APIE

weixin_33739646的博客 445

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 390

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 228

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Python+Agent入门笔记(二):列表推导式、模块和异常,这些写 Agent 前得会

接上一篇《Python+Agent入门笔记(一)》。基础语法跑通之后,这篇聊几块日常写脚本绕不开的东西。还是按 JS/Go 开发者的视角写,尽量记录我实际卡过的地方。

qq_41241612的博客 430

详解Python条件语句

在 Python 中,if...else 是一种条件语句,可以根据给定的条件执行不同的操作。这个语句通常用于控制程序的流程。

2601_96798737的博客 205

微调数据集构建:清洗、标注、格式转换完整流程

摘要解决微调数据直接抓取导致的噪声污染、模式崩溃与Token错位问题。适用于需为大模型SFT阶段构建高质量训练集的数据与算法工程师。读完可获得包含启发式清洗、MinHash去重及ChatML格式对齐的完整可运行数据流水线。关键词数据清洗、MinHash去重、数据标注、ChatML、SFT数据集、数据配比背景与问题大模型微调效果的上限由数据质量决定,直接使用未经处理的原始语料极易引发模型复读、幻觉与指令遵循能力退化。

2402_85729970的博客 486
上一篇: 我常遇到的8个数据可视化的错误,值得借鉴
下一篇: 20个改善编码的Python异常处理技巧,让你的代码更高效
我爱学大模型
博客等级 码龄3年 7883粉丝 687原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值