• python函数一些高级话题


    1、函数对象
    	属性和注解
    	函数也是一种对象,所以可以给一个函数对象添加属性
    	例如:
    	def f(a):print(a)
    	f.count = 1
    	print(f.count)  #输出1
    	
    	函数注解:在python3.0中(但不包括python2.6),也可以使用对函数对象附加注解信息——与函数的参数和结果相关的任意的用户定义的数据。python为声明注解提供了特殊的语法,但是他自身不做任何事情,注解完全是可选的,并且出现的时候只是直接附加到函数对象的__annotations__属性以供其他用户使用
    	注解语法:函数的注解编写在df头部行,就像与参数和返回值相关的任意表达式一样。对于参数,他们出现在紧随参数名之后的冒号之后;对于返回值,他们编写紧跟参数列表之后的一个->之后。
    	例如:
    	def func(a:'spam',b:(1,10),c:float)->int:
    		return a+b+c
    	调用注解的:func.__annotations__
    	使用了注解后,也可以加加上默认值:
    	def func(a:'spam'=1,b:(1,10)=2,c:float=3)->int:
    		return a+b+c
    	
    	注解只在def定义函数用有效,在lambda函数中无效
    2、匿名函数 lambda
    	lambda语法:
    	lambda argument1,argument2,argument3,...argumentN:expression using arguments
    	lambda是一个表达式,而不是一个语句。可以出现在一个列表常量或者函数调用的参数中
    	lambda的主体是一个单一的表达式,而不是一个代码块。
    3、map  返回迭代器
    	map(函数,参数列表)  #其中函数需要几个参数,后面就有几个参数列表
    	print(list(map(pow,[1,2,3],[1,2,3])))  #输出:1,4,27
    4、filter  返回迭代器
    	filter(返回值为bool值的函数,参数列表) ,只能有一个参数,所有后面只能有一个参数列表,只返回函数结果为真时的数字
    	print(list(filter((lambda x:x>0),range(-5,5))))   #输出:1,2,3,4
    5、reduce 返回单个结果
    	在python2.6中reduce是一个内置函数,在python3.0中reduce是在模块functools中
    	from functools import reduce
    	print(reduce(lambda x,y:x+y),[1,2,3,4])  #输出:10
    	print(reduce(lambda x,y:x*y),[1,2,3,4])  #输出:24
    6、在模块operator中,提供了内置表达式对应的函数
    	import operator,functools
    	print(functools.reduce(operator.add,[2,4,6]))
    	print(functools.reduce((lambda x, y :x+y),[2,4,6]))
    

      

  • 相关阅读:
    Codeforces 525C Om Nom and Candies 枚举 + 复杂度分析
    Codeforces 526B Om Nom and Dark Park 树形dp
    Codeforces 526A King of Thieves 枚举
    Regionals 2014 Asia
    Regionals 2014 Asia
    access数据库和sqlsever数据库sql语句的布尔值boolean的写法
    取消阴影行
    引用其他单元的2种方法
    选中阴影行
    全选
  • 原文地址:https://www.cnblogs.com/hbcb533/p/3675937.html
Copyright © 2020-2023  润新知