(05)函数
2016-02-18 10:30
369 查看
-----------
更新时间:
17:34 2016-03-03 星期四
-----------
文件头通用写法
#!/usr/bin/python
#conding:utf8
■ 函数定义
● 定义 def 函数名(参数列表) 如 def fun(x,y..) 取的名字不要保留关键字冲突
● 调用 函数 fun(1,2) 函数定义了,要调用才会执行里面的代码
■ 函数参数
● 形参 在定义函数时,后面的参数列表,为形参 def fun(x,y..) x,y 这些为形参
● 实参 在调用函数时,后面的参数列表,为实参 fun(1,2) 1,2 这些为实参
● 给定实参时,数目要和形式的数目一致,传什么类型没有规定
● 默认参数,在形参时指定,必须是从右开始指定,否则就要调整参数列表的顺序
def machine(x=3,y) 不合法 def machine(x,y='合法')
■ 函数相关变量的作用域
● 局部变量 ,在函数定义的变量为局部变量,只能供给函数本身使用,外部不可见
● 全局变量, 除了在函数里定义的变量外,都是全局变量,可以供后面的代码段和函数使用
● 函数内声明为全局变量 用关键词 global ,声明后,后面的代码段都可以使用
■ 函数返回值
● 没有 return时,默认返回为None
● 函数返回值 ,是通retrun 返回语句
● 函数可以返回任何类型的值 ,数值、字符串,列表,....
● 函数调用retrun, 函数就会相应的结束,retrun 后面的代码不执行
■ 函数的其它应用
● 多类型传值
◆ 向函数传列表、元组、字典
保证好形参和实参数目的一致,传一个列表,元组,字典都是一个整体,相当于一个实参,
元组做为实参,给函数,要告诉是元组 在元组变量前面加 “*” 如 fun(*t)
字典做为实参,给函数,要告诉是字典 在字典变量前面加 “**”如 fun(**d) 形参和字典的键要一 一对应
若没有对应,就要分别取字典的键对应的值
● 处理多余的参数
在定义形参数时,后台定义一个可接收的元组 如 def fun(x,*args) 这样就可以传多个值 fun(8,3,3,4)
在定义形参数时,后台定义一个可接收的元组 和 字典 如 def fun(x,*args,**kwargs) 这样就可以传多个值 fun(8,3,name=toby)
■ lambda表达式 (构建的是一个对象)
● 匿名函数 (主要用在,执行脚本、一次函数、只有一行的函数)
g=lambda x,y:x*y 定义:定义了x,y变量,做了一件 x*y
g(2,3) 调用
阶乘 lambda 简化代码
l=rang(1,6)
reduce(lambda x,y:x*y,l) reduce是取列表中每两个值作用于前面的函数
■ 内置函数
● python 自己有许多内置函数,尽量使用,性能较高,不要自己发明轮子,自己定义,可以帮助文档查看
命令行可以用 help(命令) 查用法
● 常用函数列举: abs()-绝对值 max()-最大值 min()-最小值
len()-长度 divmod()-除法结果(商和模) pow()-幂运算 round()-返回浮点数
callable()-判断前面有没有定义过某过函数 isinstance()-判断对象的类型 cmp() 比较两个字符串
rang()-用来快速形成一个序列 xrang()- 效率会比 rang()高 type()-得到变量的类型
int() long() float() complex() str() list() truple() hex() oct() chr() ord() -类型转换
● 字符串函数:str.capitalize() str.replace() str.split() filter() zip() map() reduce()... 帮肋文档查看
* 文件入口
if __name__=="__main__":
* 递归
>>> def newsum(mylist):
... if not mylist:
... return 0
... else:
... return mylist[0]+newsum(mylist[1:])
...
>>>
>>> newsum(range(1,6))
Out[5]: 15
>>> newsum(range(1,101))
Out[6]: 5050
* 函数是对象
这样也可以多个引用
>>> sec_newsum=newsum
>>> sec_newsum(range(1,101))
Out[8]: 5050
相当于多加一个指针引用
更新时间:
17:34 2016-03-03 星期四
-----------
文件头通用写法
#!/usr/bin/python
#conding:utf8
■ 函数定义
● 定义 def 函数名(参数列表) 如 def fun(x,y..) 取的名字不要保留关键字冲突
● 调用 函数 fun(1,2) 函数定义了,要调用才会执行里面的代码
■ 函数参数
● 形参 在定义函数时,后面的参数列表,为形参 def fun(x,y..) x,y 这些为形参
● 实参 在调用函数时,后面的参数列表,为实参 fun(1,2) 1,2 这些为实参
● 给定实参时,数目要和形式的数目一致,传什么类型没有规定
● 默认参数,在形参时指定,必须是从右开始指定,否则就要调整参数列表的顺序
def machine(x=3,y) 不合法 def machine(x,y='合法')
■ 函数相关变量的作用域
● 局部变量 ,在函数定义的变量为局部变量,只能供给函数本身使用,外部不可见
● 全局变量, 除了在函数里定义的变量外,都是全局变量,可以供后面的代码段和函数使用
● 函数内声明为全局变量 用关键词 global ,声明后,后面的代码段都可以使用
■ 函数返回值
● 没有 return时,默认返回为None
● 函数返回值 ,是通retrun 返回语句
● 函数可以返回任何类型的值 ,数值、字符串,列表,....
● 函数调用retrun, 函数就会相应的结束,retrun 后面的代码不执行
■ 函数的其它应用
● 多类型传值
◆ 向函数传列表、元组、字典
保证好形参和实参数目的一致,传一个列表,元组,字典都是一个整体,相当于一个实参,
元组做为实参,给函数,要告诉是元组 在元组变量前面加 “*” 如 fun(*t)
字典做为实参,给函数,要告诉是字典 在字典变量前面加 “**”如 fun(**d) 形参和字典的键要一 一对应
若没有对应,就要分别取字典的键对应的值
● 处理多余的参数
在定义形参数时,后台定义一个可接收的元组 如 def fun(x,*args) 这样就可以传多个值 fun(8,3,3,4)
在定义形参数时,后台定义一个可接收的元组 和 字典 如 def fun(x,*args,**kwargs) 这样就可以传多个值 fun(8,3,name=toby)
■ lambda表达式 (构建的是一个对象)
● 匿名函数 (主要用在,执行脚本、一次函数、只有一行的函数)
g=lambda x,y:x*y 定义:定义了x,y变量,做了一件 x*y
g(2,3) 调用
阶乘 lambda 简化代码
l=rang(1,6)
reduce(lambda x,y:x*y,l) reduce是取列表中每两个值作用于前面的函数
■ 内置函数
● python 自己有许多内置函数,尽量使用,性能较高,不要自己发明轮子,自己定义,可以帮助文档查看
命令行可以用 help(命令) 查用法
● 常用函数列举: abs()-绝对值 max()-最大值 min()-最小值
len()-长度 divmod()-除法结果(商和模) pow()-幂运算 round()-返回浮点数
callable()-判断前面有没有定义过某过函数 isinstance()-判断对象的类型 cmp() 比较两个字符串
rang()-用来快速形成一个序列 xrang()- 效率会比 rang()高 type()-得到变量的类型
int() long() float() complex() str() list() truple() hex() oct() chr() ord() -类型转换
● 字符串函数:str.capitalize() str.replace() str.split() filter() zip() map() reduce()... 帮肋文档查看
* 文件入口
if __name__=="__main__":
* 递归
>>> def newsum(mylist):
... if not mylist:
... return 0
... else:
... return mylist[0]+newsum(mylist[1:])
...
>>>
>>> newsum(range(1,6))
Out[5]: 15
>>> newsum(range(1,101))
Out[6]: 5050
* 函数是对象
这样也可以多个引用
>>> sec_newsum=newsum
>>> sec_newsum(range(1,101))
Out[8]: 5050
相当于多加一个指针引用
相关文章推荐
- 域名劫持
- Mongodb嵌套文档的修改-利用数组修改器更新数据
- 自己动手丰衣足食之轮播图一动态修改marginTop属性实现轮播图
- DPtoLP和LPtoDP && ScreenToClient和ClientToScreen
- iOS中本地化字符串
- python装饰器与递归算法详解
- 网络常识之IP和地址分类
- 工业相机镜头的参数与选型
- Android系统移植(六)
- 以后可以看的资源02
- sitemesh定义多个装饰器
- (04)流程控制
- Red配置文件
- Mac环境下svn的使用
- 关于ubuntu开机无法进入桌面的解决办法
- eclipse中新建maven项目
- 第二天,第二道经典面试题 Java版本,可运行
- (转帖)C++ 对象的内存布局----主要看virtual 继承的解释
- eclipse下查看maven下载的源码中文乱码问题
- JavaScript 格式化日期,转换时间日期格式