14 Python学习之常用内置函数

查看所有内置函数:

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)]

posted @ 2020-08-04 14:31  爬坡的蜗牛  阅读(101)  评论(0编辑  收藏  举报