整理了几个100%提高Python代码质量的技巧,直呼过瘾
创始人
2024-01-17 01:32:21
0

在这里插入图片描述
B站|公众号:啥都会一点的研究生

相关阅读

整理了几个100%会踩的Python细节坑,提前防止脑血栓
整理了十个100%提高效率的Python编程技巧,更上一层楼
Python-列表,从基础到进阶用法大总结,进来查漏补缺
Python-元组,从基础到进阶用法大总结及与列表核心区别,进来查漏补缺
Python-字典,从基础到进阶用法大总结,进来查漏补缺
Python-集合,从基础到进阶大总结,进来查漏补缺
订阅专栏 ===> Python

哈喽我是啥都生,本期整理了几个100%提高你Python代码质量的技巧,一起来看看吧~

case 1

第一个,使用元组或字典进行解包传参,像如下这种函数定义方式在Python中是相当常见的,为比较常规的传参方式

def product(a, b):return a * bres = product(3, 4)
print(res) # 12

但其实,使用元组与字典也极为方便,尤其是字典方式,工程中由于参数较多,经常将以字典对象将键值存于py文件中

def product(a, b):return a * barg_tuple = (3, 4)
arg_dict = {'a': 3, 'b': 4}print(product(*arg_tuple))  # 12
print(product(**arg_dict)) # 12

此外,同样的适用于函数返回值的解包

def product(a, b):return a * bdef fn_iterable():return 3, 4def fn_dict():return {'a': 3, 'b': 4}print(product(*fn_iterable())) # 12
print(product(**fn_dict()))    # 12

像fn_iterable,其返回值就是元组,只是换上了敌军的衣服隐藏起来了

def fn_iterable():return 3, 4res = fn_iterable()
print(type(res))  # 

case 2

下一个,在Python中,其实布尔值也可以当做整数值使用
,可以不这么用,但看了这么多期总结,这个知识点必须让你们知道,True相当于1,False相当于0,同样适用于各类运算与索引等场景中

isinstance为True,a<=5也为True,打印结果为2,a % 2 == 0为False,列表索引为0,结果为is odd

a = 3print(isinstance(a, int) + (a <= 5))     # 2
print(["is odd", "is even"][a % 2 == 0]) # is odd

case 3

说到布尔值,你可能不知道,Python3中,在循环中直接使用True或者False是可能带来耗时问题,为方便说明问题,首先定义一个函数如下

def test_true():count = 100while True:  # here is Trueif count < 0:breakcount -= 1

我们知道,除开None、False、0、非空等都能表示True,将上述例子while True更改如下

def test_1():count = 100while 1:  # here is 1if count < 0:breakcount -= 1

接下来,借助timeit库,我们来综合对比下运行100万次两种方法耗时,在我的机器上结果如下,性能越好差异越小,为什么会这样呢?因为Python3中似乎将True或False也当成了变量,不要小看这种提升,简单改变就能带来改进,积累起来很可怕的~

from timeit import timeitdef test_true():count = 100while True:  # here is Trueif count < 0:breakcount -= 1def test_1():count = 100while 1:  # here is 1if count < 0:breakcount -= 1print(timeit(test_true, number=1000000)) # 1.9993100020219572
print(timeit(test_1, number=1000000)) # 1.9615642849821597

case 4

关于布尔耗时,这个例子也挺有意思,使用bool()方法获得真实性其实是较慢的,因为它是全局变量,需要在多个命名空间进行查找

class L:def __init__(self):self.some_val = 5def __bool__(self):return bool(self.some_val)
l = L()

那么如何改善呢,很简单,使用not可以带来性能上的提升,not not与bool()的效果是相同的

class F:def __init__(self):self.some_val = 5def __bool__(self):return not not self.some_val
f = F()

同样的,引入timeit库进行对比,在我的机器上结果如下,可以看到对比还是挺明显的

import timeitslow_setup = """
class L:def __init__(self):self.some_val = 5def __bool__(self):return bool(self.some_val)
l = L()
"""fast_setup = """
class F:def __init__(self):self.some_val = 5def __bool__(self):return not not self.some_val
f = F()
"""print(timeit.timeit('l.__bool__()', slow_setup)) # 0.12642534699989483print(timeit.timeit('f.__bool__()', fast_setup)) # 0.08172031096182764

case 5

关于布尔值,Python有两种常见的条件赋值方式都与其极其相关,第一种是标准的三元表达式

b = True
print(True if b else False) # Trueb = False
print(True if b else False) # False

第二种,我们经常也会借助or达到目的,请一定一定注意,如果第一个值是假的,则自动返回第二个值,即使该值也是假的,这里稍不注意就出错

b = None or False
print(b) # Falseb = False or None
print(b) # None

case 6

下一个,如果想print一个很长的字符串,往往使得整个程序排版难看

long_text = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"

如果你将其变成如下形式,上述问题就解决啦

long_text = ("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC")

以上就是本期的全部内容,该系列仍将继续更新,点赞关注鼓励下吧~

相关内容

热门资讯

青山地质公园的导游词 青山地质公园的导游词  导语:青山之景实在数不胜数,青山之美也实在美不胜收。以下是小编为大家整理分享...
三峡大坝导游词 三峡大坝导游词(精选7篇)  作为一名具备丰富知识的导游,通常会被要求编写导游词,导游词不是以一代百...
游苏州导游词 游苏州导游词  夜读苏州诗,襟怀尽冰雪。下面是小编整理的游苏州导游词,希望对你有所帮助!  篇一:游...
党家村的导游词 党家村的导游词范文  距今已逾600年的韩城党家村古建筑村落已被列入“国际传统居民研究项目”中,陕西...
柯岩风景区导游词 柯岩风景区导游词  作为一名乐于为游客排忧解难的导游,常常需要准备导游词,导游词一般是根据实际的游览...
临海古长城导游词 临海古长城导游词  作为一名默默奉献的导游,通常会被要求编写导游词,导游词可以加深游客对景点的印象,...
龙津风雨桥导游词 龙津风雨桥导游词  龙津风雨桥位于湖南省芷江县,是一座历史久远的桥梁,以下是小编整理的龙津风雨桥导游...
杭州黄龙洞导游词讲解 杭州黄龙洞导游词讲解  黄龙洞位于湖南省张家界市核心景区武陵源风景名胜区内,是世界自然遗产、世界地质...
峨眉山猴山导游词 峨眉山猴山导游词(通用11篇)  作为一名乐于助人的导游,总不可避免地需要编写导游词,借助导游词可以...
乌镇东栅导游词详细版 乌镇东栅导游词详细版  乌镇是一块古老神奇而又美丽非凡的土地,是一个有1300年建镇史的江南水乡古镇...
著名导游词 著名导游词范文  导游词是导游人员引导游客观光游览时的讲解词,是导游员同游客交流思想,向游客传播文化...
西安太白山导游词 西安太白山导游词  各位团友:  今天是个天气晴朗的大好日子,我们将用2个小时的时间,沿着关中道西行...
北京故宫的导游词 北京故宫的导游词  北京故宫的导游词篇1亲爱的旅客朋友们: 你们好! 我是这次旅程的导游,我...
关于介绍华山导游词 华山是中国著名的五岳之一,海拔2154.9米居五岳之首,位于陕西省西安以东120公里历史文化故地渭南...
开平碉楼古村落导游词 开平碉楼古村落导游词  导游词,是导游人员引导游客观光游览时的讲解词,是导游员同游客交流思想,向游客...
靖江王府导游词 靖江王府导游词  作为一名可信赖的导游人员,就有可能用到导游词,借助导游词可以更好地宣传景点,引导游...
贵州四洞沟景区导游词 贵州四洞沟景区导游词  作为一名乐于助人的导游,总归要编写导游词,导游词作为一种解说的文体,它的作用...
鹿邑老君台的导游词 鹿邑老君台的导游词  老君台原名升仙台或拜仙台,原为明道宫的一部分,位于老子故里鹿邑县城内东北隅,老...
彩色沙林导游词 彩色沙林导游词  导语:对于云南陆良的彩色沙林,导游们会怎样进行解说?下面是小编整理的彩色沙林导游词...