Python中的函数

一.基本使用:

定义函数:
#定义时函数名的小括号内填写参数(型参),多个参数之间使用,分割
def 函数()
    """注释"""
    定义的内容
    ......

#如果不主动调用函数,函数不执行
函数的调用:
#调用时与定义时相同,此时的参数称为实参
函数()
例如:

 

二.参数:

参数:形参,实参
形参:位置参数,默认参数,可变参数,关键字参数
位置参数:形参和实参个数必须保持一致,可以通过(形参=实参)的形式确定对应位置的参数
例如:

默认参数:形参和实参的个数可以不一致,在实参个数少于形参时使用默认的参数值,默认形参也可以改变
例如:

可变参数:形参*args,实参个数可以为任意多
*args是可变参数,args是元组类型数据,args名字可变(因为是形参)
def 函数名(*args)

#####################################
解包:把元素的值取出来
对list,set,tuple解包,只需要在变量前加*
调用时:函数名(*变量名)
例如:

#####################################

例如:

关键字参数:形参和实参的个数可以不一致,在需要添加更多参数时指定key-value对即可
**kwargs是一个字典,可以传递任意多个key-value对
定义时:def 函数名(参数1,参数2,**kwargs):
调用时:函数名(参数1,参数2,key1=value1,key2=value2....)

例如:

 

三.函数的返回值:

返回值:函数运算的结果,还需要进一步操作时,给一个返回值
return用来返回函数执行结果,如果没有返回值,默认为None
python中可以间接返回多个值(返回了一个元组)
一旦遇到return ,函数执行结束,后面的代码不会执行
对元组解包:
a,b = 函数名()
print a,b

 

四.函数变量的作用域:

局部变量:在函数内部定义的普通变量,只在函数内部作用,函数执行结束,变量自动删除
全局变量:在函数中定义a时:global a 声明函数中的a为全局变量

例如:

 

五.列表生成式:

[返回值 for i in 序列 if ...]

例如:
1)把列表中的元素依次取出
s ='11 22 33'
k,a,b = [int(item) for item in s.split()]
相当于:
li = []
for item in s.split():
    li.append(int(item)
k,a,b = li

2)生成一个列表,列表元素分别为[1**2,2**2,3**2,...8**2]
[i **2 for i in range(1,8)]
相当于:
for i in range(1,8):
li.append(i ** 2)

 

六.字典生成式:

{返回值 for i in 序列 if ...}

例如:
1)假设有20个学生,学分在60-100之间,筛选出成绩在90分以上的学生
stuInfo = {'westos'+str(i):random.randint(60,100) for i in range(20)}
print {name:score for name,score in stuInfo.items() if score>90}

2)将字典中的key值和value值调换
d = {'a':'apple','b':'bob','c':'cat'}
print {v:k for k,v in d.items()}

 

七.函数装饰器:

装饰器就是在不改变原函数的基础上,给函数增加功能。
把一个函数当作参数,返回一个替代版的函数。本质上就是返回函数的函数。

@语法糖
def 函数

相当于:
函数 = 语法糖(函数)

有多个装饰器时,从下到上调用装饰器

例如:

 

map和匿名函数:print map(lambda x:x*x,[1,2,3,4])

 

 

展开阅读全文

没有更多推荐了,返回首页