函数
函数的定义
注意
-
参数如果不需要可以省略
-
返回值不需要也可以省略
-
函数必须先定义后使用
参数
def add(x, y):
result = x + y
print("{x} + {y}的结果是:{result}")
返回值
如果函数没有使用return
语句返回数据,函数也有返回值
本质上是返回了None
None
相当于False
函数的说明文档
可以给函数添加说明文档,提高理解代码的效率
def add(x, y):
'''
接收2个参数并进行这两个参数相加的功能
:param x:加法操作的第一个数字
:param y:加法操作的第二个数字
:return:加法操作的结果
'''
result = x + y
print("两数相加的结果是{result}")
return result
调用函数的时候,悬停鼠标也可以查看该函数的说明文档
函数的嵌套调用
变量的作用域
局部变量即定义在函数体内部的变量,只在函数体内部生效
全局变量即在函数体内部外部都可以访问的变量
正常在函数体内部无法修改全局变量,若要修改,要添加global
关键字
例如:
num = 100
def test():
# global 关键字声明num是全局变量
global num
num = 200
print(num)
实例
若变量没有初值,可以先设置为None
函数进阶
多返回值
def test_return():
return 1,"hello"
x,y = test_return()
print(x) # 1
print(y) # hello
多种传参方式
定义函数:
def user_info(name,age,gender):
print(name)
print(age)
print(gender)
传参方式:
-
位置参数
根据函数定义的参数位置来传递参数
user_info("小刘",19,"男")
-
关键字参数
函数调用时使用”键 = 值“的形式传递参数
作用:可以使函数更加清晰,也清除了参数的顺序要求
user_info(name = "小刘",gender = "男",age = 19)
也可以混合使用:
user_info("男",name = "小刘",age = 19)
但是位置参数必须在关键字参数的前面,关键字参数没有顺序可言
-
缺省参数
在设计函数的时候可以为参数设置默认值
def user_info(name,age,gender = "男"):
print(name)
print(age)
print(gender)
调用:
user_info("小张",16)
user_info("小天",18,"女")
但是在设置默认值参数的时候,要把带有默认值的参数都放在参数列表的后面
-
不定长参数
即可变参数,分为两种:
1.位置上
用于不确定调用的时候会传递多少个参数
def user_info(*args):
print(args)
user_info("TOM")
user_info("MiQiu",2)
传递的所有参数都会被args
变量收集,它会根据传进参数的位置合并为一个元组,args
是元组类型,这是位置上的不定长
2.关键字参数
def user_info(**kwargs):
print(kwargs)
user_info(name = "Liu", age = 19, id = 333)
在传入参数的时候要按照”键 = 值“的形式传入,kwargs
会根据”键 = 值“组成字典
匿名函数
1.将函数作为参数传递
def fun(add):
ret = add(1,2)
return ret
def add(x, y):
return x + y
这里没有传递数据,传递的是计算逻辑
2.lambda
匿名函数
函数定义:
-
def关键字可以定义带有名称的函数
-
lambda关键字可以定义匿名函数(无名称)
有名称的函数,可以基于名称重复使用;没有名称的匿名函数,只能临时使用一次
lambda 传入参数:函数体(一行代码)
例如:
fun(lambda x, y : x + y)
--------------------------------------------------------------------------------------
若有问题,烦请指出