1.函数
1.函数的概念
函数本质上就是一个封装后可以重复利用的代码片段,在我们写代码的过程中,有一些会重复多次使用到的代码块,我们可以使用函数进行封装,在后续使用时,直接调用即可.,这样可以有效的加快代码的运作,避免了代码重复量大的情况.
2.函数的定义
def 函数名称 (参数):
通常我们使用来该形式定义一个函数,然后在缩进语块中,使用return返回该函数执行的结果,如果不适用return,函数默认返回空值,即None,只有返回了结果,我们才可以调用该函数进行操作,
def 函数名称(参数):
代码块
return 结果
# 定义一个函数输入指定字符串
def print_text():
print("初次见面,你好")
print_text
→ 初次见面,你好
注意点:当遇到函数定义时,编译器不会执行定义函数里面的内容,当你进行对该函数调用时才会执行.
3.函数的参数
参数我们将其分为形式参数和实参
# 没有设置形参,a,b为局部变量固定值,输出为固定值
def sum_num():
a = 10
b = 20
c = a+b
print("{}+{}={}".format(a,b,c))
sum_num()
→ 10+20=30
# 带形参为可变值
def sum_num(a,b):
c = a+b
print("{}+{}={}".format(a,b,c))
a=int(input("请输入第一个数:"))
b=int(input("请输入第二个数:"))
sum_num(a,b)
→ a+b=c
4.可变长参数
当我们不确定需要传入多少参数时可以在定义函数时选择不定长参数
# 不定长参数:args
def test1(a,b,c,*args):
print(a,b,c,args)
# 传递多个参数,不定长参数*args以元组的形式封装
test1(1,2,"陈某",4,5,6,7,8)
# 不定长参数:kwargs:
def test2(a,b,c,**kwargs):
print(a,b,c,kwargs)
# 传递多个参数,不定长参数**kwargs以字典的形式封装
test2(1,2,"陈某",姓名="陈某",年龄=18)
5.自动拆包
def test(a,b,*args,**kwargs):
print(a)
print(b)
print(args)
print(kwargs)
A = (1,2,3)
B = {"name":"laowang"}
# a,b分别都被当成一个元素传入*args
test(11,22,A,B)
'''
输出结果:
11
22
((1, 2, 3), {'name': 'laowang'})
{}
'''
# 这里会自动拆包,将元组和字典拆分成单个元素和键值对
test(11,22,*A,**B)
'''
输出结果:
11
22
(1, 2, 3)
{'name': 'laowang'}
'''
6.函数的返回值
如果函数没有设置返回值return,即默认返回空值None.
# 综合函数有以下四种类型
1、无参 无返回值
2、无参 有返回值
3、有参 无返回值
4、有参 有返回值
# 获取温度(摄氏度)
def get_noun():
noun = 25
return noun
# 将摄氏度转化成华氏度
huashi_noun = get_noun() * 33.8
print("当前温度华氏度为:%g" % huashi_noun)
return一次性只能返回一个值,如想返回多个值的话可以使用列表,元组,字典等将多个值进行封装一次性返回.
def get_num():
a = 100
b = 200
c = 300
# return [a, b, c]
# 默认封装成元组
return a,b,c
print(get_num())
7.函数的嵌套
def test3():
print("我在浙江")
test2()
def test2():
print("台州市")
test1()
def test1():
print("温岭市")
test3()
8.全局变量和局部变量
局部变量:在函数里面定义的变量就是局部变量,只能在函数内部使用
全局变量:在函数之外定义的变量,在任何函数之内都可以使用
如果局部变量和全局变量重名,按照就近原则,局部变量优先
text = "陈某"
def test1():
a = 10
print(text)
def test2():
print(text)
def test3():
text = 10
print(text)
test1()
test2()
test3()
# print(a)
→
陈某
陈某
10
如果要使用局部变量来修改全局变量,可以通过global进行改变
text = "陈某"
def up_data():
global text
text = "蒋某"
up_data()
print(text)
9.递归
递归就是函数自己调用自己,需要设置结束条件才能结束
# 常规写法 5的阶乘
def get_while_num(num):
i = 1
result = 1
while i <= num:
result *= i
i += 1
return result
number = get_while_num(5)
print("常规写法:", number)
# 递归写法 5的阶乘
def get_number(num):
if num > 1:
return num * get_number(num - 1)
else:
return num
number1 = get_number(5)
print("递归写法", number1)