• Python常用的内置函数


    一  反射相关

      1 hasattr   根据字符串的形式 , 去判断对象中是否有成员

    hasattr(object,name)
    判断对象object是否包含名为name的特性(hasattr是通过调用getattr(object,name))是否抛出异常来实现的。
    参数object:对象
    参数name:特性名称
    >>> hasattr(list, 'append')
    True
    >>> hasattr(list, 'add')
    False
    View Code

      2 getattr  根据字符串的形式,去对象中找成员.   第一个参数是(模块或对象或类),  第二个参数是(用户输入或值)getattr(object, name [, defalut])获取对象object名为name的特性,如果object不包含名为name的特性,将会抛出AttributeError异常;如果不包含名为name的特性且提供default参数,将返回default。

    参数object:对象
    参数name:对象的特性名
    参数default:缺省返回值
    >>> class test():
    ...  name="ming"
    ...   def run(self):
    ...     return "Hello World"
    ...
    >>> t=test()
    >>> getattr(t, "name") #获取name属性,存在就打印出来。
    'ming'
    >>> getattr(t, "run") #获取run方法,存在就打印出方法的内存地址。
    <bound method test.run of <__main__.test instance at 0x0269C878>>
    >>> ret = getattr(t, "run")() #获取run方法,后面加括号可以将这个方法运行。
    >>> print(ret)
    'Hello World' >>> getattr(t, "age") #获取一个不存在的属性。 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: test instance has no attribute 'age' >>> getattr(t, "age","18") #若属性不存在,返回一个默认值。 '18' >>>

      3 setattr   根据字符串的形式 , 动态的设置一个成员(在内存中)  (三个参数, 第一个参数是要设置的变量, 第三个变量是要设置的值)

    给对象的属性赋值,若属性不存在,先创建再赋值
    >>> class test():
    ...     name="ming"
    ...     def run(self):
    ...             return "Hello World"
    ...
    >>> t=test()
    >>> hasattr(t, "age")   #判断属性是否存在
    False
    >>> setattr(t, "age", "18")   #为属相赋值,并没有返回值
    >>> hasattr(t, "age")    #属性存在了
    True
    View Code

      4 delattr     

    综合使用

    >>> class test():
           name="ming"
           def run(self):
                 return "Hello World">>> t=test()
    >>> getattr(t, "age")    #age属性不存在
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: test instance has no attribute 'age'


    >>> if getattr(t ,"age") is none: #当获取到这个age值为空时,需要给这个age重新赋值
        setattr(t,"age","18")
    'True'

    >>>getattr(t,"age")
    '18'

    二 基础数据类型相关

      1 bool     

      2 int

      3 float

      4 complex   复数   

    complex(5,6)    
    (5+6j)

      5 bin  整型转换为二进制

      6 oct  整型转换为八进制

      7 hex  整型转换为十六进制

      8 abs  求绝对值

      9 divmod  (除,余数)

      10 round     (值,小数后几位)

     ret =  round(4.563111347,3)    
     print(ret)
     4.563

      11 pow  幂运算

    ret = pow(2,3)
    print(ret)
    
    8

      12 sum  

      13 max

      14 min

      15 list 

      16 tuple

      17 reversed 

    a = [0, 1, 2, 3, 4, 5, 6]
    b = reversed(a)
    print(b)
    >>> <list_reverseiterator object at 0x0000000001E7F198>
    print(list(b))
    >>> [6, 5, 4, 3, 2, 1, 0]
    print(list(b)) 
    >>> []
    
    因此,reversed()返回的是一个迭代器对象,只能进行一次循环遍历并只能显示一次所包含的值!

          18  slice   和切片有关

      19 str

      20 format     格式化输出

      21 bytes

      22 bytearry

    x = bytearray(5)
    print(x)
    
    >>> bytearray(b'x00x00x00x00x00')

      23 memoryview

    memory 内存,view 查看。那么memoryview()函数返回给定参数的内存查看对象。内存查看对象指对支持缓冲区协议的数据进行包装,
    在不需要复制对象基础上允许Python代码访问。
    
    s = memoryview(bytearray('abcdefgh','utf-8'))
    print(s[1])
    >>> 98
    print(s[-1])
    >>> 104
    print(s[1:4])
    >>> <memory at 0x00000000021E0408>

      24 ord  函数主要用来返回对应字符的ascii码

      25 chr  主要用来表示ascii码对应的字符,输入可以是数字,可以是十进制,也可以是十六进制

      26 ascill

      27 repr

    repr() 函数将对象转化为供解释器读取的形式且返回一个对象的string格式
    s = 'RUNOOB'
    print(repr(s))
    >>> 'RUNOOB'
    dict = {'runoob': 'runoob.com', 'google': 'google.com'} 
    print(repr(dict)) 
    >>> {'runoob': 'runoob.com', 'google': 'google.com'}

      28 dict

      29 set

      30 frozenset  不可变集合

      31 len

      32 sorted

    a = [1,3,5,-2,-4,-6]
    b = sorted(a,key=abs)
    c = sorted(a)
    
    print(a)
    >>> [1, 3, 5, -2, -4, -6]
    print(b)
    >>> [1, -2, 3, -4, 5, -6]
    print(c)
    >>> [-6, -4, -2, 1, 3, 5]

      33 enumerate   

     a = enumerate()  返回一个元祖  a[0]序列号,a[1]数据

      34 all

    接受一个迭代器,如果迭代器的所有元素都为真,那么返回True,否则返回False
    
    tmp_1 = ['python',123]
    all(tmp_1)
    >>> True
    tmp_2 = []
    all(tmp_2)
    >>> True
    tmp_3 = [0]
    all(tmp_3)
    >>> False

      35 any

    接受一个迭代器,如果迭代器里有一个元素为真,那么返回True,否则返回False
    a = []
    ret = any(a)
    print(ret)
    >>> False
    
    b = [1]
    ret1 = any(b)
    print(ret1)
    >>> True

      36 zip

    list1 = [1, 2, 3, 4]
    list2 = ["a", "b", "c"]
    s = zip(list1, list2)
    print(list(s))
    
    >>> [(1, 'a'), (2, 'b'), (3, 'c')]

      37 filter

    filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list
    
    def is_odd(x):
        return x % 2 == 1
    然后,利用filter()过滤掉偶数:
    
    list(filter(is_odd, [1, 4, 6, 7, 9, 12, 17]))

      38 map

    map函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
    
    L = [1,2,3,4,] 
    def pow2(x): 
      return x*x list(map(pow2,L)) >>> [1, 4, 9, 16]

    三 作用域相关

      1 locals   获取执行本方法所在命名空间内的局部变量的字典

      2 globals  获取全局变量的字典

    四 面向对象相关

      1 type  元类,类的最高层

      2 object

      3 classmethod    类方法,用来修改类变量的

      4 staticmethod    静态方法,用来处理一些和操作类无关的事

      5 property    可以像调用一个变量一样调用一个方法

     class Pager:
         def __init__(self,page):
             self.page = page
           self.page_num = 12
    
        @property
         def start(self):
             ret = (self.page - 1) * self.page_num
             return ret
         @property
         def end(self):
             ret = self.page * self.page_num
            return ret
    
     p = Pager(5)
     # print(p.start())
     # print(p.end())
     print(p.start)
     print(p.end)

      6  vars 

    class My():
        'Test'
        def __init__(self,name):
            self.name=name
    
        def test(self):
            print self.name
    
    vars(My)#返回一个字典对象,他的功能其实和  My.__dict__  很像 

      7 super  在多继承中,可以保证顶层父类只被调用一次 ,用 _ _mro_ _ 查看多继承规律时,遵循深度优先原则

      8 issubclass

    检查第一个参数是否是第二个参数的子子孙孙类    
    
    返回  :   是一个布尔值
    
    class Base(object):
        pass
    
    class Foo(Base):
        pass
    
    class Bar(Foo):
        pass
    
    print(issubclass(Bar,Base))  # 检查第一个参数是否是第二个参数的子子孙孙类

      9 isinstance

    检查第一个参数(对象) 是否是第二个参数(类及父类)的实例.
    
    返回值:  布尔型
    
    class Base(object):
        pass
    
    class Foo(Base):
        pass
    
    obj = Foo()
    
    print(isinstance(obj,Foo))
    print(isinstance(obj,Base))

    判断一个数据是什么数据类型 a
    = "python" ret = isinstance(a,str) print(a)

    五 迭代/生成器相关

      1 next

      2 iter  

      3 range

    range 是一个生成器,他只用来存储数据的生成方式,而不直接存储数据
    # 列表解析
    sum([i for i in range(100000000)])# 内存占用大,机器容易卡死
     
    # 生成器表达式
    sum(i for i in range(100000000))# 几乎不占内存

    六 其他

      字符串类型代码执行相关  

      1 eval

    eval() 将字符串类型的代码执行并返回结果
    
    print(eval('1+2+3+4'))

    还可以用来操作文件,将文件里面的内容转化为字典,方便调用
    
    

      2 exec

    exec()将自字符串类型的代码执行
    
    print(exec("aa = 11 + 22"))
    >>> None
    print("value is:", aa)
    >>> 33

     exec("print('hello,world')")

     >>> hello,world

      3 compile

    参数说明:
    
        1> 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。  
    
        2>参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。  
    
        3> 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表       达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为'single'

     

      输入/输出相关

      4 input

      5 print

    def print(self, *args, sep=' ', end='
    ', file=None): # known special case of print
        """
          print(value, ..., sep=' ', end='
    ', file=sys.stdout, flush=False)
          file: 默认是输出到屏幕,如果设置为文件句柄,输出到文件
          sep: 打印多个值之间的分隔符,默认为空格
          end: 每一次打印的结尾,默认为换行符
          flush: 立即把内容输出到流文件,不作缓存
        """
    
        file() 和文件有关的关键字
    
        f = open('tmp_file','w')
        print(123,456,sep=',',file = f,flush=True)
        打印进度条             
    import time       for i in range(0,101,2):       time.sleep(0.1)       char_num = i//2 #打印多少个'*'       per_str = ' %s%% : %s ' % (i, '*' * char_num) if i == 100 else ' %s%% : %s'%(i,'*'*char_num)       print(per_str,end='', flush=True)       #小越越 : 可以把光标移动到行首但不换行

      内存相关

      6 id

      7 hash

      文件操作相关

      8 open

    共有六种操作文件的方分别为:  r、w、a、r+、w+、a+  ,每一种都可以用二进制文件来操作:rb、wb、ab、rb+、wb+、ab+,也可以指定编码格式

      模块相关

      9 __import__

      帮助相关

      10 help

      调用相关

      11 callable      检测一个对象能否被调用

      查看内置属性和方法

      12 dir

    dir(list)
    dir(a)
    dir(123)

    内置函数官方文档        https://docs.python.org/3/library/functions.html#object

  • 相关阅读:
    Luogu P4205 [NOI2005]智慧珠游戏
    Luogu P3321 [SDOI2015]序列统计
    Luogu P2056 [ZJOI2007]捉迷藏
    Luogu P5168 xtq玩魔塔
    2019年一月刷题列表
    [转载]我们都是行走在镜面边缘的人
    [武汉加油] CF830C Bamboo Partition
    [武汉加油] [NOI Online 提高组]最小环
    [武汉加油] luogu P6178 【模板】Matrix-Tree 定理
    [武汉加油] bzoj 5099: [POI2018]Pionek 几何+双指针
  • 原文地址:https://www.cnblogs.com/wangxiongbing/p/9818337.html
Copyright © 2020-2023  润新知