转载自海外博客《脚本运行》:快速掌握Python内置函数的用法,有目的的分类背单词Python的内置-in函数提供了很多实用的函数,本文致力于分类快速记忆每个内置函数的“一般功能和用法”。毕竟我们的大脑不是硬盘,只要能快速找到笔记所在的地方就行。我将Python的内置函数大致分为9类,不是很严谨,只是为了快速记忆,下面按照分组方式简单介绍一下各个函数的“作用”,并提供一个简单的“例子”。当然,掌握函数用法最快的方法不是看我的薄文,而是复制我的示例代码跑两遍。Iterationrange()range()函数返回一个数字序列,默认从0开始,默认以1递增,以指定数字(不包括指定数字)结束。x=range(6)forninx:print(n,end='')#输出012345另外,还可以指定数字的范围,语法:range(start,stop,step),例如创建一个从0到6的数字序列,增量为2:x=range(0,6,2)forninx:print(n,end='')#output#024reversed()reversed()函数用于反向迭代:alph=["a","b","c","d"]ralph=reversed(alph)forxinralph:print(x,end='')#output#dcbaall()如果迭代器中的所有元素都为真,则返回True(如果可迭代对象为空,则返回True)。iterable=[True,True]print("all:",all(iterable))iterable[1]=Falseprint("all:",all(iterable))#output#all:True#all:Falseany()如果可用如果iterable的任何元素为真,则返回True(如果iterable为空,则返回False)。iterable=[False,False]print("any:",any(iterable))iterable[1]=Trueprint("any:",any(iterable))#output#any:False#any:Trueiter()iter()返回一个迭代器对象。x=iter(["苹果","香蕉","樱桃"])print("iter",next(x))print("iter",next(x))print("iter",next(x))#Output#iterapple#iterbanana#itercherrynext()next()函数返回下一个可迭代对象,例子见上。filter()filter()函数通过一个函数过滤“数据结构”。ages=[5,16,19,22,26,39,45]defmyFunc(x):如果x<22:返回Falseelse:returnTrueadults=filter(myFunc,ages)print("filter:",adults)forxinadults:print("filter:",x)#output#filter:#filter:22#filter:26#filter:39#filter:45map()map()每个函数执行指定函数的可迭代对象。defmyfunc(a,b):返回a+bres=map(myfunc,('apple','banana','cherry'),('orange','lemon','pineapple'))foriin(res):print("map:",i,end="")#output#map:appleorangemap:bananalemonmap:cherrypineapplemax:Stevemap()函数容易和其他语言的数据结构map混淆,keepin注意“地图”是一个字典。len()len()函数返回数据结构中元素的数量。当对象是字符串时,len()函数返回字符串中的字符数。print("len:",len("abc"))#Output#len:3数学运算abs()abs()用于“求绝对值”。print("abs:",abs(-1))#output#abs:1sum()sum()用于“求和运算”。a=(1,2,3,4,5)x=sum(a)此外,还可以提供第二个参数(b):sum(a,b)==sum(a)+bpow()pow(x,y)函数表示取幂:$x^y$print("pow:",pow(5,3))#output#pow:125如果提供第三个参数,它将返回x的次方y,取余数z。print("pow:",pow(5,3,4))#Output#pow:1max()max()用于“取最大值”。print("max:",max(2,3,1))#Output#max:3如果值为字符串,则按字母顺序比较。print("max:",max("Bill","Steve","Elon"))#Output#max:Stevemin()min()用于“取最小值”,与最大限度()。divmod()divmod()函数用于除法,返回商和余数,divmod(a,b)==a除以b。print("divmod:",divmod(5,2))#Output#divmod:(2,1)complex()complex()函数通过指定一个实数和一个虚数来创建一个“复数”。print("复数:",复数(7,8))print("复数:",复数('7+8j'))#输出#复数:(7+8j)#复数:(7+8j)round()round()用于指定“小数位”并进行四舍五入。默认舍入为“整数”,表示小数点后0位。print("round",round(3.1415926,2))#Output#round3.14Debugbreakpoint()breakpoint()是一个调试工具,提供三个命令:命令'p':输出一个对象的值。命令'n':转到下一行代码执行。命令'c':执行程序直到遇到下一个断点()。例如下面的例子,进入pdb调试过程后,输入'plst'打印lst的当前值,或者使用命令'n'进入下一行代码:#breakpointlst=[]foriinrange(10):lst.append(i)ifi==5:breakpoint()输入输出流print()print()函数将指定的“内容”打印到标准输出设备,内容可以是字符串或任何其他对象,该对象在打印前被转换为字符串。给出两个高级操作:intervalsymbolprint("log","param",sep="---")#output#log---paramfor循环调用print()打印一行x=range(6)forninx:print(n,end='')#Output#012345语法:print(object(s),separator=separator,end=end,file=file,flush=flush)参数描述对象(s)任何对象和任何数字。将在打印前转换为字符串。sep='_separator_'可选。如果有多个对象,指定如何分隔对象。默认值为''。end='_end_'可选。选修的。指定最后要打印的内容。默认为“\n”(换行符)。文件是可选的。具有写入方法的对象。默认为sys.stdout。冲洗是可选的。指定输出是刷新(True)还是缓冲(False)的布尔值。默认为假。open()open()函数打开一个文件并将其作为文件对象返回。语法:open(file,mode)参数描述文件file的路径或名称。mode字符串,定义你想要打开文件的模式:-“r”:读取-默认。打开文件进行读取,如果文件不存在则报错。-"a":append-打开文件进行追加,如果文件不存在则创建文件。-"w":write-打开文件进行写入,如果文件不存在则创建文件。-"x":create-创建指定文件,如果文件存在则返回错误。此外,您可以指定文件是否应以二进制或文本模式处理-"t":text-默认值。文本模式。-"b":binary-二进制模式(例如图像)。input()input()函数允许用户输入。print('Enteryourname:')x=input()print('Hello,'+x)创建set()set()函数用于创建一个“集合对象”。x=set(('apple','banana','cherry'))slice()slice()函数创建一个“切片对象”。a=("a","b","c","d","e","f","g","h")x=slice(3,5)print("切片",a[x])#Output#slice('d','e')zip()zip()函数用于创建“zip对象”。zip对象是元组的迭代器,它将迭代器的每个项目融合在一起:a=("Bill","Steve","Elon")b=("Gates","Jobs","Musk","Richard")x=zip(a,b)foriin(x):print("zip:",i)#output#zip:('Bill','Gates')#zip:('Steve','Jobs')#zip:('Elon','Musk')如果传递的迭代器的长度不同,则具有最少项数的迭代器将确定新迭代器的长度。tuple()tuple()函数用于创建“元组对象”。x=tuple(('apple','banana','cherry'))list()list()函数用于创建“列表对象”。x=list(('apple','banana','cherry'))dict()dict()函数用于“创建字典”。x=dict(name="Bill",age=63,country="USA")bytearray()bytearray返回一个bytearray,例如返回一个5字节的数组:x=bytearray(5)语法:bytearray(x,encoding,error)参数描述创建bytearray对象时使用的资源x-如果是整数,将创建指定大小的空bytearray对象。-如果是字符串,请确保指定资源的编码。编码字符串的编码错误指定了如果编码失败的处理方式。bytes()bytes()和bytearray()的区别在于bytes()返回一个不可修改的对象,而bytearray()返回一个可以修改的对象。memoryview()memoryview()函数返回指定对象的内存视图对象。这里的内容很多,后面我们会单独说。frozenset()frozenset()函数返回一个不可变的Frozenset对象(类似于set对象,但不可变)。mylist=['apple','banana','cherry']x=frozenset(mylist)#如果执行下面的语句,Python会报错。#x[1]="strawberry"sortedsorted()sorted()函数返回指定可迭代对象的排序列表:可以指定升序或降序。字符串按字母顺序排序,数字按大小排序。a=("h","b","a","c","f","d","g","e")print("已排序",已排序(a))print("已排序",sorted(a,reverse=True))#output#sorted['a','b','c','d','e','f','g','h']#sorted['h','g','f','e','d','c','b','a']sorted()无法对同时包含字符串和数值的列表进行排序.类型转换str()str()函数将指定值转换为字符串。ascii()ASCII编码,非ASCII编码的字符将以反斜杠\形式的转义字符表示。a="test"print("ascii:",ascii(a))a="a1"print("ascii:",ascii(a))#output#ascii:'\u6d4b\u8bd5'#ascii:'a1'bin()将整数转换为前缀为0b的二进制字符串。print("bin:",bin(3))#Output#bin:0b11bool()bool()函数用于将给定的参数转换为布尔类型,如果没有参数则返回False。print("bool",bool(0))print("bool",bool(1))print("bool",bool(2))#output#boolFalse#boolTrue#boolTrueoct()oct()函数将整数转换为八进制字符串。print("oct:",oct(15))#Output#oct:0o17Python中的八进制字符串以0o为前缀。ord()ord()函数返回一个数字,表示指定字符的unicode编码。print("ord:",ord("A"))#Output#ord:65chr(i)chr()函数返回代表指定unicode的字符。print(chr(78))#Output#Nfloat()float()将指定值转换为浮点数。enumerate()将元组转换为可枚举对象:enumerate()函数将数据结构转换为枚举对象,并为每个枚举对象添加一个整数索引:x=('apple','banana','cherry')y=enumerate(x)foriin(y):print("enumerate",i)#outputenumerate(0,'apple')enumerate(1,'banana')enumerate(2,'cherry')int()int()函数将指定值转换为整数。isinstance()如果指定对象具有指定类型,则isinstance()函数返回True,否则返回False。print("isinstance:",isinstance(10,int))#Output#isinstance:Truehex()hex()函数将指定的数字转换为十六进制值(以前缀0x开头)。print("hex:",hex(255))#Output#hex:0xff面向对象的vars()vars()函数返回对象的dic属性(__dict__属性是包含对象变量属性的字典).classPerson:name="Bill"age=19country="USA"print("vars:",vars(Person))#Output#vars:{'__module__':'__main__','name':'Bill','年龄':19,'国家':'美国','__dict__':<'人'对象的属性'__dict__'>,'__weakref__':<'人'对象的属性'__weakref__'>,'__doc__':None}super()super()函数返回一个表示父类的对象。使用示例:创建一个继承父类所有方法和属性的子类:__init__(self,txt):super().__init__(txt)x=Child("Hello,andwelcome!")x.printmessage()type()type()函数用户获取“对象的类型”。a=('apple','banana','cherry')b="HelloWorld"c=55print("type:",type(a))print("type:",type(b))print("type:",type(c))#output#type:#type:#type:object()object()函数返回一个空对象:x=object()这个对象不能添加新的属性或方法。这个对象是所有类的基础,它拥有所有类默认的内置属性和方法。dir()dir()函数返回指定对象的所有属性(包括内置属性)和方法,不带值。classPerson:name="Bill"age=63country="USA"print("dir:",dir(Person))#Output#dir:['__class__','__delattr__','__dict__','__dir__','__doc__','__eq__','__format__','__ge__','__getattribute__','__gt__','__hash__','__init__','__init_subclass__','__le__','__lt__','__module__','__ne__','__new__','__reduce__','__reduce_ex__','__repr__','__setattr__','__sizeof__','__str__','__subclasshook__','__weakref__','age','country','name']hash()获取指定对象的“Hash值”,如上例对Person对象进行哈希:print("hash:",hash(Person))#output#hash:344004709issubclass()issubclass()使用用于判断是不是子类。classmyAge:age=63classmyObj(myAge):name="Bill"age=myAgeprint("issubclass:",issubclass(myObj,myAge))#Output#issubclass:Truesetattr()setattr()函数用来设置“属性的值”。classPerson:name="John"age=36country="Norway"setattr(Person,'age',40)print("setattr:",Person.age)#输出#setattr:40getattr()getattr()函数从指定对象获取“属性”的值。classPerson:name="Bill"age=63country="USA"print("getattr:",getattr(Person,'age'))print("getattr:",getattr(Person,'page','mymessage'))#Output#getattr:63#getattr:mymessagehasattr()如果指定对象有指定属性,hasattr()函数返回True,否则返回false.classPerson:name="Bill"age=63country="USA"print("hasattr:",hasattr(Person,'age'))#Output#hasattr:Truecallable()如果指定的对象是可调用的,那么callable(object)函数返回True,否则返回False创建后,id为obje的内存地址ct,每次运行程序时都不一样。(除了某些具有恒定唯一ID的对象,例如-5到256之间的整数)。x=('apple','banana','cherry')print("id:",id(x))#Output#id:4308973376编译执行不常用,理解即可。eval()eval()函数计算指定的表达式,如果表达式是有效的Python语句,它将被执行。eval('print(78)')#Output#78Syntax:eval(expression,globals,locals)参数描述表达式字符串,它将作为Python代码进行评估。globals可选。包含全局参数的字典。当地人是可选的。包含局部参数的字典。exec()exec()函数执行指定的Python代码。exec()函数接受大块代码,这与仅接受单个表达式的eval()函数不同。exec('name="Bill"\nprint(name)')#Output#Bill语法类似于eval(expression,globals,locals)compile()compile()函数返回指定的source作为代码对象,准备执行。x=compile('print(78)','test','eval')exec(x)#Output#78语法:compile(source,filename,mode,flag,dont_inherit,optimize)需要参数描述源。要编译的资源,可以是字符串、字节或AST对象。文件名是必需的。源文件的名称。如果源不是来自文件,你可以写任何东西。模式是必需的。合法值:-eval:如果source是单个表达式-exec:如果source是语句块-single:如果source是单个交互式语句标志可选。如何编译源码。默认为0。dont-inherit可选。如何编译源码。默认为假。优化可选。定义编译器的优化级别。默认为-1。globals()globals()函数将全局符号表作为字典返回。符号表包含有关当前程序的必要信息。x=globals()print("globals:",x["__file__"])#输出#globals:/Users/xxx/code/python-demo/basic/built_in.py