函数是指一段可以被重复调用的代码块,python中所有的函数都必须使用def关键字进行定义,函数必须要通过调用才会返回结果,函数与函数之间可以相互调用。下面是函数定义格式:
1,不使用return返回值,不传递参数
def hello() :
print("Hello World!")
hello() #调用hello()函数
输出:
Hello World!
2,不使用return返回值,传递参数a
def hello(a) :
print(a)
hello("Hello World!") #调用hello函数,并传递所需要的参数内容"Hello World!"
输出:
Hello World!
在python中定义的函数如果没有使用return语句返回内容,那么实际上所返回的数据就是None.
def hello(a) :
pass
hello("Hello World!") #调用hello函数,并传递所需要的参数内容"Hello World!"
输出:
None
3,return关键字
1)不带有任何值
def hello(a) :
print(a)
return
hello("Hello World!")
输出:
Hello World! #这个是print()得到的结果,return没有返回任何值
2)指定确切的值
def hello(a) :
print(a)
return 100
b=hello("Hello World!")
print(b,type(b))
输出:
100 <class 'int'>
3)返回多个数据
def hello(a) :
print(a)
return a,100
b,c=hello("Hello World!")
print(b,c,type(c))
输出:
Hello World!
Hello World! 100 <class 'int'>
4,参数
比较两个数,并返回较大的数:
def max(a, b):
if a > b:
return a
else:
return b
a = 4
b = 5
print(max(a, b))
结果:
5
不使用函数的情况下
a = 4
b = 5
if a > b:
print(a)
else:
print(b)
计算面积函数:
def area(width, height):
return width * height
def print_welcome(name):
print("Welcome", name)
print_welcome("Runoob")
w = 4
h = 5
print("width =", w, " height =", h, " area =", area(w, h))
结果:
Welcome Runoob
width = 4 height = 5 area = 20
使用默认参数:
def printinfo(name='lisa', age = 35):
"打印任何传入的字符串"
print ("名字: ", name)
print ("年龄: ", age)
return
#调用printinfo函数
printinfo(age=50, name='runoob')
结果:
名字: runoob
年龄: 50
def printinfo( age=50, name="runoob"):
"打印任何传入的字符串"
print ("名字: ", name)
print ("年龄: ", age)
return
printinfo()
结果:
名字: runoob
年龄: 50
使用多参数,带*:
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print ("输出: ")
print (arg1)
print (vartuple)
# 调用printinfo 函数
printinfo( 70, 60, 50 )
输出:
70
(60, 50)
实战演练
- 使用递归的方式来生成斐波那契数列
def recur_fibo(n):
if n <= 1:
return n
else:
return(recur_fibo(n-1) + recur_fibo(n-2))
nterms = int(input("您要输出几项? "))
# 检查输入的数字是否正确
if nterms <= 0:
print("输入正数")
else:
print("斐波那契数列:")
for i in range(nterms):
print(recur_fibo(i),end=',')
结果:
您要输出几项? 10
斐波那契数列:
0,1,1,2,3,5,8,13,21,34
f(i=0)=0
f(i=1)=1
f(i=2)=f(i=0)+f(i=1)=1
f(i=3)=f(i=2)+f(i=1)=1+1=2
f(i=4)=f(i=3)+f(i=2)=2+1=3 以此类推
2.计算1!+2!+3!+…+n!
def fac(n):
if n==0 or n==1:
return 1
else:
return n*fac(n-1)
sum=0
for i in range(1,11):
sum+=fac(i)
print(sum)
3.计算 n 个自然数的立方和,1^3+2^3+3^3+4^3+……+n^3
# 定义立方和的函数
def sumOfSeries(n):
sum = 0
for i in range(1, n+1):
sum +=i*i*i
return sum
# 调用函数
n = 5
print(sumOfSeries(n))
经典的基础题型请见这一篇;蓝桥杯经典基础试题——函数-CSDN博客