内置函数
【Py3.5官方文档】https://docs.python.org/3.5/library/functions.html#abs
|
Built-in Functions |
|
|
|
重要函数
filter(function, sequence): 对sequence中的item依次执行function(item),将执行结果为True的item做成一个filter object的迭代器返回。可以看作是过滤函数。【不更改原来的值,只有一个过滤的效果】
def fun1(s):
if s != 'a':
return s
ret = filter(fun1, str)
print(ret) # ret是一个迭代器对象 <filter object at 0x0000000000A4C518>
print(list(ret)) # ['b', 'c', 'd']
eval: 计算器功能【在引号内使用】和直接返回数据原本的类型
print(eval('1+2+3+4+5+6+7+8+9+10')) # 55
map(function, sequence) : 对sequence中的item依次执行function(item),将执行结果组成一个map迭代器返回【更改元素值】
str = ['m', 'g', 'f', 'w']
def fun2(s):
return s + "ood"
ret = map(fun2, str)
print(ret) # map object的迭代器
print(list(ret)) # ['mood', 'good', 'food', 'wood']
注意: map也支持多个sequence,这就要求function也支持相应数量的参数输入:
def add(x, y):
return x+y
print (list(map(add, range(10), range(10))))##[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
map和filter的区别:
def f(s):
return s + 'ood'
li = ['f', 'm', 'g', 'h']
print(list(map(f, li))) # ['food', 'mood', 'good', 'hood'],拼凑后重新输出
print(list(filter(f, li))) # ['f', 'm', 'g', 'h'], 输出原来的值
reduce(function, sequence, starting_value): 对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用. 【直接返回结果,区别map和filter, 阶乘很方便】
from functools import reduce
def fac(x,y):
return x * y
print(reduce(fac, range(1, 5))) # 24
print(reduce(fac, range(1, 5), 10)) # 240
getattr(obj, name, default)函数:从obj对象中取出来某个属性或者方法,没有则打印default值
class Foo:
def __init__(self, name, age):
self.name = name
self.age = age obj = Foo('ftl', 23)
print(obj.name)
b = 'name'
print('obj.__dict__[b]:',obj.__dict__[b]) # 通过字典取值
print("getattr(obj, 'name'):",getattr(obj, 'name')) # 通过内置函数getattr取出值
setattr(obj, 'school', 'xupt')
print(hasattr(obj, 'school'))
print(delattr(obj, 'school')) # 其他的内置方法,通过字符串的形式操作对象的成员