python入门6-函数

一、函数作用
python可以自己定义函数,也有强大的函数库直接进行调用
比如说计算圆的面积:s=πrr,每个圆都这样比较繁琐,可以直接定义一个函数
area_circle(x)以后直接调用它,则会变的十分方便

二、函数调用
1.绝对值函数: abs(x)
2.比较函数: cmp(x,y),若x<y则返回-1;若x=y则返回0;若x>y则返回1
3.数据转换函数:int()函数将其他类型转换为int,如int(12.24),输出为12,int(‘123’)输出为123
str()函数将其他类型转换成str,如str(123)输出为’123’
sum函数接收一个list作为参数,并将list中所有元素求和

三、定义函数
定义函数用def语句,函数名,括号,参数,:,模块中写函数体,然后用return返回

#请定义一个 square_of_sum 函数,它接受一个list,返回list中每个元素平方的和。
def square_of_sum(L):
    sum=0
    for x in L:
        sum=sum+x*x
    return sum

print square_of_sum([1, 2, 3, 4, 5])
print square_of_sum([-5, 0, 5, 15, 25])

三、函数的多返回值
python和java不同,允许函数有多返回值,返回值类型为tuple类型
math包提供了# math包提供了sin()和 cos()函数,我们先用import引用它:

import math
def move(x, y, step, angle):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny

四、递归函数
如果一个函数在自己内部调用自己本身,这个函数便是递归函数,比如二叉树的遍历。
计算n! = 1 * 2 * 3 * … * n,用fact(n)表示
fact(n) = n! = 1 * 2 * 3 * … * (n-1) * n =fact(n-1)n
即fact(n)=n
fact(n-1)
用递归计算便是

def fact(n):
	if n=1:
		return 1
	else:
		return n*fact(n-1)

计算fact(5)的过程:
===> fact(5)
===> 5 * fact(4)
===> 5 * (4 * fact(3))
===> 5 * (4 * (3 * fact(2)))
===> 5 * (4 * (3 * (2 * fact(1))))
===> 5 * (4 * (3 * (2 * 1))) 从这里开始往回一层一层return
===> 5 * (4 * (3 * 2))
===> 5 * (4 * 6)
===> 5 * 24
===> 120
使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。

五、定义默认参数
请定义一个 greet() 函数,它包含一个默认参数,如果没有传入,打印 ‘Hello, world.’,如果传入,打印 ‘Hello, xxx.’

def greet(name='world'):          
	print 'hello',name

greet()			#若name参数为空,则使用默认的world
greet('bob')	#若name参数不为空,则覆盖默认的world

六、定义可变参数
如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数,在参数名前加一个*,如:

def function(*varibilities)
	print varibilities
#编写接受可变参数的 average() 函数
def average(*args)      #这个args为tuple类型,与list类型获取方式相同
	sum=0.0             #要取float
	n=0                 #用来表示tuple类型里面元素个数,每执行一次循环要n+1
	if len(args)==0:    #使用len()函数可以获取tuple类型和list类型元素个数(长度)
		return sum
	for x in args:
		sum=sum+x
		n=n+1
	average=sum/n
	return average
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值