有趣的Python的方法和包

mac2025-05-04  7

这里无关机器学习深度学习模式识别等一系列高端的知识,纯粹就是一些KK写py时候碰到的有意思的,有点秀的方法,可以让rookie看了觉得会出BUG😄😄

MENU

方法合集解包用法单行if-else迭代器传入函数中不用加括号orand字符串的截取 包再也不用numpy啦--Cupy神奇的pycallgraph!!

方法合集

解包用法

类似这样a,b,c = [‘a’, ‘b’, ‘c’]

单行if-else

a = 1 b = 3 if a == 1 else 2 print('it is one' if a == 1 else 'no')

感觉很酷炫,rookie看了估计会和你说你写错了hhh

迭代器传入函数中不用加括号

# 一般是这样 a = (i for i in range(10)) sum(a) # 我们可以这样 sum((i for i in range(10))) # 但我们还可以这样 sum(i for i in range(10)) # 类似的有 ' '.join(str(i) for i in range(10))

写hp的循环的sum…

or

or的用法python中 x or y 表示如果x为真就是x的值,否则为y的值 我们会经常看到类似这样的用法(比如函数的一个 value 参数没有设置默认值,这样使用就允许它不赋值)

value = value or {} # 相当于 value = value if value else {}

and

and的用法python中 x and y 表示如果x是假,结果就是x的值,否则就是y的值x and y and z 多个and连接时,如果全是真结果就是最后一个的值;如果中间有假的值,结果就是第一个假的值 举一个例子

def not_empty(a): return a and a.strip() not_empty(' a ') # 值为 'a' not_empty(None) # 不会报错(如果 return a.strip() 就会报错) # 在处理None的问题上相当于 def not_empty(a): if a is None: return None else: return a.strip()

细细品味and和or的差别,他们逻辑类似,但是实现的功能是不可以相互替代的or 是结果如果不满意有个善后工作and是要做一件事之前先检验一下,不能做就不让它做

字符串的截取

str = ‘0123456789’ print str[0:3] #截取第一位到第三位的字符 012 print str[:] #截取字符串的全部字符 0123456789 print str[6:] #截取第七个字符到结尾 6789 print str[:-3] #截取从头开始到倒数第三个字符之前 0123456 print str[2] #截取第三个字符 2 print str[-1] #截取倒数第一个字符 9 print str[::-1] #创造一个与原字符串顺序相反的字符串 9876543210 print str[-3:-1] #截取倒数第三位与倒数第一位之前的字符 78 print str[-3:] #截取倒数第三位到结尾 789 print str[:-5:-3] #逆序截取 96

再也不用numpy啦–Cupy

Numpy 的速度已经较 Python 有了很大的提升。当你发现 Python 代码运行较慢,尤其出现大量的 for-loops 循环时,通常可以将数据处理移入 Numpy 并实现其向量化最高速度处理。但有一点,上述 Numpy 加速只是在 CPU 上实现的。由于消费级 CPU 通常只有 8 个核心或更少,所以并行处理数量以及可以实现的加速是有限的。这就催生了新的加速工具——CuPy 库 CuPy 是一个借助 CUDA GPU 库在英伟达 GPU 上实现 Numpy 数组的库。基于 Numpy 数组的实现,GPU 自身具有的多个 CUDA 核心可以促成更好的并行加速。CuPy 接口是 Numpy 的一个镜像,并且在大多情况下,它可以直接替换 Numpy 使用。只要用兼容的 CuPy 代码替换 Numpy 代码,用户就可以实现 GPU 加速。CuPy 支持 Numpy 的大多数数组运算,包括索引、广播、数组数学以及各种矩阵变换。如果遇到一些不支持的特殊情况,用户也可以编写自定义 Python 代码,这些代码会利用到 CUDA 和 GPU 加速。整个过程只需要 C++格式的一小段代码,然后 CuPy 就可以自动进行 GPU 转换,这与使用 Cython 非常相似。在开始使用 CuPy 之前,用户可以通过 pip 安装 CuPy 库:

pip install cupy

CuPy 安装之后,用户可以像导入 Numpy 一样导入 CuPy:

import numpy as np import cupy as cp import time

在接下来的编码中,Numpy 和 CuPy 之间的切换就像用 CuPy 的 cp 替换 Numpy 的 np 一样简单。

神奇的pycallgraph!!

pycallgraph,其作用就是追踪函数的相互调用的情况,如此一来,对每个函数的的追踪将一览无余 分为三个部分:

graphviz(Graph Visualization Software-图形可视化软件)pycallgraph(创建python的可视化图形) 这里推荐在preference中点击添加包哦,我试过用pip安装,但是出了很神仙的错误,把我的python解释器给玩崩了…然后这里推荐大家用傻瓜方法安装,我用的pycharm! 具体的使用方法如下: pycallgraph graphviz -- ./pyname.py

这里./表示是当前目录哦,可以直接在terminal执行,或者你可以ls查看下当前是在哪层目录,如果不一致你就调下,just image!老师要你画函数流程图,然后你写了几千行代码,一行行的debug,可以当场去世hh,这时候用pycallgraph几秒钟生成然后扬长而去哈哈哈哈哈哈哈哈

最新回复(0)