WTF?能把Python代码写得这么优雅的都是神仙程序员吧!

10段实用Python代码,帮我省了几万块钱 编程语言的出现和演进都是为了直接或者简洁的改变工作效率,Python的出现并非只能用于数据分析、机器学习。如果仔细琢磨日常的工作 和生活,可以通过一些Python脚本大大的提升效率,同时还可以绕开很多收费工具,节省不少钱。今天,我就来给大家介绍之前写过的一些杀手级脚本,真的是幸福感爆棚!使用这个自动化脚本,以编程方式编辑你的图像。下面是我在编辑图片的常用功能,如模糊、旋转、翻转、合并等。要实现这些功能,往常都需要安装一些臃肿的软件,但是,一个简单的Python脚本就可以轻... 阅读详情

“人生苦短,我用Python”,说的就是Python开发“快”的优势,相同的代码量能够完成其他语言数倍代码量的任务。一般情况下,像C++、C、JAVA 、GO这类编译型语言要比PHP、Python、JavaScript这类解释性语言要快一些,但是各有各的优势。

Python以其开发方便、语言生态健全,乘着人工智能之风很快成为了一门明星语言。使用Python提升开发效率的同时,代码的运行效率却没那么高。下面将介绍几种简单的方法,尝试提升代码的可读性、执行效率。
在这里插入图片描述
一、优化编程惯例

1)用生成式生成列表:

假设我们正在编写爬虫,现在需要将解析到的信息生成列表。

不优雅的方法:

#假设有列表一
list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
#先定义一个空列表
list2 = []
for i in list1:
    list2.append(i)
print(list2)

得到:[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’]

用生成式更加优雅的完成:

#假设有列表一
list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
list2 = [i for i in list1]
print(list2)

输出:[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’]

2)使用enumerate进行迭代:

enumerate方法用于将一个可遍历的数据对象组合为一个索引序列,同时输出数据和数据下标,一般用于for循环之中,演示如下:

不优雅的方法:

#假设有列表一
list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
list2 = [i for i in list1]
print(list2)

输出:

0 张一鸣
1 马云
2 马化腾

优雅的方法,使用enumerate函数:

bat = ['张一鸣', '马云', '马化腾']
for n, i in enumerate(bat):
print(n,i) #输出结果同上

3)用join方法生成字符串:

join()函数能够将序列中的元素按照给定的字符链接生成一个新的字符串。

不好的代码:

str1 = ['我', '在', '知', '了', '课',  '堂', '学' , 'Python']
str2 = ''
for i in str1:
    str2 = str2  + i +  '-'
print(str2)

输出:我-在-知-了-课-堂-学-Python-

使用join方法:

str1 = ['我', '在', '知', '了', '课',  '堂', '学' , 'Python']
str2 = '-'.join(str1)
print(str2)

输出:我-在-知-了-课-堂-学-Python

4)不适用临时变量交换两个值:

a, b = b, a

5)使用:

if __name__ == '__main__':

二、使用Cython模块提升代码执行速度

Python有着良好的扩展性与接口功能,人工智能大多数库都是C++或者C写来由Python调用。大公司会使用Python来提升开发效率,用C来弥补性能缺口。在Python官方文档中,也给出了Python的C API接口的文档,但是下面也标注了“给 C/C++ 程序员的参考手册”,绝非等闲之辈能轻易掌握!好消息是,有Cython模块,官方是这样介绍的(翻译):

[Cython]是一种编程语言,它使编写Python语言的C扩展与Python本身一样容易。它旨在成为[Python]语言的超集,从而为它提供高级,面向对象,功能和动态编程。

Cython是Python编译器。这意味着它可以编译普通的Python代码而无需进行更改(除了一些尚不支持的语言功能的明显例外),接下来使用Cython提升Python执行速度。

1)安装:

使用cython最简单的方法是执行

pip install Cython

也可以从https://cython.org/下载最新版本 。解压缩tarball或zip文件,输入目录,然后运行:

python setup.py install

另外需要安装gcc,linux下一般自带。

2)Hello, Cython:

使用官方推荐的方法(使用setuptools)构建我们的代码,
创建hello.pyx文件(你没看错,不是.py而是.pyx)并键入:

def say_hello_to(name):
    print("Hello %s!" % name)

创建对应的setup.py脚本:

from setuptools import setup
from Cython.Build import cythonize
​
setup(
    name='Hello world app',
    ext_modules=cythonize("hello.pyx"),
    zip_safe=False,
)

cmd到当前目录,执行:

![5](C:\Users\LookCos\Desktop\文章\5.png)]python setup.py build_ext --inplace

在这里插入图片描述
gcc与g++都安装但是,报错,缺乏 Microsoft visual C++ 14.0,遂下载安装:
在这里插入图片描述
4GB!太大了,用linux试试!

在centos环境下,重复上述步骤:
在这里插入图片描述
成功,并且生成了一个hello.cpython-36m-x86_64-linux-gnu.so文件, 在Windows下会生成.pyd文件。

使用:

from hello import say_hello
say_hello_to("zhiliao") #成功使用该方法

在这里插入图片描述
hon VS Python :

斐波那契数列,通俗易懂,使用Python容易实现,也考验计算能力。我们分别用Python和cython来计算斐波那契第38项的值,同一台机器,看谁算的快!

使用Python:

创建fib1.py并键入:

import time
​
#创建一个计算斐波那契数列的方法
def fib(n):
if n in [1, 2]:
return 1
return fib(n-1) + fib(n-2)
​
start = time.time() #获取计算前时间戳
fib(38)             #计算
end = time.time()   #计算结束时间戳
print("耗时{}秒".format(end-start))

成绩:11.73秒
在这里插入图片描述
使用Cython:

创建一个fib2.pyx并键入:

#创建一个计算斐波那契数列的方法
def fib(n):
if n in [1, 2]:
return 1
return fib(n-1) + fib(n-2)

创建相应的setup.py:

from setuptools import setupfrom Cython.Build import cythonizesetup(    name='Hello world app',    ext_modules=cythonize("fib2.pyx"), #注意修改文件名    zip_safe=False,)

执行:

python3 setup.py build_ext --inplace

建立测试文件test.py:

import time
from fib2 import fib
start = time.time() #获取计算前时间戳
fib(38)             #计算
end = time.time()   #计算结束时间戳
print("耗时{}秒".format(end-start))

成绩,2.20秒
在这里插入图片描述
awesome!快了5倍多,实际上随着项的增大,成绩还会有所提升。

使用cython不仅能够大幅提升代码的运行速度,还能够起到加密核心代码的作用,即便是被对手入侵了服务器,也不必担心核心代码泄露。

三、使用科学计算库

知名的科学计算库如numpy、pandas等底层都使用C++、C完成,这在一定程度上保证了执行速度,另一方面也能帮助我们提升可读性。

我们分别用numpy和传统的**方法来计算一个数组的乘方,

import time
import numpy as np
#定义一个大数组
arr_list = list(range(10000000))
​
np_start = time.time()
np_list = np.array(arr_list)
res =  np_list ** 2
np_end = time.time()
​
def pow2(x):
    return x ** 2
#使用**方法
py_start = time.time()
res1 = [pow2(i) for i in arr_list]
py_end = time.time()
​
print("numpy用时{0}秒\n **用时{1}秒".format(np_end - np_start, py_end - py_start))

很给力,快了数倍:

numpy用时0.5964438915252686秒
 **用时4.138192176818848秒

相信,不断的优化我们的编程习惯,像写诗一样写代码,养成良好科学的计算习惯,一定能够写出pythonic代码!

一个小示例告诉你Python语言的优雅之处 比如, 我们希望希望检测”一段string是否以特定的字符串结尾?”, 通常我们使用: if needle.endswith('ly') or needle.endswith('ed') or needle.endswith('ing') or needle.endswith('ers'): print('Is valid') else: print('Invalid') 十分丑陋是吧? 如果我们检测变量needle是否是以下特定字符串之一的话, 会这样写: if needle in ('ly', 'ed', 'ing', 'ers'): pr 立即下载

相关推荐

密码学新手必看:三大顶级会议论文下载与阅读指南(附完整资源链接)

本文为密码学新手提供了系统性的三大顶级会议(Crypto、Eurocrypt、Asiacrypt)论文学习指南。内容涵盖如何高效获取最新论文资源、结构化精读论文的方法论,以及将理论转化为代码实践的路径,旨在帮助初学者快速构建密码学知识体系并应用于研究。

weixin_29214691的博客 323

30个超实用的Python极简代码,五分钟get

学Python怎样才学的好又快呢,当然是实战各种小项目,只有自己动手动脑,才能最高效的搞懂规则,初学者也可以尝试着自己实现哦。(文末有Python资料领取) Python是机器学习最广泛采用的编程语言,也是目前最流行的语言之一,它的简单和易用性造就了它如此流行的原因。如果你对Python感兴趣的话,希望这篇文章能给你带一些启发。

libaiup的博客 1万+

SRAM:SRAM入门指南与工作原理

SRAM(Static Random Access Memory),即静态随机存取存储器,是一种能够读取和写入数据的内存(RAM)。它使用由晶体管组成的触发器来存储数据,只要有电源供应,数据就可以稳定地保存。与动态随机存取存储器(DRAM)不同,SRAM 不需要周期性地刷新来保持数据。

weixin_42896509的博客 1万+

Python|十五个超级炫酷的代码

视频是动态的,不信你运行试试。 2 温柔的狮子 4 520+爱心 5 鲜艳的玫瑰 6 一颗小爱心 7 一个呆萌的皮卡丘 8 小猪佩奇 9 放烟花 10 小呆呆小黄人 11 十里桃花飘落 12 炸死小坏蛋 13 哆啦A梦 14 一个微信表情包 15 秀死他......

weixin_61181717的博客 17万+

AI编程助手Cursor如何革新经济学研究:从计量模型到可视化全流程实战

在数据科学和人工智能技术蓬勃发展的今天,如何高效地将前沿AI工具融入专业领域的研究工作流,成为提升科研效率的关键。其核心原理在于通过自然语言交互,将研究者的专业问题转化为机器可执行的指令,从而实现人机协作的范式转移。这一技术的核心价值在于大幅降低非计算机背景研究者的编程门槛,将精力从繁琐的代码实现中解放出来,更聚焦于学科本身的思想与逻辑。尤其在经济学、金融学等高度依赖数据分析和计量建模的领域,AI编程助手能够快速处理数据清洗、模型估计、可视化及结果解释等任务。具体到应用场景,研究者可以利用结构化提示词工程,

weixin_42531579的博客 300

在昇腾910B服务上部署搭建适配PDF解析工具Mineru2.5开源项目

本文介绍了在昇腾910B服务器上部署开源PDF解析工具Mineru2.5的过程。首先从昇腾社区下载mindie镜像并运行容器,安装系统依赖。针对部署过程中遇到的多个报错问题(如torchvision与torch版本不匹配、昇腾软件栈与NumPy 2.0不兼容等),提供了具体解决方案和兼容版本。通过设置环境变量、安装指定版本的Python依赖包,成功部署Mineru项目并下载模型。最后运行测试,验证了在NPU设备上运行pipeline的可行性。整个过程详细记录了版本适配和错误处理方法,为类似部署场景提供了参考

一起加油吧 2165

Python中那些神一样的代码

我一直说Python是非常优美的语言,那到底如何个美呢,其中有一个特性就是简洁.很多果粉为啥特别喜欢苹果手机和苹果电脑,一方面确实做的漂亮,另外一个就是简洁。你想苹果手机开机关机,删软件都是一个步骤,而我们用win,关机至少3-5步,删软件更不要说了,非常麻烦. 有的时候做产品不是要做加法而且要做减法,并且做到极致(有点跑题了,我们还是回到Python) 我把Python里面非常有名的简洁,...

620

Utrust4701F与Utrust2700R读写器在银河麒麟系统的安装及测试步骤说明

Utrust4701F与Utrust2700R读写器支持银河麒麟系统,广泛应用会员管理、支付管理等领域。本文将重点介绍Utrust4701F与Utrust2700R读写器在银河麒麟系统的安装及测试步骤说明。以上方法适用于主流国产操作系统,如 优麒麟(UbuntuKylin)/ 中标麒麟(NeoKylin) / UOS(统信操作系统)/ 中兴新支点 / 红旗 linux(redflag linux)/ 普华 Linux(I-soft OS) / 威科乐恩 Linux(WiOS)等

华翔天诚科技 1834

程序员写的python代码_WTF?能把Python代码写得这么优雅的都是神仙程序员吧!

“人生苦短,我用Python”,说的就是Python开发“快”的优势,相同的代码量能够完成其他语言数倍代码量的任务。一般情况下,像C++、C、JAVA 、GO这类编译型语言要比PHP、Python、JavaScript这类解释性语言要快一些,但是各有各的优势。Python以其开发方便、语言生态健全,乘着人工智能之风很快成为了一门明星语言。使用Python提升开发效率的同时,代码的运行效率却没那么高...

weixin_39964978的博客 127

从零到一:手把手教你用C#开发AGV调度系统(附避坑指南)

本文详细介绍了如何使用C#开发高效的AGV调度系统,涵盖从环境搭建到核心算法实现的完整流程。重点解析了动态路径规划、多机协同等关键技术,并提供了实用的避坑指南和性能优化建议,帮助开发者快速构建工业级车辆控制调度系统。

blockchain9miner的博客 743

细胞膜电学特性的分数阶微积分建模

分数阶微积分在细胞膜电学特性建模中的应用主要体现在对细胞膜的电容行为和神经元放电活动的更精确描述上。

冰河世纪20的博客 623

bat装b小代码_WTF?能把Python代码写得这么优雅的都是神仙程序员吧!

“人生苦短,我用Python”,说的就是Python开发“快”的优势,相同的代码量能够完成其他语言数倍代码量的任务。一般情况下,像C++、C、JAVA 、GO这类编译型语言要比PHP、Python、JavaScript这类解释性语言要快一些,但是各有各的优势。Python以其开发方便、语言生态健全,乘着人工智能之风很快成为了一门明星语言。使用Python提升开发效率的同时,代码的运行效率却没那么高...

weixin_39609407的博客 897

ScanNet数据集下载全攻略:从申请到解析的保姆级教程(含常见问题解决)

本文提供了ScanNet数据集从申请授权到下载、解析的完整实战指南。针对这个大规模室内RGB-D数据集,详细介绍了官方申请流程、优化下载策略、数据验证方法,并重点解决了深度图解析等常见问题,帮助三维视觉研究者高效获取和使用这一宝贵资源。

5f4d3s2a1q的博客 622

inkscape生成g代码_WTF?能把Python代码写得这么优雅的都是神仙程序员吧!

“人生苦短,我用Python”,说的就是Python开发“快”的优势,相同的代码量能够完成其他语言数倍代码量的任务。一般情况下,像C++、C、JAVA 、GO这类编译型语言要比PHP、Python、JavaScript这类解释性语言要快一些,但是各有各的优势。Python以其开发方便、语言生态健全,乘着人工智能之风很快成为了一门明星语言。使用Python提升开发效率的同时,代码的运行效率却没那么高...

weixin_39965673的博客 332

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Pyhton中三个神仙般的返回操作

来源:https://github.com/leisurelicht/wtfpython-cn第一个:神奇的字典键some_dict = {} some_dict[5.5] = "...

weixin_44747933的博客 94

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

「WTF系列」深入Java中的位操作

cpongo5 327

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Python十大装B语法

Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。

Python作业辅导员 - 天元浪子 36万+

C++大战Python - 以C++11重写欢乐斗地主残局解答器

业界传说Python平均一行代码能够顶的上几十行C/C++代码。业界还传说,C++效率能够达到Python的几十倍。 对于以上二者,笔者本来感觉也许差不多只是略夸张。笔者曾经用C++和Python分别实现了不带cache的求Fibonacci数的函数,大约C++的效率确实可以达到Python效率的几十倍,不过代码量没有几十倍,只是略多。但这个毕竟是toy programming,如果是在一个真正实...

FinixLei的专栏 (https://github.com/FinixLei) 2841

那些让人拍手叫绝的 Python 代码

Python 是一个设计优美的解释型高级语言, 它提供了很多能让程序员感到舒适的功能特性。但有的时候, Python 的一些输出结果对于初学者来说似乎并不是那么一目了然。 如果您是一位经验比较丰富的 Python 程序员, 你可以尝试挑战看是否能一眼看出运行的结果。 只运行一次? 下面的代码,会运行几次? for i in range(4): print(i) i = 10 运行之后,输出: 0 1 2 3 What? 难道不是输出 0 ? 原理解析: 由于循环在 Python 中工作

Python学习与数据挖掘 7339

python有趣的代码-介绍wtfPython—Python中一组有趣微妙的代码【收藏】

wtfPython—Python中一组有趣微妙的代码【收藏】wtfPython是github上的一个项目,作者收集了一些奇妙的Python代码片段,这些代码的输出结果会和我们想象中的不太一样;通过探寻产生这种结果的内部原因,可以让我们对Python里的一些细节有更广泛的认知。1.字典键的隐式转换some_dict = {}some_dict[5.5] = "Ruby"some_...

q6q6q的专栏 674

Python实现“神仙趋势”

闲着没事瞎倒腾,前几天网上看到一个描述股票趋势姿势,名字叫做“神仙趋势”,听着名字好像很厉害呀。到底说明的是一种什么样的趋势呐,带着激动的心情,作者今天就用python实践了一波。发现也就...

tianjingle 1015

【python】python神仙模块的用法 -之- OS模块

每天一碗干货~ 命令 操作 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir(“dirname”) 改变当前脚本工作目录;相当于shell下cd os.curdir 返回当前目录: (’.’) os.pardir 获取当前目录的父目录字符串名:(’…’) os.makedirs(‘dirname1/dirname2’) 可生成多层递归目录 os.removedirs(‘dirname1’) 若目录为空,则删除,并递归到上.

weixin_43988131的博客 206

程序员必读书单

作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://lucida.me/blog/developer-reading-list/ 关于 本文把程序员所需掌握的关键知识总结为三大类19个关键概念,然后给出了掌握每个关键概念所需的入门书籍,必读书籍,以及延伸阅读。旨在成为最好最全面的程序员必读书单。 前言 Reading makes a full ma...

weixin_34113237的博客 4888

代码这样写更优雅 (Python 版)

Python 这门语言最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净、整洁、一目了然。但有时候我们写代码,特别是 Python 初学者,往往还是按照其它语言的思维习惯来写,那样的写法不仅运行速度慢,代码读起来也费尽,给人一种拖泥带水的感觉,过段时间连自己也读不懂。 《计算机程序的构造和解释》的作者哈尔·阿伯尔森曾这样说:“Programs must be written for peop...

weixin_33978016的博客 1220

What is WTF?

wtf=what the fxxksup= hi (when start of meeting each other) (hai What's up! )suck= u suck??? ;) (ho c lor ) rofl= rolling on floor laughingbrb=be right backafk= away from keyboardomg=oh my god 不停说抱歉的...

编程开发资料库 204
上一篇: Python解析罗永浩直播带货背后的数据秘密!
下一篇: lxml大战B站-从未见过如此丝滑的解析神器!
jspython
博客等级 码龄7年 61粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值