前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python常用的内置函数

Python常用的内置函数

作者头像
py3study
发布2020-01-19 10:02:55
6330
发布2020-01-19 10:02:55
举报
文章被收录于专栏:python3

一  反射相关

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

代码语言:javascript
复制
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的特性

代码语言:javascript
复制
且提供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   根据字符串的形式 , 动态的设置一个成员(在内存中)  (三个参数, 第一个参数是要设置的变量, 第三个变量是要设置的值)

代码语言:javascript
复制
给对象的属性赋值,若属性不存在,先创建再赋值
>>> 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     

综合使用

代码语言:javascript
复制
>>> 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   复数   

代码语言:javascript
复制
complex(5,6)    

(5+6j)

  5 bin  整型转换为二进制

  6 oct  整型转换为八进制

  7 hex  整型转换为十六进制

  8 abs  求绝对值

  9 divmod  (除,余数)

  10 round     (值,小数后几位)

代码语言:javascript
复制
 ret =  round(4.563111347,3)    

 print(ret)

 4.563

  11 pow  幂运算

代码语言:javascript
复制
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

代码语言:javascript
复制
a = [1,3,5,-2,-4,-6]
b = sorted(a,key=abs)
print(a)
print(b)

  33 enumerate   

代码语言:javascript
复制
 a = enumerate()  返回一个元祖  a[0]序列号,a[1]数据

  34 all

代码语言:javascript
复制
接受一个迭代器,如果迭代器的所有元素都为真,那么返回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

代码语言:javascript
复制
接受一个迭代器,如果迭代器里有一个元素为真,那么返回True,否则返回False

a = []
ret = any(a)
print(ret)
b = [1]
ret1 = any(b)
print(ret1)

  36 zip

代码语言:javascript
复制
list1 = [1, 2, 3, 4]
list2 = ["a", "b", "c"]
s = zip(list1, list2)
print(list(s)) 

  37 filter

代码语言:javascript
复制
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

代码语言:javascript
复制
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    可以像调用一个变量一样调用一个方法

代码语言:javascript
复制
 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

代码语言:javascript
复制
检查第一个参数是否是第二个参数的子子孙孙类    

返回  :   是一个布尔值

class Base(object):
    pass

class Foo(Base):
    pass

class Bar(Foo):
    pass

print(issubclass(Bar,Base))  # 检查第一个参数是否是第二个参数的子子孙孙类

  9 isinstance

代码语言:javascript
复制
检查第一个参数(对象) 是否是第二个参数(类及父类)的实例.

返回值:  布尔型

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

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

六 其他

  字符串类型代码执行相关  

  1 eval

代码语言:javascript
复制
eval() 将字符串类型的代码执行并返回结果

print(eval('1+2+3+4'))

还可以用来操作文件,将文件里面的内容转化为字典,方便调用
代码语言:javascript
复制

  2 exec

代码语言:javascript
复制
exec()将自字符串类型的代码执行

print(exec("1+2+3+4"))
exec("print('hello,world')")

  3 compile

代码语言:javascript
复制
参数说明:

    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

代码语言:javascript
复制
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

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

  模块相关

  9 __import__

  帮助相关

  10 help

  调用相关

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

  查看内置属性和方法

  12 dir

代码语言:javascript
复制
dir(list)
dir(a)
dir(123)

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/03/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档