python 内置函数

您所在的位置:网站首页 python内置对象有哪些 python 内置函数

python 内置函数

2024-07-12 15:03:26| 来源: 网络整理| 查看: 265

内置函数 阅读: 23914     评论:10

你会不会有些好奇Python为什么可以直接使用一些内建函数,而不用显式的导入它们?比如 str()、int()、dir()、id()、type(),max(),min(),len()等,许多许多非常好用,快捷方便的函数。

因为这些函数都是一个叫做builtins模块中定义的函数,而builtins模块默认在Python环境启动的时候就自动导入,所以你可以直接使用这些函数。

我们可以在IDLE里查证一番:

>>> globals() {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': , '__spec__': None, '__annotations__': {}, '__builtins__': } >>> 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', 'WindowsError', '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']

globals()函数可以查看当前状态下,全局变量有哪些,其中最后一个'__builtins__': 就是我们说的builtins模块。再使用dir()函数查看它的成员属性,巴拉巴拉一大堆。

builtins模块里有接近80个内置函数,60多个内置异常,还有几个内置常数,特殊名称以及模块相关的属性。

Python通过这个近80个内置函数,为我们提供了丰富、强大、高效、快速的解决方案,大多数时候,我们根本不需要导入第三方库,甚至标准库都不需要。不需要自己造轮子,简简单单地使用Python的内置函数就好了!

内置函数 abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod() id() object() sorted() ascii() enumerate() input() oct() staticmethod() bin() eval() int() open() str() bool() exec() isinstance() ord() sum() bytearray() filter() issubclass() pow() super() bytes() float() iter() print() tuple() callable() format() len() property() type() chr() frozenset() list() range() vars() classmethod() getattr() locals() repr() zip() compile() globals() map() reversed() __import__() complex() hasattr() max() round() delattr() hash() memoryview() set()

由于Python内置函数的强大、丰富、方便,在此特地用单独的章节进行介绍。因为内容编排的原因,小80个条目中有一部分在前面已经介绍过,有一部分留待后面介绍。

abs():

绝对值函数。如abs(-1)= 1

>>> abs(-10) 10 >>> f = abs >>> f(-1) 1 >>> abs=id >>> abs(1) 1869788224

以abs()函数为例,展示两个特性。一是,内置函数是可以被赋值给其他变量的,同样也可以将其他对象赋值给内置函数,这时就完全变了。所以,内置函数不是Python关键字,要注意对它们的保护,不要使用和内置函数重名的变量名,这会让代码混乱,容易发生难以排查的错误。

all()

接收一个可迭代对象,如果对象里的所有元素的bool运算值都是True,那么返回True,否则False。不要小瞧了这个函数,用好了,有化腐朽为神奇的特效。

另外,官方文档说明:如果all函数中的可迭代对象是空的,直接返回True。

>>> all([1,1,1]) True >>> all([1,1,0]) False >>> all([]) True any()

接收一个可迭代对象,如果迭代对象里有一个元素的bool运算值是True,那么返回True,否则False。与all()是一对兄弟。

>>> any([0,0,1]) True >>> any([0,0,0]) False ascii()

调用对象的__repr__()方法,获得该方法的返回值。__repr__()方法是由对象所属类型实现的方法。不可以简单地理解为print或echo。

>>>s = “haha” >>> ascii(s) "'haha'" >>> a = [1,2,3] >>> ascii(a) '[1, 2, 3]' bin()、oct()、hex()

三个函数是将十进制数分别转换为2/8/16进制。

>>> i = 10 >>> bin(i) '0b1010' >>> oct(i) '0o12' >>> hex(i) '0xa' bool()

测试一个对象或表达式的执行结果是True还是False。这个在布尔数据类型章节中已经很详细的介绍过了。Ps:实际上bool是一个类,不是函数,bool()的返回值是一个布尔类型的实例。builtins中的很多函数,其实都是类,比如bytes(),str()等等。只是因为称呼的习惯,我们叫它函数,严格意义上说,这是不对的,大家心里有数就可以,后面就不再重复说明。

>>> bool(1==2) False >>> bool(abs(-1)) True >>> bool(None) False bytearray

实例化一个bytearray类型的对象。参数可以是字符串、整数或者可迭代对象。bytearray是Python内置的一种可变的序列数据类型,具有大多数bytes类型同样的方法。

当参数是字符串的时候,需要指定编码类型。

当参数是整数时,会创建以该整数为长度,包含同样个数空的bytes对象的数组。

当参数是个可迭代的对象时,该对象必须是一个取值范围0 >> a = bytearray("asdff",encoding='utf-8') >>> b = bytearray(10) >>> b bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') >>> d = bytearray([1,2,3]) >>> d bytearray(b'\x01\x02\x03') >>> d = bytearray([1,2,300]) Traceback (most recent call last): File "", line 1, in d = bytearray([1,2,300]) ValueError: byte must be in range(0, 256) bytes()

将对象转换成字节类型。例如:s = '张三';m = bytes(s,encoding='utf-8')

>>> i=2 >>> bytes(i) b'\x00\x00' >>> s = 'haha' >>> bytes(s) Traceback (most recent call last): File "", line 1, in bytes(s) TypeError: string argument without an encoding >>> bytes(s, encoding="utf-8") b'haha' >>> bytes(s, encoding="GBK") b'haha' str()

将对象转换成字符串类型,同样也可以指定编码方式。例如:str(bytes对象,encoding='utf-8')

>>> i = 2 >>> str(i) '2' >>> b = b"haha" >>> str(b) # 注意! "b'haha'" >>> str(b,encoding="gb2312") 'haha' >>> str([1,2,3,]) '[1, 2, 3]'

Bytes和string之间的互相转换,更多使用的是encode()和decode()方法。

callable()

判断对象是否可以被调用。如果某个对象具有__call__方法,那它就能被调用。 例如,def f1(): pass,那么callable(f1)返回True。

>>> def f1(): pass >>> callable(f1) True >>> a = "123" >>> callable(a) False >>> class Foo: def __init__(self,name,age): self.name = name self.age = age >>> f_obj = Foo("jack",20) >>> callable(f_obj) False >>> callable(Foo) True chr()

返回某个十进制数对应的ASCII字符,例如:chr(99) = ‘c’。它可以配合random.randint(65,90)随机方法,生成随机字符,用于生产随机验证码。

import random for i in range(10): a = random.randint(65,90) c = chr(a) print(c) ord()

与chr()相反,返回某个ASCII字符对应的十进制数,例如,ord('A') = 65

>>> ord("A") 65 >>> ord("\n") 10 classmethod()、staticmethod()和property()

类机制中,用于生成类方法、静态方法和属性的函数。在面向对象章节会有详细介绍。

compile()

将字符串编译成Python能识别或执行的代码。 也可以将文件读成字符串再编译。

>>> s = "print('helloworld')" >>> r = compile(s,"","exec") >>> r >>> r() Traceback (most recent call last): File "", line 1, in r() TypeError: 'code' object is not callable >>> exec(r) helloworld >>> eval(r) helloworld complex()

通过数字或字符串生成复数类型对象。

>>> complex(1,2) (1+2j) >>> complex('3+4j') (3+4j) >>> complex('3 +4j') Traceback (most recent call last): File "", line 1, in complex('3 +4j') ValueError: complex() arg is a malformed string

使用字符串的时候,+号左右不能有空白。

delattr()、setattr()、getattr()、hasattr()

类机制中,分别用来删除、设置、获取和判断属性。后面会有详解。

dir()

显示对象所有的属性和方法。最棒的辅助函数之一!

>>> dir() ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'builtins', 'r', 's'] >>> dir([1,2,]) ['__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'] int()、float()、list()、dict()、set()、tuple()

与bool()、str()、bytes()一样,它们都是实例化对应数据类型的类。

divmod()

除法,同时返回商和余数的元组。

>>> divmod(10,3) (3, 1) >>> divmod(11,4) (2, 3) enumerate()

枚举函数,在迭代对象的时候,额外提供一个序列号的输出。注意:enumerate(li,1)中的1表示从1开始序号,默认从0开始。注意,第二个参数才是你想要的序号开始,不是第一个参数。

dic = { "k1":"v1", "k2":"v2", "k3":"v3", } for i, key in enumerate(dic, 1): print(i,"\t",key) eval()

将字符串直接解读并执行。例如:s = "6*8",s是一个字符串,d = eval(s), d的结果是48。

exec()

执行字符串或compile方法编译过的字符串,没有返回值。

>>> exec("print('this is a test')") this is a test >>> eval("print('this is a test')") this is a test format()

执行format(),其实就是调用该对象所属类的__format__方法。类似print功能。

>>> format("324324") '324324' >>> format([1,2,3]) '[1, 2, 3]' frozenset()

返回一个不能增加和修改的集合类型对象。

>>> a [1, 2, 3] >>> b = frozenset(a) >>> b frozenset({1, 2, 3}) >>> dir(b) ['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'copy', 'difference', 'intersection', 'isdisjoint', 'issubset', 'issuperset', 'symmetric_difference', 'union'] globals()

列出当前环境下所有的全局变量。注意要与global关键字区分!在本节的开始,我们就已经展示了它的用法。

hash()

为不可变对象,例如字符串生成哈希值的函数!

>>> hash("i am jack") 5602200374213231465 >>> hash(1) 1 >>> hash(100000) 100000 >>> hash([1,2,3,]) Traceback (most recent call last): File "", line 1, in hash([1,2,3,]) TypeError: unhashable type: 'list' >>> hash((1,2,3)) 2528502973977326415 help()

返回对象的帮助文档。谁用谁知道!

>>> a = [1,2,3] >>> help(a) Help on list object: class list(object) | list() -> new empty list | list(iterable) -> new list initialized from iterable's items ... id()

返回对象的内存地址,常用来查看变量引用的变化,对象是否相同等。常用功能之一!

>>> id(0) 1456845856 >>> id(True) 1456365792 >>> a = "Python" >>> id(a) 37116704 input()

接收用户输入,返回一个输入的字符串。

>>> a = input("Please input a number: ") Please input a number: 100 >>> a '100' >>> type(a) isinstance()

判断一个对象是否是某个类的实例。比type()方法适用面更广。

>>> isinstance("haha", str) True >>> isinstance(1, str) False issubclass()

issubclass(a,b),判断a是否是b的子类。

>>> class Foo: pass >>> class Goo(Foo): pass >>> issubclass(Goo, Foo) True iter()

制造一个迭代器,使其具备next()能力。

>>> lis = [1, 2, 3] >>> next(lis) Traceback (most recent call last): File "", line 1, in next(lis) TypeError: 'list' object is not an iterator >>> i = iter(lis) >>> i >>> next(i) 1 len()

返回对象的长度。不能再常用的函数之一了。

locals()

返回当前可用的局部变量。

>>> locals() {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': , '__spec__': None, '__annotations__': {}, '__builtins__': , 'a': '100', 'lis': [1, 2, 3], 'i': , 'dic': {'k1': 'v1'}} max()/min():

返回给定集合里的最大或者最小的元素。可以指定排序的方法!

lst=['abcdhush8','abc9iujtwertwert','abcdjlas','abcdj897h'] a = min(lst,key=len) print(a) memoryview(obj)

返回obj的内存视图对象。obj只能是bytes或bytesarray类型。memoryview对象的使用方法如下:

>>> v = memoryview(b'abcefg') >>> v[1] 98 >>> v[-1] 103 >>> v[1:4] >>> bytes(v[1:4]) b'bce' next()

通过调用迭代器的__next__()方法,获取下一个元素。

object()

该方法不接收任何参数,返回一个没有任何功能的对象。object是Python所有类的基类。

open()

打开文件的方法。在Python2里,还有一个file()方法,Python3中被废弃了。后面章节会详细介绍open()的用法。

pow()

幂函数。

>>> pow(3, 2) 9 print()

这个还用介绍吗?

range()

没错,这是Python内置的函数,前面已经介绍了。

repr()

调用对象所属类的__repr__方法,与print功能类似。

>>> s = "hashdfh" >>> repr(s) "'hashdfh'" reversed()

反转,逆序对象

>>> reversed # reversed本身是个类 >>> reversed([1,2,3,4,5]) # 获得一个列表反转器 >>> a = reversed([1,2,3,4,5]) >>> a >>> list(a) # 使用list方法将它转换为一个列表 [5, 4, 3, 2, 1] round()

四舍五入.

>>> round(1.5) 2 >>> round(1.4) 1 slice()

返回一个切片类型的对象。slice是一个类,一种Python的数据类型。Python将对列表等序列数据类型的切片功能单独拿出来设计了一个slice类,可在某些场合下使用。

>>> s = slice(1, 10, 2) >>> s slice(1, 10, 2) >>> type(s) >>> lis = [i for i in range(10)] >>> lis [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> lis[s] # 注意用法 [1, 3, 5, 7, 9] sum()

求和.

>>> sum(1,2,3) # 需要传入一个可迭代的对象 Traceback (most recent call last): File "", line 1, in sum(1,2,3) TypeError: sum expected at most 2 arguments, got 3 >>> sum([1,2,3]) # 传入一个列表 6 >>> sum({1:1,2:2}) # 突发奇想,作死传入一个字典 3 super()

调用父类。面向对象中类的机制相关。后面介绍。

type()

显示对象所属的数据类型。常用方法!前面已经展示过。

vars()

与dir()方法类似,不过dir()方法返回的是key,vars()方法返回key的同时还把value一起打印了。

>>> vars() {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': , '__spec__': None, '__annotations__': {}, '__builtins__': , 'a': , 's': 'ha'} map()

映射函数。使用指定的函数,处理可迭代对象,并将结果保存在一个map对象中,本质上和大数据的mapreduce中的map差不多。

使用格式:obj = map(func, iterable),func是某个函数名,iterable是一个可迭代对象。

细心的同学可能发现了,我除了组合一些成对的或者同类系列的内置函数。还有map()函数,连同后面的filter()、zip()、sorted()和__import__()函数都没有介绍。因为这几个内置函数功能非常强大,使用场景非常多,Python非常贴心地帮我们实现并内置了!

li = [1,2,3] data = map(lambda x :x*100,li) # 这里直接使用了一个匿名函数 print(type(data)) # 返回值是一个map对象,它是个迭代器。 data = list(data) # 可以用list方法将map对象中的元素全部生成出来,保存到一个列表里。 print(data) ------------------------------------------------------ 运行结果: [100, 200, 300] filter()

过滤器,用法和map类似。在函数中设定过滤的条件,逐一循环对象中的元素,将返回值为True时的元素留下(注意,不是留下返回值!),形成一个filter类型的迭代器。

def f1(x): if x > 3: return True else: return False li = [1,2,3,4,5] data = filter(f1,li) print(type(data)) print(list(data)) ---------------------------- 运行结果: [4, 5]

或者:

li = [11,22,33,44,55] result = filter(lambda x: x>33,li) print(list(result)) ---------------------------------------------- 结果: [44, 55] ------------------------------------------- # 等同于 li = [11,22,33,44,55] y = [a for a in li if a > 33] print(y) zip()

组合对象。将对象逐一配对。

list_1 = [1,2,3] list_2 = ['a','b','c'] s = zip(list_1,list_2) print(list(s)) -------------------------------- 运行结果: [(1, 'a'), (2, 'b'), (3, 'c')]

组合3个对象:

list_1 = [1, 2, 3, 4] list_2 = ['a', 'b', 'c', "d"] list_3 = ['aa', 'bb', 'cc', "dd"] s = zip(list_1, list_2, list_3) print(list(s)) 运行结果: [(1, 'a', 'aa'), (2, 'b', 'bb'), (3, 'c', 'cc'), (4, 'd', 'dd')]

那么如果对象的长度不一致呢?多余的会被抛弃!以最短的为基础!

list_1 = [1,2,3] list_2 = ['a','b','c',"d"] s = zip(list_1,list_2) print(list(s)) -------------------------------- 运行结果: [(1, 'a'), (2, 'b'), (3, 'c')] sorted()

排序方法。有key和reverse两个重要参数。

基础用法: 直接对序列进行排序

>>> sorted([36, 5, -12, 9, -21]) [-21, -12, 5, 9, 36]

指定排序的关键字。关键字必须是一个可调用的对象。例如下面的例子,规则是谁的绝对值大,谁就排在后面。

>>> sorted([36, 5, -12, 9, -21], key=abs) [5, 9, -12, -21, 36]

指定按反序排列。下面的例子,首先按忽略大小写的字母顺序排序,然后倒序排列。

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True) ['Zoo', 'Credit', 'bob', 'about'] __import__(name)

这个方法为我们提供了一种通过字符串反射包、库或模块的手段。其中的name是你想要导入的库的名称的字符串。

t = __import__("time") print(t.time())

例子中,利用字符串“time”,导入了实际的time库,并赋值给t变量。这个变量实际就相当于import time的结果。然后使用t.time()进行调用。

在某些场景下,这个方法非常有用。但是很多时候,它也存在安全问题,Python官方不建议经常使用它。

至此,除了个别遗留,近80个内置函数就基本介绍完毕。

 装饰器 文件读写  评论总数: 10 点击登录后方可评论 user_image

看到这里忍不住不回复了。哈哈。1.5倍速和英超解说员詹俊声音一模一样,无詹俊,不英超,现在可以说一句无刘江不python ,老师讲的真好。

By   再贰伍佰年    On   2020年11月27日 10:55   回复 user_image

感谢支持和肯定!真不敢当

 博主   回复   再贰伍佰年 2020年11月27日 15:04   回复 user_image

bool([ ])的结果为False,为什么 all([ ])的结果为True?小白表示疑问,请高手赐教

By   冬123st    On   2020年8月24日 07:11   回复 user_image

官方文档说明:如果all函数中的可迭代对象是空的,直接返回True。

 博主   回复   冬123st 2020年8月24日 08:29   回复 user_image

刘老师,random.randint(65, 91)是随机生成65-91之间的数字,这里的括号应该没有左闭右开。然而chr(91) = '[',因此应该是random.randint(65, 90),这样最后代码效果才能生成‘A’-‘Z’的随机数~

By   累死懒羊羊    On   2020年3月3日 09:11   回复 user_image

感谢支持,你是对的,已经修改。

 博主   回复   累死懒羊羊 2020年3月6日 10:39   回复 user_image

eval():执行表达式。exec():执行代码块。

By   蔷薇-Nina    On   2018年4月14日 16:33   回复 user_image

打 call

By   海上有个树荫_hhh    On   2018年3月11日 17:02   回复 user_image

关于round()需要注意: In [146]: round(1.5) Out[146]: 2 In [147]: round(2.5) Out[147]: 2 In [148]: round(3.5) Out[148]: 4 In [149]: round(4.5) Out[149]: 4

By   ywhyme    On   2018年1月18日 18:00   回复 user_image

奇数的 .5 正常四舍五入 偶数的 .5 使用round(2.5) 2

海上有个树荫_hhh   回复   ywhyme 2018年3月11日 17:07   回复


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭