• 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
    
    # 位置实参只能按照顺序绑定,关键字实参可以绑定任意参数。
  • 相关阅读:
    抖音的服务器到底啥配置?
    三句话搞懂 Redis 缓存穿透、击穿、雪崩!
    Windows环境下安装Redis
    Redis可视化工具 Redis Desktop Manager
    Eureka自我保护机制
    Eureka介绍
    Spring Cloud OpenFeign 工作原理解析
    客户端负载均衡Ribbon:Loadbalance的源码
    spring boot中的约定优于配置
    Arrays.asList()返回的集合不能进行add,remove等操作
  • 原文地址:https://www.cnblogs.com/yuandonghua/p/11777896.html
Copyright © 2020-2023  润新知