欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

14 Python学习之常用内置函数

程序员文章站 2024-02-19 13:53:52
...

查看所有内置函数:

import builtins
print(dir(builtins))

运行结果:

['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'ZeroDivisionError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']

常用内置函数

bin

bin的作用是将十进制转换成二进制

例1:

num = 154
print(bin(num))

运行结果:

0b10011010

oct

oct的作用是将十进制转换成八进制

例1:

num = 154
print(oct(num))

运行结果:

0o232

hex

hex的作用是将十进制转换成十六进制

例1:

num = 154
print(hex(num))

运行结果:

0x9a

round

将数字以四舍五入的方式返回,如果不指定小数精度,默认是0返回的是整数部分;小数精度最后一位是0,不显示

num = 10.2381028301
print(round(num))
print(round(num, 2))
print(round(num, 5))

运行结果:

10 # 不指定精度,返回整数
10.24 # 四舍五入
10.2381 # 最后一位是0 ,不显示

divmod

divmode是以元组的形式返回除法的商合余数

例1:

print(divmod(200, 3))

运行结果:

(66, 2)

pow

pow函数

如果参数是两个:是求x的y次方;

如果参数是三个,是求x的y次方与z的取余

例1:

print(pow(2, 5))
print(pow(2, 5, 3))

运行结果:

32

2

bytes

bytes主要用于不同编码直接的转换,数据流,在网络传输过程中用的比较多

例1:

str1 = '中国'
ret1 = str1.encode('utf-8')
print(ret1)
print(type(ret1))

# 使用bytes
ret2 = bytes(str1, encoding='utf-8')
print(ret2)
print(type(ret2))

运行结果:

b’\xe4\xb8\xad\xe5\x9b\xbd’
<class ‘bytes’>
b’\xe4\xb8\xad\xe5\x9b\xbd’
<class ‘bytes’>

ord

ord是输入一个字符找该字符的对应在编码表中的位置,默认是Unicode查找

例1:

str1 = '中'
ret = ord(str1)
print(ret)

运行结果:

20013

chr

chr 是输入位置数字,找出其对应的字符,默认是Unicode查找,该函数跟ord正好相反

例1:

str1 = 20013
ret = chr(str1)
print(ret)

运行结果:

repr

repr 是返回一个对象的string形式(原形毕露)占位符用%r表示

例1:

str1 = "20013"
ret = repr(str1)
print(ret)

name = '张三'
msg = '我叫 %r' % name
print(msg)

运行结果:

‘20013’

我叫 ‘张三’

all

可迭代对象中全部是True结果才是True

例1:

li = [1, 2, '中', True, '']          # 列表中有空字符串,所以结果是False
ret = all(li)
print(ret)

运行结果:

False

any

可迭代对象中有一个是True结果就是True

例1:

li = ([0, '中', False, ''])         # 列表中有'中'是True
ret = any(li)
print(ret)

运行结果:

True

sum

求可迭代对象的和(元素必须是基本数字),可指定初值,默认是0(详见官方文档)

例1:

li = [1, 2, 3, 4]
ret = sum(li)
print(ret)

ret2 = sum(li, 200)       # 指定初值
print(ret2)

运行结果:

10

210

reversed

返回一个翻转后的迭代器,注意与列表的函数reverse的区别,内置函数返回的是一个迭代器,列表函数返回的是一个列表

例1:

li = 'afasdf'
ret = reversed(li)
print(ret)
print(li)

运行结果:

<reversed object at 0x7f838f58d400>
afasdf

例2:

li = [1, 2, 3, 4]
ret = reversed(li)
print(ret)
print(list(ret))
print(li)

运行结果:

<list_reverseiterator object at 0x7fc9f23193c8>
[4, 3, 2, 1]
[1, 2, 3, 4]

zip

创建一个迭代器,从每个iterable聚合元素。返回的长度,取决于传入的参数中最少的值

例1:

li = [1, 2, 3, 4]
tup = ('张三', '李四', '王五')
s1 = 'abcd'
ret = zip(li, tup, s1)
print(ret)
print(list(ret))		# 返回的结果长度是3,因为tup只有3
print(li)
print(tup)
print(s1)

运行结果:

<zip object at 0x7f503b31cbc8>
[(1, ‘张三’, ‘a’), (2, ‘李四’, ‘b’), (3, ‘王五’, ‘c’)]
[1, 2, 3, 4]
(‘张三’, ‘李四’, ‘王五’)
abcd

filter

filter类似于列表推导式的筛选模式,需要两个参数,第一个是函数,第二个是可迭代对象,返回结果是一个迭代器

例1:

li = [-1, 7, 3, 4, 5, 6, 2]
print([i for i in li if i > 3])			# 列表推导式

ret = filter(lambda i: i > 3, li)		# 返回的是一个迭代器
print(list(ret))

运行结果:

[7, 4, 5, 6]
[7, 4, 5, 6]

map

map类似于列表推导式的循环模式,需要两个参数,第一个是函数,第二个是可迭代对象,返回结果是一个迭代器

print([i**2 for i in range(10)])

ret = map(lambda arg: arg**2, range(10))
print(ret)
print(list(ret))

运行结果:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
<map object at 0x7f21165dccf8>
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

callable

callable判断一个对象是否可以被调用

例1:

num = 10
def func():
    pass

print(callable(func))
print(callable(num))

运行结果:

True
False

min 和 max

min是获取最小值,max是获取最大值,但是我们有时无法通过直接使用来获取想要的结果,因此需要用到函数的关键字参数key。凡是可以加key的函数:它会自动的将可迭代对象中的每个元素按照顺序传入key对应的函数中,按返回值比较大小

例1:

# 未使用key关键字参数的情况
dt = {'a': 3, 'b': 5, 'c': 0, 'd': 1}
print('未使用key的返回结果:', min(dt))          # 默认是按键的ASCII来进行比较

def func(args):
    return dt[args]        # 因为是按返回的值进行比较,所以取字典的值

print('使用了key的返回结果:', min(dt, key=func))	# 注意:这里只能是函数名,不能有调用
print('使用了匿名函数和key的返回结果:', min(dt, key=lambda i: dt[i]))

未使用key的返回结果: a
使用了key的返回结果: c
使用了匿名函数和key的返回结果: c

例2:

找出年龄最小的姓名

li = [('张三', 18), ('alex', 35), ('李四', 16)]
print(min(li))				# 默认是按照字典键的ASCII的值比较,不符合要求

# 匿名函数是获取每一次传入的数字,然后进行比较,返回最下的
print(min(li, key=lambda args: args[1]))		# 使用lambda函数求出值最小的键

(‘alex’, 35)
(‘李四’, 16)

注意:凡是带关键字参数key的函数都可以这样使用

sorted

例1:

按年龄从大到小排序

li = [('张三', 18), ('alex', 35), ('big', 16)]
print(sorted(li, key=lambda args: args[1], reverse=True))		# reverse指定倒叙

[(‘alex’, 35), (‘张三’, 18), (‘big’, 16)]