1 函数的基本操作
函数,表示的是生活中的一种行为,这个行为可能需要消耗资源,可能需要汇报结果,我们生活中的行为总的可以分为四类,就像函数一样:
有四种类型:
1 没有数据 没有返回值
2 有数据 没有返回值
3 没有数据 有返回值
4 有数据 有返回值
01 函数的 定义
def 函数名称(参数列表)(参数列表,可以接受0~n个参数)
函数中要执行的代码
[return 返回结果] (可以有返回的结果,也可以没有返回的结果)
声明定义一个函数,并不会执行函数中的代码,只是把这些代码放在了内存里,等调用的时候这些代码才会执行
def eat()
print("函数中需要执行的代码")
print("函数中需要执行的代码")
print("函数中需要执行的代码")
eat() #函数的调用
函数的命名规范:因为函数括号前面的部分就相当于是一个变量,所以函数的命名规范和变量的命名规范一致(见名知意,字母,数字,下划线组成,数字不能开头)
2 函数的参数
参数:其实就是一种变量,是一种特殊的变量,专门给函数接受数据使用的
函数就相当于是生活中的行为
参数就相当于完成这些行为所需要的资源
def show_mes("name","mes"):
#留言的函数
print("%s给你留言了:%s" % (name,mes))
show_mes("tom","i am waitting for you")
3 函数的返回值
函数:返回值(返回运算的结果)
返回值操作:return关键字
函数中的代码在执行时,如果一旦执行了return所在的代码,程序直接结束
def kuai_di():
#帮取快递
print("取快递的过程.....")
res = "小狗"
#返回结果
return res
带有返回值的函数,调用的时候,我们需要自己定义一个变量存储返回结果,如果不接受函数的返回结果,结果会直接丢失
什么情况下接受返回值呢?
如果执行完有返回值的函数
1.函数之后的代码中不需要这个返回结果进行运算,可以选择不接受返回值
2.函数之后的代码中也需要这个数据,必须接受返回结果
4 全局变量和局部变量
定义:
1.全局变量:所有人都可以使用的变量,全局变量
2.局部变量:只有当前这一个函数可以使用的变量,局部变量
从在函数外部开始声明这个开始,这个变量就成为全局变量,但是在函数中出现的时候也作为全局变量出现
- 注意事项
在函数中如果出现和全局变量名称相同的变量,值不同的话就会报错,除非在函数中的这个变量出现在全局变量之前
g
name = "hello"
def test():
age = "13"
name = "hello"
print("这是函数内部的变量age")
name = "你好
print(name)" #程序会报错
->修改
name = "hello"
def test():
global name(声明函数中要使用的全局变量)
global mes(在函数中声明定义了mes
age = "13"
name = "hello"
print("这是函数内部的变量age")
name = "你好
mes = "我很好"
print(name) -> "hello"
print(mes) ->"我很好"
在项目开发过程中,处理公共数据。其他的变量,尽量使用局部变量
5 参数操作
在python中参数的操作被强化,功能十分强大
01.位置参数
def test1(p1,p2,p3):
print(p1,p2,p3)
#调用执行时,传递的实际参数按照位置顺序给形式参数进行赋值
test1(10,20,30)
02.默认值参数
默认值参数:定义函数的参数时,可以给参数赋值
如果函数参数中出现了默认值参数,一般默认值参数放在普通参数后面
def test2(n1,n2,opre"+"):
print("计算n1:[%s]和n2[%s]进行opra[%s]运算" % (n1, n2, opra)")
#默认值参数如果实际参数传递了实际数据,就使用传递的数据
#如果默认值参数没有传递实参,直接使用默认数据进行运算
test2(10 20) #不输入默认值参数
test2(10,20,“+")#输入默认值参数,输出结果为”+“
- 实参关键字参数
主要目的是提高代码的可读性
def test3(p1,p2,p3)
print(p1,p2,p3)
#实参关键字参数,调用时可以根据参数名称进行赋值(打破位置参数要求的顺序)
test3 (10,20,30) #按照默认的位置顺序赋值
test3(p2 = 20,p1 = 10,p3 = 30)#按照形参名称赋值(可以打乱位置顺序)
4.实参强制关键字参数
def test4(*,p1,p2,p3)
print(p1,p2,p3)
#实参在传递数据时,形式参数中符号*后面的所有参数都要使用key = value的关键字参数
test4(p1 = 10,p2 = 20,p3 = 30)
6 参数操作进阶
1.可变参数
函数在执行过程中,可以接受0~n个参数
def test(*args):
print("可变参数,在普通参数前添加一个符号*")
print("test()"函数就可以接受0~n个参数进行操作)
print(args)
test()
test("hello")
test("hello", "jerry")
test(1, 3, 5)
test(1, 1, 2, 3, 5, 8, 13, 21)
- 可变关键字参数
def test2(**kwargs):
print("可变关键字参数,就是在普通参数的前面添加符号**")
print("可变关键字参数,可以接受多个key=value的参数数据")
print("并且可以接受0~n个k=v的数据")
print("并且将数据包含在字典中")
print(kwargs, kwargs.get('name'))")2
test2(name = "tom")
test2(name = "shuke",age = 18)
test2(name = "hello",age= 10,heigh = "182")
3.万能形参
def test3(*args,**kwargs):
print(args,kwargs)
#在满足规范的情况下,可以接受任何参数
test3()
test3("hello")
test3("hello",name = "shuke")
7 解包
解包:将组合数据类型拆分
def test(p1, p2):
print(p1, p2)
# 非正常调用:字典解包
nums2 = {"p1": 100, "p2": 200}
test(**nums2) # test(**nums2)
7 函数的相互调用
也就是在生活中执行一种行为的过程中,可能调用另一个行为去执行
看书(行为) 写字(行为)
1.在函数中,一个函数可以调用另一个函数的代码
def read():
print("看书“)
write()
def write():
print("写字")
read()
2.函数中调用执行自己的函数:自己调用自己->递归调用
def login():
name = input("请输入账号:")
if name == "admin"
print("账号输入正确")
return name
login()
login()
网友评论