时间:2021-05-22
前言
本文主要给大家总结介绍了关于Python的一些基础技巧,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
1.startswith()和endswith()参数可以是元组
当检测字符串开头或结尾时,如果有多个检测值,可以用元组作为startswith()和endswith()参数:
# badif image.endswith('.jpg') or image.endswith('.png') or image.endswith('.gif'): pass# goodif image.endswith(('.jpg', '.png', '.gif')): pass# badif url.startswith('http:') or url.startswith('https:') or url.startswith('ftp:'): pass# goodif url.startswith(('http:', 'https:', 'ftp:')): pass2.enumerate()设置start参数做为索引起始值
当用enumerate()迭代同时要得到索引时,可以设置start参数作为索引起始值:
# badfor index, v in enumerate(data): print(index+1, v)# goodfor index, v in enumerate(data, start=1): print(index, v)3.对切片命名
当代码中到处都是硬编码的切片索引时,我们的代码将变得无法阅读。可以对切片命名解决此问题:
record = '....................100.................513.25......'# badcost = int(record[20:23]) * float(record[40:46])# goodSHARES = slice(20, 23)PRICE = slice(40, 46)cost = int(record[SHARES]) * float(record[PRICE])作为一条基本准则,代码中如果有很多硬编码的索引值,将导致可读性合可维护性都不佳。一般来说,内置的slice()函数会创建一个切片对象,可以用在任何允许进行切片操作的地方。例如:
>>> items = [0, 1, 2, 3, 4, 5, 6]>>> a = slice(2, 4)>>> items[2:4][2, 3]>>> items[a][2, 3]>>> items[a] = [-2, -3]>>> items[0, 1, -2, -3, 4, 5, 6]>>> del items[a]>>> items[0, 1, 4, 5, 6]>>>4.上下文管理器可以同时管理多个资源
假设你要读取一个文件的内容,经过处理以后,写入到另一个文件。你能写出pythonic的代码,所以你使用了上下文管理器,满意地的写出了下面这样的代码:
with open('input.txt', 'r') as source: with open('output.txt', 'w') as target: target.write(source.read())你已经做的很好了,但是上下文管理器可以同时管理多个资源,上面这段代码还可以这样写:
with open('input.txt', 'r') as source, open('output.txt', 'w') as target: target.write(source.read())5.else子句
Python中的else子句不仅能在if语句中使用,还能在for、while、和try语句中使用。
在for循环或是while循环正常运行完毕时(而不是通过break语句或是return语句或是异常退出循环),才会运行else块。
举个例子:
>>> for i in range(3):... print(i)... else:... print('Iterated over everything')... 012Iterated over everything>>>如上,for循环正常结束,所以运行了后面的else块。
>>> for i in range(3):... if i == 2:... break... print(i)... else:... print('Iterated over everything')... 01>>>由此可以看出,for循环如果没有正常运行完毕(如上面是break结束循环的),是不会运行后面的else块。
仅当try块中没有异常抛出时才运行else块。一开始,你可能觉得没必要在try/except块中使用else子句。毕竟,在下述代码片段中,只有dangerous_call()不抛出异常,after_call()才会执行,对吧?
try: dangerous_call() after_call()except OSError: log('OSError...')然而,after_call()不应该放在try块中。为了清晰明确,try块中应该只包括抛出预期异常的语句。因此,向下面这样写更好:
try: dangerous_call()except OSError: log('OSError...')else: after_call()现在很明确,try块防守的是dangerous_call()可能出现的错误,而不是after_call()。而且很明显,只有try块不抛出异常,才会执行after_call()。但要注意一点,else子句抛出的异常不会由前面的except子句处理,也就是说此时after_call()如果抛出异常,将不会被捕获到。
还有更多的python技巧,大家可以参考这篇文章:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
秘密的近义词有隐秘、隐私、神秘、绝密、私密、奥秘、诡秘、隐瞒、奥密、奥妙、阴事、机要、隐藏、机密、秘籍、阴私。 秘密的释义是有所隐蔽,不为人知;隐蔽不为人知的
做开发需要抓取手机app的http/https的数据包,想看APP发出的http请求和响应是什么,这就需要抓包了,这可以得到一些不为人知的api,比如还可以干些
在这个全员皆淘宝联盟时期的到来,许多不为人知的一些关键点难题被发掘出去,例如,账号申请难题,提成清算难题,退钱难题,权益类营销推广难题,优惠劵设置问题,活动
仓库恢复正常之后各位卖家都开始忙碌,亚马逊也没有闲着,各种新政颁布不断,私底下各种测试也在进行中,最近细心的小伙伴们都发现了,亚马逊前台页面发生了一些不为人知的
实际中大家常常能够见到影片里边关于探案这一叫法,探案是一个较为系统软件的名称,根据探案我们可以掌握一些关键的功能键关键点或是是一些不为人知的物品,那麼在淘宝网店