python入门(四)--函数简要概述



函数

调用函数

Python 内置函数:官方文档链接:点击打开链接

求绝对值:

>>> abs(-54.90)
54.9
>>> abs(223)
223
>>> abs(9999999)
9999999

还可以通过变量名,引用函数:

>>> func = abs
>>> func(-1)
1


定义函数

Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

如果没有return语句,函数执行完毕后也会返回结果,只是结果为None

return None可以简写为return

例如:

>>> def cacu(x):
...     sum = 0
...     for x in range(x):
...             sum = sum + x
...     return sum
...
>>> cacu(5)

10

定义空函数可以用pass语句:

>>> def nop():
...     pass
...

返回多个值时:returnx,y

其实返回的是一个tuple对象,(x,y),括号可以省略

函数的参数

默认参数:

默认参数可以简化函数的调用。设置默认参数时,有几点要注意:

一是必选参数在前,默认参数在后,否则Python的解释器会报错(思考一下为什么默认参数不能放在必选参数前面);

二是如何设置默认参数。

当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。

如:水果店卖水果,需要输入水果类型和价格

>>> def sale(f,p):
...     print 'fruit:%s'% f
...     print 'price:%f'% p
...

调用时,只需要传入两个值:f,p:

>>> sale('apple',34.33)

fruit:apple

price:34.330000

但是如果,我还需要知道有关水果其他信息,比如水果店的位置还有店铺名称,

可以把位置s和名称name设为默认值:

>>> def sale(f,p,s='NJ',name='SN'):
...     print 'fruit:%s'% f
...     print 'price:%f'% p
...     print 'situation:%s'%s
...     print 'name:%s'% name
...

>>> sale('apple',34.22)

fruit:apple

price:34.220000

situation:NJ

name:SN

可见,默认参数降低了函数调用的难度,而一旦需要更复杂的调用时,又可以传递更多的参数来实现。无论是简单调用还是复杂调用,函数只需要定义一个。

定义默认参数要牢记一点:默认参数必须指向不变对象!

可变参数:

在参数前加上*

>>> def allgrades(*grade):
...     sum = 0
...     for g in grade:
...             sum = sum + g
...     print sum
...

>>> grade =(66,77,99,44,66)

>>> allgrades(1,2,3,4,5,6)

21

>>>allgrades(*grade)

352

关键字参数:

可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

>>> def person(name,age,**other):
...     print 'name:',name,'age:',age,other
...
>>> person ( 'Sandy', 18, city='NJ', sex='female' ,weight=50)
Name : Sandy age: 18 {'city': 'NJ', 'weight': 50, 'sex': 'female'}

参数组合:

Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。

递归函数

定义阶乘的函数:f(n)=f(n-1)*n:

>>> def f(n):
...     if n==1:
...             return n
...     else:
...             return n*f(n-1)
...

>>> f(3)

6

>>> f(4)

24

 

猜你喜欢

转载自blog.csdn.net/sj0613xz/article/details/79362271