内置函数、迭代器、异常处理

重要内置函数

zip
zip() 函数返回 zip 对象,它是元组的迭代器,其中每个传递的迭代器中的第一项配对在一起,然后每个传递的迭代器中的第二项配对在一起,依此类推。
如果传递的迭代器具有不同的长度,则项目数最少的迭代器将决定新迭代器的长度。
语法:zip(iterator1, iterator2, iterator3 ...)
l1 = [11, 22, 33, 44, 55]
l2 = ['jason', 'kevin', 'oscar', 'jerry', 'tony']
l3 = [1, 2, 3, 4, 5]
res = zip(l1, l2, l3)
print(list(res))
# [(11, 'jason', 1), (22, 'kevin', 2), (33, 'oscar', 3), (44, 'jerry', 4), (55, 'tony', 5)]

filter
使用过滤器函数排除可迭代对象中的项目。
语法:filter(function, iterable)
l1 = [11, 22, 33, 44, 55, 66, 77, 88]
res = filter(lambda x: x > 40, l1)
print(list(res))
# [44, 55, 66, 77, 88]

sorted
sorted() 函数返回指定的可迭代对象的排序列表。
可以指定升序或降序。字符串按字母顺序排序,数字按数字排序。但无法对同时包含字符串值和数字值的列表进行排序。
l1 = [21, 12, 53, 64, 76, 32, 11, 22]
res = sorted(l1)
print(res) 
# [11, 12, 21, 22, 32, 53, 64, 76] 默认升序

常见内置函数

abs()  绝对值
返回数的绝对值
print(abs(-100))# 100
print(abs(100))# 100

all()  
如果可迭代对象中的所有项均为 true,则返回 True。否则返回False
print(all([0, 1, 2, 3]))# False
print(all([1, 2, 3, True]))# True

any()
如果可迭代对象中的任何项为 true,则返回 True。
print(any([0, None, '', 1]))# True
print(any([0, None, '']))# False

bin() 返回数的二进制版本。
oct() 把数转换为八进制。
hex() 把数字转换为十六进制值。
int() 返回整数。

bytes()  
转换成bytes类型
s1 = '周五了'
print(s1.encode('utf8'))
print(bytes(s1, 'utf8'))
# b'\xe5\x91\xa8\xe4\xba\x94\xe4\xba\x86'
# b'\xe5\x91\xa8\xe4\xba\x94\xe4\xba\x86'

callable()  
判断名字是否可以加括号调用
name = 'jason'
def index():
    print('from index')
print(callable(name))  # False
print(callable(index))  # True

chr() ord()  
基于ASCII码表做数字与字母的转换
print(chr(65))  # A
print(ord('A'))  # 65

dir()
返回指定对象的属性和方法的列表。
print(dir('hello'))
# ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

divmod()
当参数1除以参数2时,返回商和余数。
x = divmod(5, 2)
print(x)
# (2, 1);2为商,1为余数

enumerate()
获取集合(例如元组)并将其作为枚举对象返回。
x = ('apple', 'banana', 'cherry')
y = enumerate(x)
print(list( y))
# [(0, 'apple'), (1, 'banana'), (2, 'cherry')]

eval() exec()
s1 = 'print("哈哈哈")'
eval(s1)# 哈哈哈
exec(s1)# 哈哈哈
s2 = 'for i in range(100):print(i)'
eval(s2)  # 报错,只能识别简单的python代码,具有逻辑性的都不行
exec(s2)  # 1...99,可以识别具有一定逻辑性的python代码

hash()
哈希加密,一种加密方法
# 971221201782251763

id() 
返回对象的 id。
input() 
允许用户输入。
isinstance()
如果指定的对象是指定对象的实例,则返回 True。

map() 
返回指定的迭代器,其中指定的函数应用于每个项目。
max() 
返回可迭代对象中的最大项目。
min()
返回可迭代对象中的最小项目。

open()
打开文件并返回文件对象

pow()
返回 x 的 y 次幂的值。
print(pow(2, 2))# 4
print(pow(2, 3))# 8
print(pow(2, 4))# 16

range()
返回数字序列,从 0 开始且以 1 为增量(默认地)。
x = range(6)
for n in x:
  print(n)
#依次打印
0
1
2
3
4
5

round()四舍五入
将数字四舍五入为仅两个小数:
x = round(3.1415926, 2)
print(x)
# 3.14

sum()
对迭代器的项目进行求和。
print(sum([11, 22, 33, 44, 55, 66]))
# 231

zip()
zip() 函数返回 zip 对象,它是元组的迭代器,其中每个传递的迭代器中的第一项配对在一起,然后每个传递的迭代器中的第二项配对在一起,依此类推。
l1 = [11, 22, 33, 44, 55]
l2 = ['jason', 'kevin', 'oscar', 'jerry', 'tony']
l3 = [1, 2, 3, 4, 5]
res = zip(l1, l2, l3)
print(list(res))
# [(11, 'jason', 1), (22, 'kevin', 2), (33, 'oscar', 3), (44, 'jerry', 4), (55, 'tony', 5)]

可迭代对象

1、概念

对象内置有__iter__方法的都称为可迭代对象

1.内置方法  通过点的方式能够调用的方法
2.__iter__  双下iter方法

2、可迭代对象的范围

不是可迭代对象:整型int、浮点型float、布尔值bool、函数对象

可迭代对象:字符串str、列表list、字典dict、元组tuple、集合set、文件对象

3.可迭代的含义

  • 可以在上一次更新的基础上进行增加或减少操作。
    eg:手机app更新
  • 可迭代在python中可以理解为是否支持for循环

迭代器对象

1.迭代器对象

  • 由可迭代对象调用__iter__方法产生的
  • 迭代器对象判断的本质是看是否内置有__iter__和__next__

2.迭代器对象的作用

  • 提供了一种不依赖于索引取值的方式
  • 正因为有迭代器的存在,我们的字典、集合才能够被for循环

3.迭代器对象实操

s1 = 'hello'  # 可迭代对象
res = s1.__iter__()  # 迭代器对象
print(res.__next__())  # 迭代取值 for循环的本质
# h
# 一旦__next__取不到值 会直接报错

4.注意事项

  • 可迭代对象调用__iter__会成为迭代器对象,迭代器对象如果还调用__iter__不会有任何变化,还是迭代器对象本身。

for循环的本质

for 变量名 in 可迭代对象:
    循环体代码
"""
1.先将in后面的数据调用__iter__转变成迭代器对象
2.依次让迭代器对象调用__next__取值
3.一旦__next__取不到值报错 for循环会自动捕获并处理
"""

异常处理

1、异常是指代码运行报错,俗语bug。
2、代码运行中一旦遇到异常会直接结束整个程序的运行,所以在编写代码时要尽可能避免。
3、当python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

1、异常分类

  • 语法错误:不允许出现,一旦出现要立即改正
  • 逻辑错误:允许出现,因为这种错误一眼发现不了,代码运行之后才可能会出现

2、异常结构

  • 错误位置
  • 错误类别
  • 错误详情

原文地址:http://www.cnblogs.com/zhiliaowang/p/16792976.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性