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. iOS GCD使用

    Grand Central Dispatch(GCD)是异步运行任务的技术之中的一个. 一般将应用程序中记述的线程管理用的代码在系统级中实现.开发人员仅仅须要定义想运行的任务并追加到适当的Dispat ...

  2. Jenkins系列之-—06 Ant构建

    一.Ant 简介&构建环境 Apache Ant 是由 Java 语言开发的工具 构建ant环境: 1). 安装jdk,设置JAVA_HOME ,PATH ,CLASS_PATH 2). 下载 ...

  3. TIBCO RV

    http://blog.csdn.net/tiercel2008/article/details/6799952

  4. ACPI in Linux

    https://01.org/zh/linux-acpi The goal of this project is to enable Linux to take advantage of platfo ...

  5. ElasticSearch 分页检索

    在ElasticSearch的多索引和多类别里说到我们在集群中有14个文档匹配我们的(空)搜索语句.单数仅仅有10个文档在hits数组中.我们怎样看到其它文档? 和SQL使用LIMITkeyword返 ...

  6. 简单vi配置:YouCompleteMe

    下图就是我的VI: 按F5 F6分别调出左右的窗体: 按C-P点出CtrlP搜索,直接查找project中的文件: 自己主动补全用的YouCompleteMe.超级强悍: watermark/2/te ...

  7. 【重磅干货】看了此文,Oracle SQL优化文章不必再看!

    目录 SQL优化的本质 SQL优化Road Map 2.1 制定SQL优化目标 2.2 检查执行计划 2.3 检查统计信息 2.4 检查高效访问结构 2.5 检查影响优化器的参数 2.6 SQL语句编 ...

  8. linux的su和sudo(转载)

    来源:http://www.jb51.net/LINUXjishu/12713.html 一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比 ...

  9. JSP页面的编码设置(转载)

    1. pageEncoding:<%@ page pageEncoding="UTF-8"%> jsp页面编码: jsp文件本身的编码 2. contentType: ...

  10. Python yield 生成器

    yield:生成器 任何使用yield的函数都称之为生成器,如: def count(n): : yield n   #生成值:n 另外一种说法:生成器就是一个返回迭代器的函数,与普通函数的区别是生成 ...