Python中一些不为人知的基础技巧总结

前言

本文主要给大家总结介绍了关于Python的一些基础技巧,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

1.startswith()和endswith()参数可以是元组

当检测字符串开头或结尾时,如果有多个检测值,可以用元组作为startswith()和endswith()参数:

# bad
if image.endswith('.jpg') or image.endswith('.png') or image.endswith('.gif'):
 pass
# good
if image.endswith(('.jpg', '.png', '.gif')):
 pass
# bad
if url.startswith('http:') or url.startswith('https:') or url.startswith('ftp:'):
 pass
# good
if url.startswith(('http:', 'https:', 'ftp:')):
 pass

2.enumerate()设置start参数做为索引起始值

当用enumerate()迭代同时要得到索引时,可以设置start参数作为索引起始值:

# bad
for index, v in enumerate(data):
 print(index+1, v)
# good
for index, v in enumerate(data, start=1):
 print(index, v)

3.对切片命名

当代码中到处都是硬编码的切片索引时,我们的代码将变得无法阅读。可以对切片命名解决此问题:

record = '....................100.................513.25......'
# bad
cost = int(record[20:23]) * float(record[40:46])
# good
SHARES = 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')
...
0
1
2
Iterated over everything
>>>

如上,for循环正常结束,所以运行了后面的else块。

>>> for i in range(3):
...  if i == 2:
...   break
...  print(i)
... else:
...  print('Iterated over everything')
...
0
1
>>>

由此可以看出,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技巧,大家可以参考这篇文章://www.jb51.net/article/137695.htm

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • python针对excel的操作技巧

    一. openpyxl读 95%的时间使用的是这个模块,目前excel处理的模块,只有这个还在维护 1.workBook workBook=openpyxl.load_workbook('path(.xlsx)').encode('gbk') print workBook 2.sheet sheetList=workBook.get_sheet_names() 获取所有sheet的名称,保存为列表格式 print sheetList 3.cell (1)sheet1=workBook.get_s

  • Python学习小技巧之利用字典的默认行为

    本文介绍的是关于Python利用字典的默认行为的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 典型代码1: from collections import defaultdict if __name__ == '__main__': data = defaultdict(int) data[0] += 1 print(data) 输出1: defaultdict(<type 'int'>, {0: 1}) 典型代码2: if __name__ == '__main__': data

  • Python使用pymysql小技巧

    在使用pymysql的时候,通过fetchall()或fetchone()可以获得查询结果,但这个返回数据是不包含字段信息的(不如php方便).查阅pymysql源代码后,其实获取查询结果源代码也是非常简单的,直接调用cursor.description即可. 譬如: db = pymysql.connect(...) cur = db.cursor() cur.execute(sql) print(cur.description) result = cur.fetchall() data_di

  • python中requests小技巧

    关于  Python requests ,在使用中,总结了一些小技巧把,记录下. 1:保持请求之间的Cookies,我们可以这样做. 2:请求时,会加上headers,一般我们会写成这样 唯一不便的是之后的代码每次都需要这么写,代码显得臃肿,所以我们可以这样: 3:默认requests请求失败后不会重试,但是我们跑case时难免遇到一些网络或外部原因导致case失败,我们可以在Session实例上附加HTTPAdapaters 参数,增加失败重试次数. 这样,之后的请求,若失败,重试3次. 4:

  • Python学习小技巧总结

    三元条件判断的3种实现方法 C语言中有三元条件表达式,如 a>b?a:b,Python中没有三目运算符(?:),但Python有它自己的方式来实现类似的功能.这里介绍3种方法: true_part if condition else false_part a,b=2,3 c=a if a>b else b a,b=2,1 c=a if a>b else b >>> print c 2 利用and-or条件判断的特性来实现三元条件判断 首先介绍一下,and和or的用法:

  • Python爬虫设置代理IP的方法(爬虫技巧)

    在学习Python爬虫的时候,经常会遇见所要爬取的网站采取了反爬取技术,高强度.高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网页,就很可能被封,这里讲述一个爬虫技巧,设置代理IP. (一)配置环境 安装requests库 安装bs4库 安装lxml库 (二)代码展示 # IP地址取自国内髙匿代理IP网站:http://www.xicidaili.com/nn/ # 仅仅爬取首页IP地址就足够一般使用 from bs4 import BeautifulSoup

  • 儿童学习python的一些小技巧

    以下是一些Python实用技巧和工具,希望能对大家有所帮助. 交换变量 x = 6 y = 5 x, y = y, x print x >>> 5 print y >>> 6 if 语句在行内 print "Hello" if True else "World" >>> Hello 连接 下面的最后一种方式在绑定两个不同类型的对象时显得很cool. nfc = ["Packers", &quo

  • Python中一些不为人知的基础技巧总结

    前言 本文主要给大家总结介绍了关于Python的一些基础技巧,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 1.startswith()和endswith()参数可以是元组 当检测字符串开头或结尾时,如果有多个检测值,可以用元组作为startswith()和endswith()参数: # bad if image.endswith('.jpg') or image.endswith('.png') or image.endswith('.gif'): pass # good

  • python中K-means算法基础知识点

    能够学习和掌握编程,最好的学习方式,就是去掌握基本的使用技巧,再多的概念意义,总归都是为了使用服务的,K-means算法又叫K-均值算法,是非监督学习中的聚类算法.主要有三个元素,其中N是元素个数,x表示元素,c(j)表示第j簇的质心,下面就使用方式给大家简单介绍实例使用. K-Means算法进行聚类分析 km = KMeans(n_clusters = 3) km.fit(X) centers = km.cluster_centers_ print(centers) 三个簇的中心点坐标为: [

  • Python中字符串的处理技巧分享

    一.如何拆分含有多种分隔符的字符串? 实际案例 我们要把某个字符串依据分隔符号拆分不同的字符段,该字符串包含多种不同的分隔符,例如: s = 'asd;aad|dasd|dasd,sdasd|asd,,Adas|sdasd;Asdasd,d|asd' 其中<,>,<;>,<|>,<\t>都是分隔符,如何处理? 解决方案 连续使用split()方法,每次处理一种分隔符 # 使用Python2 def mySplit(s,ds): res = [s] for d

  • python中pivot()函数基础知识点

    不同于以往为大家介绍的函数使用,我们利用pivot函数可以实现的方式,就是用来重塑数据使用的,在python的使用上并不常见,但是如果需要利用这种功能,基本上能够被我们选择调用的函数,pivot函数一定是榜上有名,下面我们就围绕着该函数,给大家做详细的内容讲解,一起来看下吧. 函数语法: pivot() 参数: Index.columns需要注意的是前者是可选参数,后者是必选参数. 使用实例: import pandas as pd df=pd.read_csv("user_label_part

  • Python中字典的基础介绍及常用操作总结

    目录 1.字典的介绍 2.访问字典的值 (一)根据键访问值 (二)通过get()方法访问值 3.修改字典的值 4.添加字典的元素(键值对) 5.删除字典的元素 6.字典常见操作 1.len 测量字典中键值对的个数 2. keys 返回一个包含字典所有KEY的列表 3. values 返回一个包含字典所有value的列表 4. items 返回一个包含所有(键,值)元祖的列表 5.遍历字典的key(键) 6.遍历字典的value(值) 7.遍历字典的items(元素) 8.遍历字典的items(键

  • Python中元组的基础介绍及常用操作总结

    目录 1.元组的介绍 2.访问元组 3.修改元组(不可以修改的) 4.元组的内置函数有count,index 5.类型转换 1.将元组转换为列表 2.将元组转换为集合 1.元组的介绍 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 元组的格式: tup=('a','b','c','d') 2.访问元组 元组可以使用下标索引来访问元组中的值,下标索引从0开始 例如: tup=('a','

  • Python中字符串的基础介绍及常用操作总结

    目录 1.字符串的介绍 2.字符串的下标 3.字符串切片 4.字符串find()操作 5.字符串index()操作 6.字符串count()操作 7.字符串replace()操作 8.字符串split()操作 9.字符串startswith()操作 10.字符串endswith()操作 11.字符串upper()操作 12.字符串lower()操作 13.字符串title()操作 14.字符串capitalize()操作 15.字符串strip()操作 16.字符串rfind()操作 17.字符

  • 10 个Python中Pip的使用技巧分享

    目录 Python pip 1.安装 pip 2.升级 pip 3.安装库 4. 库的批量安装 5.卸载和升级包 6. 冻结 Python pip 依赖 7.查看库信息 8.查看需要升级的库 9. 检查兼容性问题 10. 将库下载到本地 众所周知,pip 可以安装.更新.卸载 Python 的第三方库,非常方便.你们中的许多人可能已经使用 pip 很长时间了,但不清楚它有哪些还不错的功能.希望我今天分享的技巧能让你从 Python pip 中受益. Python pip 让我们从 Python

  • 分享4个Python中高效省时的技巧

    目录 反转列表 交换两个值 在函数内部循环 减少函数调用次数 总结 今天我想和大家分享 4 个省时的 Python 技巧,可以节省 10~20% 的 Python 执行时间. 反转列表 Python 中通常有两种反转列表的方法:切片或 reverse() 函数调用.这两种方法都可以反转列表,但需要注意的是内置函数 reverse() 会更改原始列表,而切片方法会创建一个新列表. 但是他们的表现呢?哪种方式更有效?让我们看一下下面的例子: 使用切片: $ python -m timeit -n 1

  • python中argparse模块基础及使用步骤

    目录 argparse模块用法 一. 概念 二. 基础 1. 使用步骤 1.1 总步骤 1.2 创建对象 1.3 添加参数 1.4 解析参数 三. 使用案例 argparse模块用法 一. 概念 argsparse是python的命令行解析的标准模块,内置于python,不需要安装.这个库可以让我们直接在命令行中就可以向程序中传入参数并让程序运行. 官方文档的位置:[https://docs.python.org/zh-cn/3/library/argparse.html] 在这里我们利用git

随机推荐