1.合并可以匹配的条件

 s1 = 7
if s1 > 5 and s1 < 10:
print(s1) s1 = 7
if 5 < s1 < 10:
print(s1)

2.if条件避免与布尔值比较

 l1 = []
if l1 != []:
print('l1 is not empty')
else:
print('l1 is empty') l1 = []
if l1:
print('l1 is not empty')
else:
print('l1 is empty')

此时等价于if True,属于False的值:None、False、数字0、空列表元组字典集合,但是有的时候数字0我们是有用的,所以我们用is来比较

 s1 = 0
if s1:
print('s1 is not empty')
else:
print('s1 is empty') s2 = 0
if s2 is not None:
print('s2 is not empty')
else:
print('s2 is empty')

so,我们可以看出is与==的意义是不同的,事情的真相是is比较的是内存地址,None在python是单例的,==比较的是值

 l1 = [0, 1, 2]
l2 = [0, 1, 2]
if l1 is l2:
print('l1 is l2')
else:
print('l1 is not l2') if l1 == l2:
print('l1 == l2')
else:
print('l1 != l2')

3.简单的if else用三元运算代替

 if 1 == 2:
s1 = '北方姆Q'
else:
s1 = 'bfmq' s1 = '北方姆Q' if 1 == 2 else 'bfmq'

4.enumerate迭代器,可以循环的对象可以使用,返回两个值,第一个是位置,第二个是对应元素

 l1 = ['dfmq', 'xfmq', 'nfmq', 'bfmq']
for index, value in enumerate(l1):
print('%d %s' % (index, value))

5.for+else表示当循环完for内所有后才会执行else下的程序,中途break则不会

 l1 = [11, 22, 33, 44]

 for s1 in l1:
if s1 <= 100:
break
else:
print('喵喵喵喵!')

6.少定义布尔返回值变量

 def low1(a, b, c):
flag = False
if a == b == c:
flag = True
return flag ret = low1(6, 6, 6) def low2(a, b, c):
if a == b == c:
return True
else:
return False ret = low2(6, 6, 6) def f1(a, b, c):
return a == b == c ret = f1(6, 6, 5)

7.被调用事不要抛出自定义异常

 def get_json_url(url):
try:
url = json.load(url)
return url except Exception as e:
print('something wrong!')
return None

这样第三方只会获得一个something wrong!信息,无法确定哪里出了错误,so
def get_json_url(url):
  return json.load(url)
这样异常会返回给调用者

8.多用EAFP,少用LBYL

 def get(user):
if user is None:
print('no user!')
print(user.info)
LBYL在进行程序前需要考虑前提条件是否成立,因此穿插了很多条件检查 def get(user):
try:
print(user.info) except NameError:
print('no user!')

9.连等号赋同值

 a = 10
b = 10
c = 10 a = b = c = 10
此时a=666,但是b跟c是不会变的哦~

10.python支持直接调换值哦

 10.python支持直接调换值哦
a = 10
b = 100
temp = a
a = b
b = temp a = 10
b = 100
a, b = b, a

11.多次调用对象方法时,可以用链式调用方法,避免中间产生过多变量及内存

 s1 = '  north is good!'
s2 = s1.strip()
s3 = s2.upper()
s4 = s3.replace('!', '?') s2 = s1.strip().upper().replace('!', '?')
当然过多了连续调用可能会影响到可读性,so,简短的调用可以写在一起,出现一个比较大变化时另起一行是比较好的

12.使用isinstance对不同类型参数进行对应操作

 def get_size(some_object):
if isinstance(some_object, (list, dict, str, tuple, set)):
return len(some_object)
elif isinstance(some_object, (bool, type(None))):
return 1
elif isinstance(some_object, (int, float)):
return int(some_object) print(get_size('bfmq'))
print(get_size([1, 2, 3, 4, 5]))
print(get_size(10.0))
print(get_size([]))

13.使用product精简多层嵌套循环

 from itertools import product

 x_list = ['a', 'b', 'c']
y_list = ['d', 'e', 'f']
z_list = [1, 2, 3] for x in x_list:
for y in y_list:
for z in z_list:
print(f"{x}:{y}:{z}") for x, y, z in product(x_list,y_list, z_list):
print(f"{x}:{y}:{z}")

14.使用any/all进行判断

 i_list = [x for x in range(10)]

 for i in i_list:
if i > 5:
print(True)
break if any(i > 5 for i in i_list):
print(True)

python逼格提升的更多相关文章

  1. python实战提升--1

    #python实战提升 1. 如何在列表.字典.集合中根据条件筛选数据? python中for _ in range(10)与for i in range(10)有何区别 下划线表示 临时变量, 仅用 ...

  2. Python菜鸟之路:Python基础-逼格提升利器:装饰器Decorator

    一.装饰器 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等. 装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身 ...

  3. numba,让python速度提升百倍

    python由于它动态解释性语言的特性,跑起代码来相比java.c++要慢很多,尤其在做科学计算的时候,十亿百亿级别的运算,让python的这种劣势更加凸显. 办法永远比困难多,numba就是解决py ...

  4. Python 为了提升性能,竟运用了共享经济

    大家或许知道,Python 为了提高内存的利用效率,采用了一套共用对象内存的分配策略. 例如,对于那些数值较小的数字对象([-5, 256]).布尔值对象.None 对象.较短的字符串对象(通常 是 ...

  5. Python性能提升小技巧

    第一部分 1-使用内建函数: 你可以用Python写出高效的代码,但很难击败内建函数. 经查证. 他们非常快速 2-使用 join() 连接字符串. 你可以使用 + 来连接字符串. 但由于string ...

  6. 关于python性能提升的一些方案(上)

    一.函数调用优化(空间跨度,避免访问内存) 1.大数据求和,使用sum a = range(100000) %timeit -n 10 sum(a) 10 loops, best of 3: 3.15 ...

  7. 机器学习之路: python 实践 提升树 XGBoost 分类器

    git: https://github.com/linyi0604/MachineLearning 数据集被我下载到本地,可以去我的git上拿数据集 XGBoost提升分类器 属于集成学习模型 把成百 ...

  8. python之提升程序性能的解决方案

    Python在性能方面不卓越,但是使用一些小技巧,可以提高Python程序的性能,避免不必要的资源浪费. 1. 使用局部变量 尽可能使用局部变量替代全局变量,可以是程序易于维护并且有助于提高性能节约成 ...

  9. 【Spark机器学习速成宝典】模型篇07梯度提升树【Gradient-Boosted Trees】(Python版)

    目录 梯度提升树原理 梯度提升树代码(Spark Python) 梯度提升树原理 待续... 返回目录 梯度提升树代码(Spark Python) 代码里数据:https://pan.baidu.co ...

随机推荐

  1. LeetCode85 Maximal Rectangle java题解

    public static int maximalRectangle(char[][] matrix) { int rowNum=matrix.length; if(rowNum==0) return ...

  2. VueJS数据绑定文本显示:{{message}}

    HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...

  3. sed系列:行或者模式匹配删除特定行

    “p” command prints the buffer (remember to use -n option with “p”) “d” command is just opposite, its ...

  4. npm 淘宝设置代理

    直接安装cnpm导致无限索引,因此直接使用代理 方法一: 直接在当前用户文件夹下,npmrc 文件上直接设置代理:registry=https://registry.npm.taobao.org 方法 ...

  5. sublime常用的插件

    Sublime Text常用插件 1.Package Control 快捷键ctrl+~调出Sublime Text控制台,然后输入以下代码(Sublime Text3)安装Package Contr ...

  6. ffmpeg mediacodec 硬解初探

    ffmpeg mediacodec 硬解初探 1编译: ffmpeg自3.1版本加入了android mediacodec硬解支持,解码器如图 硬件加速器如图(还不清楚硬件加速器的功能) 编译带h26 ...

  7. RDLC报表 报表数据 栏 快捷键

    血淋淋的教训啊,这段时间用RDLC报表,创建报表后会在右边加载[服务器资源管理器][工具栏][报表数据]一些栏目 如图 [服务器资源管理器][工具栏]还好[报表数据]栏在开发的时候不小心点了X给关掉了 ...

  8. 如何获取ipa 包的图片

    突然想起当初刚学习iOS的时候,就经常通过抓包和提取素材的方式来模仿App,今天就教大家如何一步步提取App的素材! 大家是否有过想要获取别人的素材的想法?看到某些App的资源很不错,很想导出来用用, ...

  9. EasyDarwin开源流媒体服务器低延时直播之转发缓存跟进算法

    前言 前一段时间,我们为EasyDarwin实现了客户端快速显示画面/听到同步声音的缓存关键帧检索方案,具体的实现方法分别在<EasyDarwin手机直播是如何实现的快速显示视频的方法>和 ...

  10. jquery ui 怎么实现tab标签切换效果

    1.效果图 2.HTML 代码 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> &l ...