大师兄的Python学习笔记(四): Python的内置函数

大师兄的Python学习笔记(三): 模块和包
大师兄的Python学习笔记(五): 常用库之os包

一、关于内置函数

  • 内置函数就是Python原生的方法,不需要导入任何包就可以直接使用。
  • 本文内容基于Python3.8文档。

二、内置函数列表

A开头:

1)abs()
返回绝对值。

>>>print(abs(-10))
10

2)all()

  • 判断给定的可迭代参数中的所有元素是否都为 True。
>>>l = [123,0<5,'str'] # 还记得0可以代表False吗
>>>print(all(l))
True

>>>l = [True,0,'str'] # 还记得0可以代表False吗
>>>print(all(l))
False

3)any()

  • 判断给定的可迭代参数中,如果任意一个元素为 True则返回True。
>>>l = [True,0,'str']
>>>print(any(l))
True

4)ascii()

  • 类似print()函数,用于打印字符串。
  • 但转义字符和''也会被处理后打印出来
>>>ascii('Hello\r World\n')
"'Hello\\r World\\n'"
B开头:

5)bin()

  • 将一个整数转变为一个前缀为“0b”的二进制字符串。
>>>print(bin(-10))
'-0b1010'

6)bool()

  • 返回一个布尔值。
>>>bool(0)
False

7)breakpoint(<*args>,<**kws>)

  • 打断点,跳入调试器中。
>>>breakpoint()
--Return--
(1)()->None
(Pdb) 

8)bytearray(,,)

  • 返回一个新字节数组。
  • 返回的字节数组具备可变序列的大部分常见方法(像list)。
  • 每个元素的值范围: 0 <= x < 256。
>>>bytearray([1,2,3,4,5])
bytearray(b'\x01\x02\x03\x04\x05')

>>>bytearray('hello','utf-8')
bytearray(b'hello')

9)bytes(,,)

  • 返回一个新的bytes对象。
  • 返回的bytes对象为不可变序列。
  • 每个元素的值范围: 0 <= x < 256。
>>>bytes([1,2,3,4,5])
b'\x01\x02\x03\x04\x05'

>>>bytes('hello','utf-8')
b'hello'
C开头:

10)callable()

  • 如果对象可以调用返回True,否则返回False。
>>>print(callable(callable))
True

>>>print(callable(callable(1234))
False

11)chr()

  • 返回 Unicode 码对应的字符串。
  • ord()和chr()互逆。
>>>print(chr(100))
'd'

12)@classmethod

  • 把一个方法封装成类方法。
  • 类方法会忽略实例化。
  • 方便直接从类调用方法。
  • 应用了装饰器。
>>>class HelloWorld():
>>>    @classmethod
>>>    def sayHello(cls):
>>>        print('Hello World!')
>>>HelloWorld.sayHello()
Hello World!

>>>h = HelloWorld()
>>>h.sayHello() # 忽略了类的实例化
Hello World!

13)compile(, , , , , )

  • 将一个字符串编译为字节代码。
>>>str = 'print("hello world")'
>>>s = compile(str,'','exec') # mode可以用eval,exec或single
>>>print(s) # 生成了一个code对象
 at 0x000001FF125CB9C0, file "", line 1>
>>>exec(s) # 可以用exec 或eval执行
hello world

14)complex(,)

  • 创建一个值为 real + imag * j 的复数
>>>c = complex(10,20)
>>>print(c)
(10+20j)
D开头:

15)delattr(, )

  • 函数将删除指定的属性
  • 详情见笔记第二篇5.6

16)dict()

  • 创建一个字典对象。
  • 详情见笔记第一篇2.1.6

17)dir()

  • dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。
>>>dir()
>>>['In', 'Out', '_', '__', '___', '__builtin__', '__builtins__', '__doc__', '__loader__', '__name__', __package__', '__spec__', '_dh', '_i', '_i1', '_ih', '_ii', '_iii', '_oh', 'exit', 'get_ipython','quit']

>>>dir(dir())
>>>['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

18)divmod(,)

  • 实现a除以b,然后返回商与余数的元组。
  • 如果两个参数a,b都是整数,那么会采用整数除法,结果相当于(a//b, a % b)。
  • 如果a或b是浮点数,相当于(math.floor(a/b), a%b)。
>>>c = divmod(98,10)
>>>print(c)
(9, 8)

>>>d = divmod(98,4.5)
>>>print(d)
(21.0, 3.5)
E开头:

19)enumerate(, )

  • 返回一个可迭代对象的序号和值元组的迭代器。
>>>dogs = ['雪纳瑞','泰迪','金毛','拉布拉多']
>>>e = enumerate(dogs)
>>>print(type(e))

>>>list(e)
[(0, '雪纳瑞'), (1, '泰迪'), (2, '金毛'), (3, '拉布拉多')]

20)eval(, )

  • 执行一个字符串表达式,并返回表达式的值。
  • 使用时要注意其危险性。(比如从外部输入的恶意字符串表达式被执行)
>>>print(eval('10+10'))
20
>>>eval('print("Hello World!")')
"Hello World!"

21)exec(, )

  • 如果expression是一个字符串,该字符串会先被解析为一组python语句,然后执行。
  • 如果expression是一个code对象,那么它只是被简单的执行。
  • 与eval不同,exec返回None。
  • 与eval不同,exec可以执行复杂的代码。
>>>i = 0
>>>e = exec('i+=10')
>>>print(e)
None
>>>print(i)
10

>>>exec('def sayhi():print("hi!")')
>>>sayhi()
hi!
F开头:

22)filter(, )

  • 用于过滤序列。
  • 相当于把中的每个值当做的参数,如果返回None则过滤掉。
  • 返回一个可迭代的filter对象。
>>>l = [1,2,3,4,5,6,7,8,9,10]
>>>def odd(n):
>>>    return n%2!=0 # 如果是偶数就过滤掉
>>>f = filter(odd,l)
>>>print(type(f))
filter
>>>print(list(f))
[1, 3, 5, 7, 9]

23)float()

  • 从整数或字符串生成浮点数。
>>>float('-10.5')
-10.5
>>>float(100)
100.0
>>>float('1e10')
10000000000.0

24)format(, )

  • 用于格式化字符串。
  • 详细说明见笔记第一篇2.6.6中字符串格式化的五种方式。

25)frozenset()

  • 通过可迭代对象返回一个新的 frozenset(冰冻集合)对象。
  • 冰冻集合和列表类似,但是内容不能更改。
>>>l = [1,2,3,4,5]
>>>f = frozenset(l)
>>>type(f)
frozenset
>>>print(f)
frozenset({1, 2, 3, 4, 5})
G开头:

26)getattr(, , )

  • 返回对象命名属性的值。
  • 详情见笔记第二篇5.3。

27)globals()

  • 用于定义全局变量。
  • 详情见笔记第一篇2.5.5.3。
H开头:

28)hasattr(, )

  • 判断对象是否包含属性
  • 是名称字符串。
  • >>>class Dog():
    >>>    def __init__(self):
    >>>        self.type = 'dog'
    >>>    def bart(self):
    >>>        print('汪汪!')
    >>>dog = Dog()
    >>>hasattr(dog,'type')
    True
    >>>hasattr(dog,'bart')
    True
    >>>hasattr(dog,'age') # 不包含属性
    False
    

    29)hash()

    • 返回对象的哈希(hash)值。
    • 哈希值通过散列算法将任意长度的值换算成固定长度的结果,是区块链的基础。
    >>>print(hash('abc'))
    -5769367521816172114
    

    30)help()

    • 获得对象的帮助信息。
    • 详情见笔记第一篇1.7.2。

    31)hex()

    • 获取16进制字符串。
    • 以0x开头
    >>>print(hex(12))
    '0x14'
    
    I开头:

    32)id()

    • 获取对象的内存地址。
    • 一个对象在生命周期内id是唯一的。
    • 在不同的生命周期有可能有相同的id。
    >>>name = 'name'
    >>>print(id(name))
    2223950523000
    

    33)input()

    • 获取控制台输入。
    • 是输入提示。
    >>>name = input('请输入你的姓名:')
    请输入你的姓名:superkmi
    >>>print(name)
    superkmi
    

    34)int()

    • 将一个字符串或数字转换为整型。
    >>>print(int('123'))
    123
    >>>print(int(14.2))
    14
    

    35)isinstance(, )

    • 判断是否和是同一个类型。
    • 与type不同,isinstance包括继承。
    • >>>print(isinstance(1,int))
      True
      >>>print(isinstance(1,str))
      False
      
      >>>class Animal():
      >>>    pass
      >>>class Dog(Animal):
      >>>    pass
      >>>print(type(Dog()) == type(Animal))
      False
      >>>print(isinstance(Dog(),Animal))
      True
      

      36)issubclass(, )

      • 判断是否是的子类。
        >>>class Animal():
        >>>    pass
        >>>class Dog(Animal):
        >>>    pass
        >>>print(issubclass(Dog,Animal))
        True
        >>>print(issubclass(Animal,Dog))
        False
        

        37)iter(, )

        • 用来生成迭代器。(迭代器在高级语法部分)
        >>>l = [1,2,3,4,5]
        >>>l_iter = iter(l)
        >>>print(next(l_iter))
        1
        >>>print(next(l_iter))
        2
        >>>print(next(l_iter))
        3
        
        • 如果传递了第二个参数,则object必须是一个可调用的对象(如,函数)。此时,iter创建了一个迭代器对象,每次调用这个迭代器对象的__next__()方法时,都会调用object,且返回值为时停止。
        >>>import random # 导入random包
        >>>def randomInt():
        >>>    l = [1,2,3,4,5]
        >>>    return random.choice(l) # 返回l中一个随机值
        >>>for i in iter(randomInt, 4): # 当返回值为4时就停止了
        >>>    print(i)
        5
        1
        3
        
        L开头:

        38)len()

        • 返回对象的长度。
        >>>print(len('abcdefg'))
        7
        >>>print(len([1,2,3,4,5,6]))
        6
        >>>print(len({'a','b','c','d','e'}))
        5
        >>>print(len(range(1,10)))
        9
        

        39)list()

        • 创建列表。
        • 详情见笔记第一篇2.1.4。

        40)locals()

        • 以字典类型返回当前位置的全部局部变量。
        >>>def sayHello():
        >>>    word = 'Hello World!'
        >>>    num = 1
        >>>    print(locals())
        >>>sayHello()
        {'word': 'Hello World!', 'num': 1}
        
        M开头:

        41)map(, , ...)

        • 根据提供的函数对指定序列做映射。
        • 返回迭代器。
        >>>i = [1,2,3,4,5]
        >>>def triple(x):
        >>>    return x*3
        >>>print(list(map(triple,i)))
        [3, 6, 9, 12, 15]
        

        42)max(, < key>,)

        • 返回给定参数的最大值。
        • 用来指定取最大值的方法。
        • 为最大值不存在时返回的默认值。
        >>>l1 = [1,2,3,4,5,6,7]
        >>>print(max(l1))
        7
        
        >>>l2 = ['a','b','c','d','e']
        >>>print(max(l2))
        'e'
        
        >>>l3 = [1.5,4.3,2.5,100.3,-34,-10000]
        >>>print(max(l3,key=abs)) # 比较绝对值
        -10000
        
        >>>print(max((),default=0))
        0
        

        43)memoryview()

        • 返回给定参数的内存查看对象。
        • 为byte。
        >>>print(memoryview(b'abc'))
        
        

        44)min(, < key>,)

        • 返回给定参数的最小值。
        • 用来指定取最小值的方法。
        • 为最小值不存在时返回的默认值。
        >>>l1 = [1,2,3,4,5,6,7]
        >>>print(min(l1))
        1
        
        >>>l2 = ['a','b','c','d','e']
        >>>print(min(l2))
        'a'
        
        >>>l3 = [1.5,4.3,2.5,100.3,-34,-10000]
        >>>print(min(l3,key=abs)) # 比较绝对值
        1.5
        
        >>>print(min((),default=0))
        0
        
        N开头:

        45)next(, )

        • 返回迭代器的下一个值。
        • 如果迭代器耗尽,则返回给定的 default。
        • 如果没有默认值则触发StopIteration。
        >>>l = [1,2,3,4,5]
        >>>l_iter = iter(l)
        >>>print(next(l_iter))
        1
        >>>print(next(l_iter))
        2
        >>>print(next(l_iter))
        3
        
        >>>l = [1,2]
        >>>l_iter = iter(l)
        >>>print(next(l_iter))
        1
        >>>print(next(l_iter))
        2
        >>>print(next(l_iter,'no more element.'))
        no more element.
        
        O开头:

        46)object()

        • 返回一个object类。
        • object是所有类的父类。
        • 详情见笔记第二篇:面向对象和类。
        >>>obj = object()
        >>>dir(obj)
        ['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
        >>>type(obj)
        object
        

        47)oct()

        • 将一个整数转变为一个前缀为“0o”的八进制字符串。
        >>>print(oct(10))
        '0o12'
        >>>print(oct(0x16))
        '0o26'
        

        48)open(, , , , , , , )

        • 用于文件操作。
        • 文件路径。
        • 表示打开的目的是读/写,包含w/r/wb/rb等类型。
        • 缓冲策略
        • 解码方式
        • 指定如何处理编码和解码错误
        • 定义换行符
        >>>import os
        >>>path = os.path.join(os.curdir,'test','filename.txt') # 制作文件路径
        >>>data = open(path,'r') # 读取文件中的数据
        

        49)ord()

        • ord()返回代表Unicode字符的整数。
        • ord()和chr()互逆。
        >>>print(ord('a'))
        97
        
        P开头:

        50)pow(, , )

        • 次方。
        • 如果存在则取模。
        • 等同于(^)%
        >>>print(pow(10,2))
        100
        
        >>>print(pow(14,3,3)) # 14的3次方取模3
        2
        

        51)print(, , , , )

        • 基础说明见笔记第一篇。
        • 用于将输出到中。
        • 表示分隔符,默认为空的字符串。
        • 表示以什么结尾,默认为换行符。
        • 表示输出的目标,默认为控制台输出流。
        • 是否在print()后,即使在条件未满足的情况下,立即将内容输出。
        >>>with open('filename.txt','w') as f: # 创建一个新文件并写入内容。
        >>>    print('hello',file=f,flush=True)  # 将内容输入到文件中。正常是文件close时写入,如果flush=True则立即写入。
        

        52)property(, , , )

        • 用于在类中返回属性值。
        • 详情见笔记第二篇:类的成员描述符7.3。
        R开头:

        53)range(, , )

        • 获得一个不可变的序列。
        • 详情见笔记第一篇2.4.1。

        54)repr()

        • 将对象转化为供解释器读取的形式。
        • 可以和eval()配合用来在数据结构和字符串之间转换。
        >>>list = [1,2,3,4,5,'hello','world']
        >>>repr(list)
        "[1, 2, 3, 4, 5, 'hello', 'world']"
        
        >>>str = 'Hello World!'
        >>>repr(str)
        "'Hello World!'"
        

        55)reversed()

        • 返回一个反向的 iterator
        >>>l = [1,2,3,4,5]
        >>>rl = reversed(l)
        >>>print([x for x in rl])
        [5, 4, 3, 2, 1]
        
        >>>str = 'hello world'
        >>>rstr = reversed(str)
        >>>print([x for x in rstr])
        ['d', 'l', 'r', 'o', 'w', ' ', 'o', 'l', 'l', 'e', 'h']
        

        56)round(, )

        • 返回四舍五入的值。
        • 指保留小数点几位。
        >>>print(round(3.1415926,2))
        3.14
        
        S开头:

        57)set()

        • 返回一个新的 [set]对象。
        • 详情见笔记第一篇2.7.2。

        58)setattr(, , )

        • 修改对象或函数的属性。
        • 详情见笔记第二篇5.4.2。

        59)slice(, , )

        • 实现切片对象,主要用在切片操作函数里的参数传递。
        • 起始位置。
        • 结束位置。
        • 间距。
        >>>l = [1,2,3,4,5,6,7]
        
        >>>slice1 = slice(3) # 3个元素
        >>>print(l[slice1])
        [1, 2, 3]
        
        >>>slice2 = slice(3,7) # 3到7之间
        >>>print(l[slice2])
        [4, 5, 6, 7]
        

        60)sorted(, *, , )

        • 排序后返回。
        • 指定可迭代对象中的一个元素来进行排序。
        • = True时反向排序。
        >>>l = [5,3,2,1,3,2,3,9,7,5]
        >>>print(sorted(l))
        [1, 2, 2, 3, 3, 3, 5, 5, 7, 9]
        
        >>>print(sorted(l,reverse=True)) # 反向排序
        [9, 7, 5, 5, 3, 3, 3, 2, 2, 1]
        
        >>>l = [(1,'b'),(9,'a'),(4,'d'),(20,'g')]
        >>>print(sorted(l,key=lambda x:(x[1]))) # 用第二个参数排序
        [(9, 'a'), (1, 'b'), (4, 'd'), (20, 'g')]
        

        61)@staticmethod

        • 将方法转换为静态方法。
        • 静态方法不强制要求传递参数(self,cls)。
        >>>class Mountain():   
        >>>    @staticmethod
        >>>    def echo(voice):
        >>>        print(voice)
        >>>m = Mountain()
        >>>m.echo('Hello World!') # 通常对象会将自身作为第一个参数返回。
        Hello World!
        

        62)str(, , )

        • 返回一个str版本的
          >>> l = [1,2,3,4,5]
          >>> str(l)
          '[1, 2, 3, 4, 5]'
          
          >>> d = {'A':1,'B':2,'C':3}
          >>> str(d)
          "{'A': 1, 'B': 2, 'C': 3}"
          

          63)sum(,)

          • 获得迭代对象的和。
          • 在和之后再加
          >>>l = [1,2,3,4,5]
          >>>sum(l)
          15
          >>>sum(l,2)
          17
          

          64)super(, )

          • 用于调用父类的一个方法。
          • 详情见笔记第二篇6.2.5。
          T开头:

          65)tuple()

          • 创建元组类型。
          • 详情见笔记第一篇2.1.5。

          66)type(, , )

          • 返回对象类型。
          • 与isinstance()的区别是:type()不会考虑子类的情况。
          • 详情见笔记第一篇1.7.3。
          V开头:

          67)vars()

          • 返回的属性和属性值的__dict__对象。
          • 如果没有参数,就打印当前调用位置的属性和属性值 类似 locals()。
          • >>>class Dog():
            >>>    name = 'dog'
            >>>print(vars(Dog))
            mappingproxy({'__module__': '__main__',
                         'name': 'dog',
                         '__dict__': ,
                         '__weakref__': ,
                         '__doc__': None})
            
            Z开头:

            68)zip(*...)

            • 将多个可迭代对象一一对应,打包成一个个元组。
            • 返回值的长度以最短的可迭代对象长度为准。
            • 返回的是一个可迭代zip对象。
            >>>s = ['a','b','c','d']
            >>>n = [1,2,3,4,5,6,7,8,9]
            >>>y = ['hello','How','are','you']
            >>>print(list(zip(s,n,y)))
            [('a', 1, 'hello'), ('b', 2, 'How'), ('c', 3, 'are'), ('d', 4, 'you')]
            
            其它:

            69)__import__(, , , , )

            • 用于动态加载类和函数 。
            • 如果一个模块经常变化就可以使用 import() 来动态载入。
            • 效果类似import语句
            • 这个函数一般用不到。
            >>>sys = __import__('sys')
            >>>sys.path
            >>>['C:\\Users\\xiaor',
            >>> 'd:\\python3.7\\python37.zip',
            >>> 'd:\\python3.7\\DLLs',
            >>> 'd:\\python3.7\\lib',
            >>> 'd:\\python3.7',]
            

            参考资料


            • https://blog.csdn.net/u010138758/article/details/80152151 J-Ombudsman
            • https://www.cnblogs.com/zhuluqing/p/8832205.html moisiet
            • https://www.runoob.com 菜鸟教程
            • http://www.tulingxueyuan.com/ 北京图灵学院
            • http://www.imooc.com/article/19184?block_id=tuijian_wz#child_5_1 两点水
            • https://blog.csdn.net/weixin_44213550/article/details/91346411 python老菜鸟
            • https://realpython.com/python-string-formatting/ Dan Bader
            • https://www.liaoxuefeng.com/ 廖雪峰
            • https://blog.csdn.net/Gnewocean/article/details/85319590 新海说
            • 《Python学习手册》Mark Lutz
            • 《Python编程 从入门到实践》Eric Matthes

            本文作者:大师兄(superkmi)


            梦幻微武侠

            你可能感兴趣的:(大师兄的Python学习笔记(四): Python的内置函数)