Python函数【一】:内置函数

前言

python函数在python语言中是一等对象,是非常重要的一类对象,本部分主要记录内置到python解释器中的函数,按照类型进行记录,若函数属于多个类别,则在最相关的部分进行记录。

属性相关

对象属性的操作主要包括三种,检索(lookup)、赋值、删除。
 

  • getattr(obj, name, [default])
    返回对象obj的name属性对应的值,若name属性不存在,并且default非空,则返回default值,否则抛出AttributeError。

  • hasattr(obj, name)
    检查obj对象是否有name属性,本质是调用getattr,检查是否抛出AttributeError,若抛出则返回False,否则返回True。

  • setattr(obj, name, value)
    将obj对象的name属性值设置为value。

  • delattr(obj, name)
    删除obj对象的name属性。

  • dir([obj])
    dir函数是比较多功能性的,当不带参数调用时,返回currently local scope的names。当带参数调用时,如果参数对象包含__dir__属性,则自动调用__dir__,否则将根据参数对象的类型做出不同的输出,若参数对象为module对象,则输出模块的属性;若参数对象为类,则输出类及超类的属性名称列表;若参数对象为其他对象,则输出对象、类及超类的属性列表。注意dir函数一般以交互性方式使用,其输出的属性名称列表可能不全,但一般都会输出对象关联性非常强的属性名称。

  • vars([obj])
    不带参数时,作用与locals()相似;当提供obj参数时,返回实例、类、module对象的__dict__属性。

 

数值相关

  • abs(x)
    返回数值型x的绝对值。

  • max
    有两种形式,1)max(iterable, [key, default]),返回可迭代对象中的最大项,相当于sorted(iterable, key, reverse=True)[0],当可迭代对象为空时,并且default非空,则返回default,否则抛出ValueError,key与default必须是关键字参数。2)max(arg1, arg2, *args, key),返回最大项的位置参数。

  • min
    与max对应。

  • round(number, [ndigits])
    将number参数四舍五入到小数点后的ndigits位,如果ndigits为None,则返回离number最近的整数。

  • sum(iterable, [start])
    求和start与iterable里元素的和,start默认为0。
     

检验相关

  • all(iterable)
    当参数迭代器中的元素全部为真值True,或者迭代器为空时,返回True;否则返回False。
	def all(iterable):
		for item in iterable:
			if not item:
				return False
		return True
  • any(iterable)
    当参数包含的元素任意为真时返回真,否则返回False;相当于not all(x)。

  • callable(obj)
    若对象是可调用的,则返回True;否则返回False。

  • type
    1)以type(obj)方式调用时,返回object的类型对象,相当于调用“object.__class__”。
    2)也可以做视作类工厂函数,签名为type(name, bases, attr_dict),第一个参数为新建类的名字,第二个参数是超类组成的元组,第三个参数是新建类的属性字典。分别对应类的__name__、__bases__、__dict__属性。

  • isinstance(object, classinfo)
    输入的classinfo必须是一个type object,或者是包含type object的元组,若object是classinfo的实例或者是classinfo子类的实例,则返回True,否则返回False。

  • issubclass(class, classinfo)
    输入的classinfo必须是一个type object,或者是包含type object的元组,若class参数时classinfo的子类,则返回True,否则返回False。

  • iter
    iter函数有两种调用方式,1)iter(obj)方式时,obj需要包含__iter__或者__getitem__属性中的任意一种,结果将会生成一个迭代器。2)iter(obj, [sentinel])方式,此时obj必须是一个可调用对象,每次调用迭代器的__next__时,都会不带参数的调用可迭代对象,若迭代对象返回sentinel值,则抛出StopIteration,否则继续。
     

迭代相关

  • enumerate(iterable, start=0)
    返回一个enumerate 对象,该对象是个迭代器,迭代器中的元素为idx与可迭代对象元素 组成的元组,idx默认从0开始。

  • next(iterator, sentinel)
    调用迭代器内部的__next__方法返回迭代器的内部元素,若sentinel不为空,当迭代器耗尽时,将返回sentinel的值,否则抛出StopIteration。

  • zip(*iterables)
    输入为一个或者多个可迭代对象,输出为迭代器,迭代器中的元素是一个元组,元组由输入的可迭代对象中的元素组成。当多个可迭代对象的长度不同时,以最短的可迭代对象的长度为标准,最短那个可迭代对象中的元素用完后,就不在生成新的元组元素。如果需要以最长的元素为标准,可调用itertools.zip_longst()。

	def zip(*iterables):
		iters = [iter(item) for item in iterables]
		sentinel = object()
		while iters:
			res = []
			for it in iters:
				temp = next(it, sentinel)
				if temp is sentinel:
					return
				res.append(temp)  # 保证输入参数内部元素的顺序
			yield tuple(res) 
  • sorted(iterable, *, key=None, reverse=False)
    返回一个排序后的列表, key与reverse指定的话,必须以关键字参数的形式指定,因为其前面有星号通配符收集位置参数。key关键值提供的参数必须是一个函数,且该函数只能包含一个参数,该函数处理可迭代对象中的每个元素,根据函数返回值进行排序,默认值为None,即根据可迭代对象的内在元素进行排序,reverse表示是否逆序排序。

  • map(function, *iterable)
    返回一个迭代器,迭代器中的元素是function参数返回的结果,function参数为一个函数,其输入为可迭代对象中的元素,若可迭代对象只有一个,则function参数中的函数只能接受一个参数,若可迭代对象为多个,则function参数的函数需要同时接受多个参数,其中map迭代器中的元素数量以最短的可迭代对象参数的数量为准。

	def map(function, *iterables):
		iters = [iter(item) for item in iterables]
		sentinel = object()
		while iters:
			res = []
			for it in iters:
				temp = next(it, sentinel)
				if temp is sentinel:
					return 
				res.append(temp)
			yield function(*tuple(res))
  • filter(function, iterable)
    返回一个迭代器,逻辑为(item for item in iterable if function(item)),当function为空时,相当于lambda x:x。

 

字符串相关

  • input([prompt])
    以交互式方式获取用户的输入,参数为提示语,会捕获用户的标准输入并转换为字符串返回。

  • ord©
    输入一个字符,返回unicode编码表中参数字符对应的整数。

  • chr(i)
    输入一个整数,返回unicode编码表中参数i对应的字符。

  • hex(x)
    输入参数为整数型数值,函数会将参数转换成带‘0x’的小写的16进制表示的字符串。如果x对象不是整数型,需要包含__index__属性,调用__index__需返回一个整数。

  • oct(x)
    输入参数为整数型数值,函数会将参数转换成带‘0o’的小写的8进制表示的字符串。如果x对象不是整数型,需要包含__index__属性,调用__index__需返回一个整数。

-bin(x)
输入参数为整数型数值,函数会将参数转换成带‘0b’的小写的2进制表示的字符串。如果x对象不是整数型,需要包含__index__属性,调用__index__需返回一个整数。

 

其它

  • locals()
    返回current local symbol table的字典,当在函数体内调用locals时,还会返回自由变量,但在类定义体内调用不会返回自由变量;当在module层面调用locals,与globals结果一致。

  • globals()
    返回 current global symbol table的字典,总是包含module层面的信息,当在函数体内调用时,返回的是定义module的信息,而不是调用module的信息。

  • hash(obj)
    返回obj对象的hash值,若obj是数值型,若数值相等,则返回的hash值是一样的,尽管类型可能不一致。也可以自定义__hash__方法,改变默认行为。

  • open(file, mode=‘r’, buffering=-1, encoding=None, errors=None,newline=None, closefd=True, opener=None)

    • 对于mode参数,指明打开文件对象的模式,有rwatb,分别表示只读、重新写、附加、文本模式、二进制模式,默认以只读文本模式打开。
    • encoding参数指明编码或者解码方式,主要用于文本模式的打开方式。当以二进制打开时,文件内的bytes直接输出,而以文本模式打开时,文件内的bytes首选需要解码成str,然后再输出。
    • 其它参数用默认配置就OK。
  • super()
    super本质是一个类, 并且实现了描述符协议。其核心功能是调用父类的方法。下列的模拟代码解释了super类的主要功能。

	def super(cls, instance):
	""" 
		- cls代表类, inst代表实例
		- 对于python中定义的每一个类,Python 会计算出一个方法解析顺序(Method Resolution Order, MRO)列表,它代表了类继承的顺序,计算方式就是类.mro()
		- super函数的本质就是先计算`inst`的mro,然后根据`cls`的索引位置返回列表中idx+1位置的**类**
		- super的实现
	"""
		mro = instance.__class__.mro()
		return mro[mro.index(cls) + 1]
  • id(object)
    cpython中,返回obj在内存中的地址。

  • len(object)
    返回obj包含的元素的数量,输入只能是 sequence 或者 collection

  • print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
    sep指定了多输入之间的分割方式, end指定了打印结束后换行,sep与end的值必须为字符串;objects收集任意多个位置参数,因此sep、end、file、flush必须以关键字参数的形式提供;所有位置参数都会进行str()转换。file参数自定文件对象,用于写入信息,由于所有位置参数都转换为字符串,因此文件对象不能以二进制方式打开,并且必须包含write方法。

  • repr(obj)
    返回字符串表示的对象,可在obj对象对应的类中自定义__repr__属性,控制repr调用obj的返回字符串。
     

参考资料

1. super函数的使用

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值