1.函数的定义
def function_name(params):
return [expression]
function_name为函数名,
params为传参,
可以写注释
return[表达式]结束函数选择性返回一个值给调用方值
不带表达式的return相当于返回None
2.函数的调用
可以通过函数名加小括号来调用
function_name(params)
定义一个问好的函数
def say_hello():
print("hello")
定义一个计算字符串长度的函数
def my_len(params):
a = 0
for i in params:
a += 1
print(a)
my_len('string')
需要注意:
函数必须先定义,才能使用
参数如果不需要,可以省略不写
返回值如果不需要,可以省略不写
3.函数的参数传递
在函数进行计算的时候,可以接受外部提供的数据,参数可以是多个,也可以不给参数
形参和实参
(a,b)形参,(1,2)是实参
def function(a,b):
pass
function(1, 2)
参数的传递
def say_hello(name):
print(f"hello, {name}")
say_hello('zhangsan')
定义一个计算两数之和的函数
def add(a,b):
total = a + b
print(total)
add(1, 2)#add(a=1, b=2)
eval() 用于动态执行字符串形式的代码
print('3+4')
print(eval('3+4'))
简单计算功能
def computer(a, b, c):
# if c == '+':
# print(a + b)
# elif c == '-':
# print(a - b)
# elif c == '*':
# print( a * b)
# elif c == '/':
# print(a / b)
# else:
# print('请输入正确格式,请检查')
# computer(8,2,'/')
print(eval(f'{a} {c} {b}'))
3.函数的返回值
在函数完成要做的事情之后,向调用返回数据.
def function_name(params):
pass
return [表达式(返回值)]
变量 = function()
return表示退出函数,return后续的代码不会执行.
return语句可以返回多个值,返回多个值默认以元组的形式返回
不带参数的return返回None,没有return返回值也是None
None表示空的,无实际意义的, None的bool值是False
4.函数的嵌套:
输出结果为 1 2 3
```bash
def func1():
print(1111)
func2()
print(333333)
def func2():
print(2222)
func1()
嵌套定义计算器
def add(a, b):
return a + b
def less(a, b):
return a - b
def cheng(a, b):
return a * b
def chu(a, b):
return a / b
def computer(a, b, c):
if c == '+':
return add(a, b)
elif c == '-':
return less(a, b)
elif c == '*':
return cheng(a, b)
elif c == '/':
return chu(a, b)
res = computer(1, 2, '*')
print(res)
同理:
def computer(a, b, c):
# if c == '+':
# return add(a, b)
# elif c == '-':
# return less(a, b)
# elif c == '*':
# return cheng(a, b)
# elif c == '/':
# return chu(a, b)
dict = {
'+':add,
'-':less,
'*':cheng,
'/':chu
}
func = dict.get(c)
return func(a, b)
5.函数的递归
在其定义中调用自身的过程
条件:
终止条件:递归函数必须包含一个或多个基本情况,即不再进行递归调用的条件,避免无限递归
递归调用:递归函数在其定义中必须包含对自身的调用.通过递归调用,函数可以反复执行相同的操作,并且在每次调用中传递不同的参数.
递归的用法: 树的遍历,阶乘呢个计算,斐波那契数列,递归的思想能够简化问题的表达和解决.
递归倒计时程序:
import time
# 倒计时
def count_down(sec):
if sec <= 0:
print(f'秒倒计时结束')
else:
print(sec)
time.sleep(1)
count_down(sec-1)
count_down(10)
斐波那契数列
def feibo(n):
if n == 1 or n ==2:
return 1
else:
return feibo(n-1) + feibo(n-2)
feibo_num = feibo(8)
print(feibo_num)