一、函数的定义
一段可以被另一端代码引用的代码称为函数。通过函数,可以让一段代码被另一段代码引用
二、语法
def test_01():
pass
return "函数返回值"
备注:如果有函数返回值就写return,如果没有return可以不写
三、函数返回值
1、函数返回值放在return关键字后面
def test_01():
name = 123
return name
调用函数
res = test_01()
print(res)
结果:123
2、如果return后什么都不写,或者没有return,默认返回None
def test_01():
name = 123
return
#函数调用
res = test_01()
print(res)
结果:None
或者
def test_01():
name = 123
#函数调用
res = test_01()
print(res)
结果:None
3、函数返回值可以写也可以不写,需要返回值就写,不需要可以不写
4、可以返回具体的值,也可以返回变量或者对象(函数,类)
5、retrun是函数结束的标志
四、注意:
1、函数定义用def关键字
2、函数体需要和def关键字有一个缩进(1个tab键,相当于4个空格)
五、函数调用
1、函数名()
def test_01():
name = 123
return name
#函数调用
res = test_01()
print(res)
2、类里面:self.函数名()
3、类外面:类实例.函数名()
六、函数的参数
1、形参:占个坑,不是具体的参数,表示这里有值
2、实参:函数调用的时候,给形参传的具体的值
def add(x,y): #x,y就是形参
return x + y
#函数调用
result = add(1,3)# 1,3就是实参
print(result)
3、参数分类
(1)必须参数
函数调用时必须传的参数,叫必须参数,由函数定义者来决定是否需要必须参数,位置和值要一一对应,必须参数不传会报错
def add(x,y):
return x + y
#函数调用
result = add(1,3)# 1,3必须传,否则,会报错
print(result)
(2)关键字参数
传递参数时,需要用关键字标明,和位置没关系,函数调用的时候,传递参数时使用【形参名=实参】的方式传递关键字参数
def info(name,age):
print(f"my name is {name},age is {age}")
#函数调用
info(age = 18,name="cancan")#通过关键字传参,可以不用关心位置
(3)默认参数
在定义函数时,必须参数直接给了值
调用函数时,有默认参数如果传了值,就用传的值,没传值就用默认值
定义函数时,默认参数必须在必须参数的后面,错误写法def info(age=18,name)
def info(name,age=18):
print(f"my name is {name},age is {age}")
#调用
info(age = 20,name="cancan")#用传的值
info(age,name="cancan")#用默认值
(4)不定长参数
调用时,不知道需要传多少参数进来
*args:不定长参数,接收多个参数,组成一个元组
**kwargs:不定长参数,接收多个关键字参数,组成一个字典
例子:
def info(*args,**kwargs): # 两个位置不能换
print(args)
print(kwargs)
#调用
my_info = info("cancan",20,175,"黄头发")#会把你传进去的参数放在一个元组中
结果:
('cancan', 20, 175, '黄头发')
{}
my_info = info("cancan",20,175,"黄头发",name = "cancan",age=20)
结果:
('cancan', 20, 175, '黄头发')
{'name': 'cancan', 'age': 20}
4、解包(拆包)
*list
**dict
例子1:
def info(*args):
print(args)
test_list = ["cancan","20","180"]
调用函数
info(*test_list)
相当于 info("cancan","20","180")
结果:('cancan', '20', '180')
例子2:
def info(**kwargs):
print(kwargs)
#调用
test_dict={"name":"cancan","age":"20","hight":"180"}
info(**test_dict)
相当于
info(name="cancan",age=20,hight=180)
结果:{'name': 'cancan', 'age': '20', 'hight': '180'}
备注:只要是可迭代对象都可以拆包
欢迎来到testingpai.com!
注册 关于