python好用的函数或对象

1、ljust、rjust

"hello".ljust(10,"x")   #将字符串hello做对齐,并且用字符‘x’补到10个字符

#输出为:helloxxxxx

2、repr

def func():
    print("hello")

repr(func) # 将函数对象转为字符串

# 输出:function func at 0x00000021DC268,如果是print(func)的话自动回调用这个函数。

3、dir(返回对象的属性(成员),函数在python中也是对象,也有属性)def func():    print("hello")

dir(func)  # 返回对象的属性

#输出:['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']

import operator
dir(operator)
#['__abs__', '__add__', '__all__', '__and__', '__builtins__', '__cached__', '__concat__', '__contains__', '__delitem__', '__doc__', '__eq__', '__file__', '__floordiv__', '__ge__', '__getitem__', '__gt__', '__iadd__', '__iand__', '__iconcat__', '__ifloordiv__', '__ilshift__', '__imatmul__', '__imod__', '__imul__', '__index__', '__inv__', '__invert__', '__ior__', '__ipow__', '__irshift__', '__isub__', '__itruediv__', '__ixor__', '__le__', '__loader__', '__lshift__', '__lt__', '__matmul__', '__mod__', '__mul__', '__name__', '__ne__', '__neg__', '__not__', '__or__', '__package__', '__pos__', '__pow__', '__rshift__', '__setitem__', '__spec__', '__sub__', '__truediv__', '__xor__', '_abs', 'abs', 'add', 'and_', 'attrgetter', 'concat', 'contains', 'countOf', 'delitem', 'eq', 'floordiv', 'ge', 'getitem', 'gt', 'iadd', 'iand', 'iconcat', 'ifloordiv', 'ilshift', 'imatmul', 'imod', 'imul', 'index', 'indexOf', 'inv', 'invert', 'ior', 'ipow', 'irshift', 'is_', 'is_not', 'isub', 'itemgetter', 'itruediv', 'ixor',

'le', 'length_hint', 'lshift', 'lt', 'matmul', 'methodcaller', 'mod', 'mul', 'ne', 'neg', 'not_', 'or_', 'pos', 'pow', 'rshift', 'setitem', 'sub', 'truediv', 'truth', 'xor']

# 其中__mul__、__add__是实现细节,mul,add是调用了这个函数。

4、functools-->reduce 迭代运算

from functools import reduce

reduce(lambda a,b:a+b, range(10)) # 计算0~9 数据的和
reduce(lambda a,b:a*b, range(1,10)) #计算1*2*3...*9的积

# reduce(function , iterable_obj),iterable_obj的第一个和第二元素先调用function,得到的结果和第三个元素再调用function,依次类推。

5、operator (C++中也有这些函数对象,替换lambda的作用)

from functools import reduce
import operator

reduce(add, range(10)) # 计算0~9 数据的和
reduce(mul, range(1,10)) #计算1*2*3...*9的积

6、operator-->itemgetter(获取可迭代对象的部分数据,多个数据时以元组形式返回)

from operator import itemgetter

getter = itemgetter(1)  # 构造一个获取迭代对象下标为1的可调用对象。
l = [1,2,3,4,5,6]

getter(l)    # 输出2

getter = itemgetter(2,5)
getter(l)    # 输出(3,6)
getter(l)[0] # 输出3

 7、operator-->attrgetter(获取对象的部分属性值,多用于提取namedtuple中的部分数据,多个数据以元组形式返回)

from collections import namedtuple
from operator import attrgetter
motro_data = [
    ('Tokyo', 'JP', 36.933, (35.68, 139.69)),
    ('Delhi NCR', 'IN', 21.935, (28.61, 77.20)),
    ('Mexico City', 'MX', 20.142, (19.43, -99.13)),
    ('New York-Newark', 'US', 20.104, (40.80, -74.02)),
    ('Sao Paulo', 'BR', 19.649, (-23.54, -46.63))
]

LatLong = namedtuple('LatLong', 'lat long')                      # 定义一个namedtuple类型
Metropolis = namedtuple('Metropolis', 'name cc pop coord')       # 定义一个namedtuple类型
metro_areas = [Metropolis(name, cc, pop, LatLong(lat, long)) for name, cc, pop, (lat, long) in motro_data] # 列表推导拆包生成列表,列表的元素是namedtuple
name_lat = attrgetter('name', 'coord.lat')                       # 构造一个attrgetter对象
for city in sorted(metro_areas, key=attrgetter('coord.lat')):    # sorted根据coord.lat值排序,返回一个排序后的列表,元素还是namedtuple
    print(name_lat(city))                                        # 根据name_lat提取city中的name和coord.lat属性打印

 8、functools-->partial(绑定函数部分参数,构造新的函数,跟C++的bind函数类似,C++,用_1,_2这些常量来确定绑定那些参数,python可以通过位置参数和关键字参数确定绑定那些参数)

import functools

def func(a,b,c):
    print(a,b,c)

f = functools.patial(func, 'a', c='c')   # 为func函数绑定参数,为a绑定位置实参‘a’,为c绑定关键字实参‘c’
f('hello')                               # 输出:a hello c

# 位置实参只能按照顺序绑定,关键字实参可以绑定任意参数。
原文地址:https://www.cnblogs.com/yuandonghua/p/11777896.html