Python常用的内置函数

发布时间:2019-03-19 21:15:47编辑:auto阅读(2136)

    一  反射相关

      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  

           18  slice   和切片有关

      19 str

      20 format    

      21 bytes

      22 bytearry

      23 memoryview

      24 ord

      25 chr

      26 ascill

      27 repr

      28 dict

      29 set()

      30 frozenset

      31 len

      32 sorted

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

      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)
    b = [1]
    ret1 = any(b)
    print(ret1)

      36 zip

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

      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  

      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("1+2+3+4"))
    exec("print('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='\n', file=None): # known special case of print
        """
          print(value, ..., sep=' ', end='\n', 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 = '\r%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)       print(per_str,end='', flush=True)       #小越越 : \r 可以把光标移动到行首但不换行

      内存相关

      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

     

关键字

上一篇: day03 int bool str

下一篇: django的类视图-11