基础知识回顾——函数
2017-01-14 12:52
465 查看
函数是一个可重用的代码块,用来实现特定的功能。
认识函数
1.定义函数
函数代码块以 def 关键词开头,后接函数名,函数名不能以数字开头;
函数的参数是对函数的输入,参数可以有多个,也可以完全没有(但括号要保留);
函数体内容以冒号开始,并且缩进;
return [表达式]返回函数结果,可以没有返回结果即None,也可以返回多个函数结果;
当程序执行到return的时候,程序将停止执行函数内余下的语句。return并不是必须的,当没有return, 或者return后面没有返回值时,函数将自动返回None。
2.调用函数通过函数名和传入参数,实现函数的调用。
3.函数传参
在包裹传参中,定义func函数的参数表分别用元组name和字典name收集;相应的如果在函数调用是用*name或者**name传参,则被称为“解包裹”的过程。
函数式编程
python在应对函数式编程有一些比较有用的函数:map、filter、reduce和lambda函数,其中map函数和filter函数可以被列表推导式代替。
1.map(function,iterable,....)函数的第一个参数是函数对象,第二个参数是列表(或元组字典等),map的作用就是将函数对象依次作用于表的每一个元素,然后返回列表。
2.filter(function or None,seq)函数可以基于一个返回布尔值的函数对元素进行过滤,对序列参数seq(列表、元组或是字符串)中的每个元素调用function函数,最后返回调用结果为True的元素
3.reduce(function,seq)函数只能接收两个参数,先将序列的前两个元素与function联合使用,然后将返回值与序列的第三个元素继续联合使用,直到整个序列处理完
4.lambda[arg1[arg2,arg3...]:expression,lambda匿名函数中,冒号前是参数,冒号后是表达式
5.交换变量,类似于三目操作符
认识函数
1.定义函数
函数代码块以 def 关键词开头,后接函数名,函数名不能以数字开头;
函数的参数是对函数的输入,参数可以有多个,也可以完全没有(但括号要保留);
函数体内容以冒号开始,并且缩进;
return [表达式]返回函数结果,可以没有返回结果即None,也可以返回多个函数结果;
1 def rectangle(a,b): 2 c = (a + b)*2 3 return c
当程序执行到return的时候,程序将停止执行函数内余下的语句。return并不是必须的,当没有return, 或者return后面没有返回值时,函数将自动返回None。
2.调用函数通过函数名和传入参数,实现函数的调用。
1 print retangle(3,4) #(3,4)即对应位置参数(a,b)
3.函数传参
1)位置传参 def add(a,b): return a + b print add(3,4) 2)引用传参 def add(a,b): return a + b x,y = 3,4 print add(x,y) 3)关键字传参 def add(a,b): return a + b print add(a = 3,b = 4) 4)默认传参 def f(a,b=10): return a+b print add(a = 3,b) 5)包裹传参(包裹传递定义函数时,在相应元组或字典前加*或**) >>> def func(*name): print type(name) print name >>> func(1,4,6) <type 'tuple'> (1, 4, 6)
>>> def func(**name): print type(name) print name >>> func(a=1,b=9) <type 'dict'> {'a': 1, 'b': 9}
在包裹传参中,定义func函数的参数表分别用元组name和字典name收集;相应的如果在函数调用是用*name或者**name传参,则被称为“解包裹”的过程。
位置参数解包 >>> def func(a,b,c): print a,b,c >>> name = (1,3,4) >>> s = func(*name) 1 3 4 关键字参数解包 >>> def func(a,b,c): print a,b,c >>> name = {'a':1,'b':2,'c':3} >>> s2 = func(**name) 1 2 3
函数式编程
python在应对函数式编程有一些比较有用的函数:map、filter、reduce和lambda函数,其中map函数和filter函数可以被列表推导式代替。
1.map(function,iterable,....)函数的第一个参数是函数对象,第二个参数是列表(或元组字典等),map的作用就是将函数对象依次作用于表的每一个元素,然后返回列表。
1 >>> def double(x): 2 return x*2 3 4 >>> list1 = [11,22,33] 5 >>> map(double,list1) #函数可以分配给变量,作为参数传递以及从其他函数返回 6 [22, 44, 66] 7 8 >>> tuple1 = (11,22,33) 9 >>> map(double,tuple1) 10 [22, 44, 66] 11 12 >>> dic1 = {'s':'shenzhen','w':'wuhan'} 13 >>> map(double,dic1) 14 ['ss', 'ww'] 15 16 #多个可迭代参数,则每次从多个表中取出一个元素应用函数对象 17 >>> def abc(a,b,c): 18 return a*100+b*10+c 19 20 >>> list1 = [1,2,3] 21 >>> list2 = [4,5,6] 22 >>> list3 = [7,8,9] 23 >>> map(abc,list1,list2,list3) 24 [147, 258, 369] 25 26 #若函数给出的是'None',则默认'identity'函数 27 >>> list1 = [11,22,33] 28 >>> list2 = [44,55,66] 29 >>> map(None,list1,list2) 30 [(11, 44), (22, 55), (33, 66)]
2.filter(function or None,seq)函数可以基于一个返回布尔值的函数对元素进行过滤,对序列参数seq(列表、元组或是字符串)中的每个元素调用function函数,最后返回调用结果为True的元素
1 >>> def func(x): 2 return x.isalnum() #返回含字母或数字的元素 3 4 >>> seq = ["apple","nana1","?!","&c"] 5 >>> filter(func,seq) 6 ['apple', 'nana1'] 7 8 >>> seq2 = ['sf','se3','4h'] 9 >>> filter(None,seq2) 10 ['sf', 'se3', '4h']
3.reduce(function,seq)函数只能接收两个参数,先将序列的前两个元素与function联合使用,然后将返回值与序列的第三个元素继续联合使用,直到整个序列处理完
1 >>> def add(x,y): 2 return x+y 3 4 >>> num = [12,432,79,20] 5 >>> reduce(add,num) 6 543
4.lambda[arg1[arg2,arg3...]:expression,lambda匿名函数中,冒号前是参数,冒号后是表达式
1 #无参数 2 >>> bar = lambda:'echo' 3 >>> print bar() 4 echo 5 6 #有参数 7 >>> def double(x): 8 return x*2 9 等价于 double = lambda x:x*2 10 11 >>> def abc(a,b,c): 12 return a*100+b*10+c 13 等价于 abc = lambda a,b,c:a*100+b*10+c 14 15 >>> def func(x): 16 return x.isalnum() 17 等价于 func = lambda x:x.isalnum
5.交换变量,类似于三目操作符
1 >>> def dem1(): 2 return True if 1 == 1 else False 3 >>> dem1() 4 True 5 6 >>> def dem2(): 7 return True if 1 == 2 else False 8 >>> dem2() 9 False
相关文章推荐
- java基础知识回顾之java Thread类学习(六)--java多线程同步函数用的锁
- C++类与函数基础知识回顾
- asp.net 基础知识回顾1-response对象的write和redirect方法
- sqlserver基础知识 回顾 (一) 视图的优点和各种限制
- 关于回调函数和钩子函数基础知识的整理
- Java基础知识回顾-2
- 基础知识-通过引用来传递函数参数(直接访问函数参数)
- 《C++捷径教程》读书笔记--Chapter 7--函数,第一部分:基础知识(第一部分)
- pp相关基础知识回顾
- C/C++基础知识:数组类型、函数类型到左值和右值的转换
- 大学时的基础知识,回顾一下
- Linux基础学习系列:对于fork()函数的学习,及进程创建相关知识
- php基础知识:函数基础知识
- 测试回顾版-AIX尝鲜-基础知识-感觉和linux真没什么区别
- Win32基础知识----------CreateWindow 函数
- JavaScript Distilled 基础知识与函数
- 基础知识回顾,I18N是什么,什么是国际化......?
- php基础知识:函数基础知识
- C++基础知识(三)——函数
- C/C++基础知识:函数指针和指针函数的基本概念