python系列之 - 函数

来源:互联网 发布:知无涯者怎么解释 编辑:程序博客网 时间:2024/05/21 13:56

函数,就是将具有一定功能的代码块放在一起,并起一个名称,在需要使用此功能模块的时候直接调用该名称即可.通过使用函数可以减少代码的重复使用率,并增加代码的可维护性、可看性。python函数python的函数主要包括两大部分: 内置函数、自定义函数

1.定义函数

函数定义

def 函数名(args参数):        函数体

 函数定义中的args参数表示形参,实际调用时传入的参数为实参。

动态参数

函数的参数可以是指定个数的参数,也可以是动态的参数。
def func(*args,**kwargs):    print(args)    print(kwargs)func(11,22,33,name='super',age=22)
如上,在定义函数的时候,在形参前面加上一个 星号(*),此参数即可接收变长的实参。函数将自动的将多个实参转换为元组。对于key=value形式的实参将自动作为字典类型保存到形参kwargs中。
(11, 22, 33){'age': 22, 'name': 'super'}
当然我们也可以直接传递列表或字典,
def func(para,*args,**kwargs):    print(para)    print(args)    print(kwargs)li = [11,22,33]dic ={'k1':'aaa','k2':'bbb'}func('a',*li,**dic)
在传递列表或元组的参数时,必须对传递的实参也加上星号(*),对于字典的实参加上两个星号(**),
a(11, 22, 33){'k2': 'bbb', 'k1': 'aaa'}

2.内置函数

python内部提供了很多供我们使用的函数,常用函数如下:

abs(x)

返回数字的绝对值,参数可以是整数、也可以是浮点数。如果是复数,则返回它的大小

all(iterable)

对参数中的所有元素进行迭代,如果所有的元素都是True,则返回True,函数等价于
def any(iterable):    for element in iterable:        if element:            return True    return False

any(iterable)

对参数中的所有元素进行迭代判断,只要一个元素为真,函数返回True。函数等价于
def any(iterable):    for element in iterable:        if element:            return True    return False

assert

断言, 该函数属于一个单元运算的表达式。类似于lambda。但功能与 if...not类似。如果你能确定你的表达式一定为真可以使用。如果表达式为假则返回一个 AssertionError 错误
程序立即中断
a = 1assert a >= 1, "Error value"print("OK")结果:OK
a = 1assert a >= 2, "错啦!"print("OK")结果:AssertionError: 错啦!     print()函数不会执行

bin(x)

将一个十进制数转换为一个二进制字符串.

bool([x])

对列表[x]中的所有值进行bool判断,当列表中所有的元素都为True时则返回True,否则返回False,能返回False的值类型有:‘’,None,0,(),[],{}。与all()函数类似

print(bool(['a',1,2.4]))  # Trueprint(bool(None))  # Falseprint(bool(()))  # Falseprint(bool([]))  # Falseprint(bool({}))  # Falseprint(bool(''))  # Falseprint(bool(0))   # False

callable(object)

检查对象object是否可调用,可以被调用返回True,否则返回False:1、函数、类是可以被调用的;2、实例是不可以被调用的,除非类中声明了__call__方法
def func1():    print('a')a = '123'print(callable(a))  # Falseprint(callable(func1))  # True

divmod(x,y)

返回x/y的商和余数,结果为元组类型
print(divmod(5,3))  # (1, 2)

ord(c)

返回字符c的ASCII码,x为字符,返回数字型
print(ord('a'))  # 97

chr(x)

返回ASCII码x对应的字符, x 为整型,返回字符
print(chr(97))   # 'a'

classmethod(function)

在定义的类中为函数返回一个类方法,主要功能:1、注解,用来说明这个方式是个类方法;2、类方法即可被类调用,也可以被实例调用;3、类方法类似于Java中的static方法;4、类方法中不需要有self参数

 enumerate(iterable, start=0)

 返回一个可枚举的对象。该对象的next()方法将返回一个tuple.start为开始的序号默认从0开始。或者也可以通过list 或 tuple来转换

print(list(enumerate(('aa','bb','cc'),start=2)))

等价于

def enumerate(sequence, start=0):    n = start    for elem in sequence:        yield n, elem        n += 1

eval(expression)

计算表达式expression的值

lambda

lambda并不是python的内置函数,而是一个函数表达式
f_lam = lambda x: x * 2print(f_lam(10))  # 20

map(function, iterable, ...)

将传入的列表中的每个值进行一次函数运算,python3.x中返回的为 <map object at 0x006AFA30>对象,要获取值需要用list 或 tuple转换
li = (1, 2, 3, 4)f_map = map(lambda x: x + 3, li)print(f_map)          # python2.x结果[4, 5, 6, 7]print(list(f_map))    # python3.x结果[4, 5, 6, 7]

max(iterable, *[, key, default])

对一个列表或元素的数据进行迭代,返回最大值.可以通过制定函数来判断
def func(i):    t = divmod(i,3)    return t[1]li = (1,5,3,2,9,19,24)print(max(li))             # 24print(max(li,key=func))    # 5 对li中的数据进行取模后的最大值

max(iterable, *[, key, default])

与max()类似,取最小值

sorted(iterable[, key][, reverse])

对参数中的元素进行排序,默认从小到大排序。可以指定排序计算方法key=function,是否倒序排列reverse=True

def func(i):    t = divmod(i,3)    return t[1]li = (1,5,3,2,9,19,24)print(sorted(li))# [1, 2, 3, 5, 9, 19, 24]print(sorted(li,reverse=True))# [24, 19, 9, 5, 3, 2, 1]print(sorted(li,key=func))# [3, 9, 24, 1, 19, 5, 2]print(sorted(li,key=func,reverse=True))# [5, 2, 1, 19, 3, 9, 24]

filter(function, iterable)

和map的执行方式一样,对于一个迭代器iterable的元素进行function计算,将计算的结果进行过滤,符合表达式结果的才返回.在python3.x中返回的结果为<filter object at 0x021CA610>对象,要获取值需要用list 或 tuple转换。
f_filter = filter(lambda x: x > 30, map(lambda y: y * 10, li))print(f_filter)         # python2.x结果[40]print(list(f_filter))   # python3.x结果[40]

zip(*iterables)

将两个元组或列表的值进行合并成一个新的列表.
a = (1, 2, 3)y = [6,7,8]# print(zip(a, y))  # [(1, 6), (2, 7), (3, 8)]

isinstance

isinstance(obj,obj2)  返回obj对象是不是由obj2创建的,或者 obj对象是 obj2 对象的基类创建的
a = 1print(isinstance(a,int)) # Trueclass A(object):    passclass B(A):    passb = B()print(isinstance(b, B))  # Trueprint(isinstance(b, A))  # True

issubclass

issubclass(C,B)  判断类C是不是类B的子类
class A(object):    passclass B(A):    passprint(issubclass(B,A))print(issubclass(A,object))

filter

对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回:
>>> def f(x): return x % 2 != 0 and x % 3 != 0 
>>> filter(f, range(2, 25)) 
[5, 7, 11, 13, 17, 19, 23]
>>> def f(x): return x != 'a' 
>>> filter(f, "abcdef") 
'bcdef'

map

对sequence中的item依次执行function(item),见执行结果组成一个List返回:
>>> def cube(x): return x*x*x 
>>> map(cube, range(1, 11)) 
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
>>> def cube(x) : return x + x 
... 
>>> map(cube , "abcde") 
['aa', 'bb', 'cc', 'dd', 'ee']
另外map也支持多个sequence,这就要求function也支持相应数量的参数输入:
>>> def add(x, y): return x+y 
>>> map(add, range(8), range(8)) 
[0, 2, 4, 6, 8, 10, 12, 14]


reduce

对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用,例如可以用来对List求和:
>>> def add(x,y): return x + y 
>>> reduce(add, range(1, 11)) 
55 (注:1+2+3+4+5+6+7+8+9+10)
>>> reduce(add, range(1, 11), 20) 
75 (注:1+2+3+4+5+6+7+8+9+10+20)


官方文档:https://docs.python.org/3/library/functions.html

 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩子上幼儿园爱打人怎么办 小孩被别人打了怎么办 1岁幼儿爱打人怎么办 作为幼小朋友打人老师怎么办 2岁半小朋友喜欢打人怎么办 2岁宝宝脾气大怎么办 4月小孩爱动怎么办 一岁宝宝老打人怎么办 1岁宝宝爱打人怎么办 3岁宝宝喜欢抓人怎么办 宝宝喜欢打人怎么办2岁 1岁宝宝动手打人怎么办 孩子总打人总哭怎么办 小孩出现夜惊家人怎么办 小孩不原跟家人沟通怎么办 孩子字写得难看怎么办 孩子上一年级不认识字怎么办 二年级孩子语文差怎么办 孩子二年级语文成绩差怎么办 孩子小学二年级语文差怎么办 二年级孩子语文理解能力差怎么办 深圳租房被坑了怎么办 小鸣单车押金退不了怎么办 联想台式一体机忘记密码怎么办 ps直线工具变成箭头了怎么办 笔记本图形处理速度慢怎么办 微信语音发不出去怎么办 ps里的图层锁定怎么办 ps图层丢失了怎么办 PS标题画面太小怎么办 轮胎蹭掉一块皮怎么办 吃香蕉吃的胃难受怎么办 qq糖卡在喉咙里怎么办 头发上粘到了qq糖怎么办 老房子土墙掉土怎么办 速写画的太慢怎么办 艺术生文化课没过线怎么办 5岁儿童坐飞机忘带证件怎么办 儿童坐飞机没带证件怎么办 儿童坐飞机没带户口本怎么办 儿童坐飞机没有带户口本怎么办