Python学习5-函数
来源:互联网 发布:王者荣耀助手网络错误 编辑:程序博客网 时间:2024/06/13 08:41
转自廖雪峰的博客
内置函数:
使用 help(**) 可以查看函数**的帮助信息
网址:Python内置函数
定义函数:
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号,最后,在缩进块中编写函数体,函数的返回值用return语句返回。如下面所示:
def my_abs(x):
if x >= 0:
return x
else:
return -x
注意:
(1)使用pass可以定义空函数,便于搭建整体代码构架;
(2)函数中有时需要检查参数类型,使用语句:
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
(3)函数可以返回多个值,本质上是返回一个tuple,按照对应位置赋值。
函数的参数:
函数使用默认参数。当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。必选参数在前,默认参数在后面。
默认参数必须指向不变对象。
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
可以把函数的参数设置为可变参数:
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
对于已有的list或tuple,要调用可变参数的函数,可以采用如下方式:
nums = [1, 2, 3]
calc(*nums)
关键字参数:
关键字参数允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
def person(name, age, **kw):
print 'name:', name, 'age:', age, 'other:', kw
person('Adam', 45, gender='M', job='Engineer')
对于已有的dict,可以采用如下方式调用关键字参数:
kw = {'city': 'Beijing', 'job': 'Engineer'}
person('Jack', 24, **kw)
参数组合:
在Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,可以一起使用,或者只用其中某些.但参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。
def func(a, b, c=0, *args, **kw):
print 'a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw
func(1, 2, 3, 'a', 'b', x=99)
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 99}
递归函数:
如果一个函数在内部调用其自身,这个函数就是递归函数。递归函数的优点是定义简单,逻辑清晰。但递归存在栈溢出的问题。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。
一个计算n!的递归函数:
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
- Python学习5-函数
- Python学习笔记5(函数)
- Python学习笔记:Python函数
- Python学习笔记5:函数参数详解
- [python]学习笔记5-函数参数类型
- <5>python学习笔记——函数
- Python学习笔记 5--集合、函数
- python学习--函数使用
- Python学习--自定义函数
- python 学习笔记 -- 函数
- python学习~递归函数
- Python学习笔记--函数
- Python学习之函数
- python 函数学习
- python学习之函数
- python学习-函数
- python学习-匿名函数
- python学习-偏函数
- js原型链
- Hello World
- Android开发 利用imageview显示选取的手机内存的图片
- 学生信息的添加与查询
- PHP如何接受上传的图片并保存到本地
- Python学习5-函数
- java多线程1-多线程创建与线程同步
- SQL SERVER 2008的错误日志太大
- HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 多重背包 简单代码
- c/c++整理--字符串(4)
- shell脚本 变量
- 高通camera驱动分析
- 5.Unity3D商业游戏源码研究-变身吧主公-TestSeneceMgr
- 2133: 密室逃脱