Title

python常用内置函数

 

 

一  反射相关

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

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

 

  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

  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'\x00\x00\x00\x00\x00')

  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='\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

posted @ 2020-11-29 22:42  Mr江  阅读(217)  评论(0编辑  收藏  举报