2025-05-22 学习记录--Python-函数
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻
一、函数 ⭐️
(一)函数的定义 🍭
函数的定义: 💐
- 使用关键字
def
;- 确定函数名称、参数名称、参数个数、编写函数体(用于实现函数功能的代码)。
def func():print("python")
(二)函数的调用 🍭
函数的调用: 🐱
- 通过函数名称进行调用函数;
- 定义好函数之后,只表示这个函数封装了一段代码而已;
- 如果不主动调用函数,函数是不会主动执行的。
# 解释器知道这里定义了一个函数
def say_hello():print("hello 1")print("hello 2")print("hello 3")
# 只有在调用函数时,之前定义的函数才会被执行
# 函数执行完成之后,会重新回到之前的程序中,继续执行后续的代码
say_hello()
print('主程序')
输出结果: 👇🏻
hello 1
hello 2
hello 3
主程序
(三)函数的参数 🍭
函数的参数: 📚
- 形参: 就是函数定义时小括号里的参数,是用来接收参数用的,在函数内部 作为变量使用;
- 实参: 函数调用的时候,小括号里的参数,是用来把数据传递到 函数内部 用的;
- 函数可以没有形参和实参。
def sum_2_num(num1, num2): # 形参# 对两个数字的求和result = num1 + num2print("计算结果是 %d" % result)# 调用函数
sum_2_num(10, 20) # 实参
输出结果: 👇🏻
输出结果是 30
(四)函数的返回值 🍭
函数的返回值: 🦋
- 返回值 是函数 完成工作后,最后 给调用者的 一个结果;
- 在函数中使用
return
关键字可以返回结果;- 调用函数一方,可以 使用变量 来 接收 函数的返回结果。
def sum_2_num(num1, num2):# 对两个数字的求和return num1 + num2# 调用函数,并使用 result 变量接收计算结果
result = sum_2_num(10, 20)print("计算结果是 %d" % result)
输出结果: 👇🏻
计算结果是 30
(五)函数的参数类型 🍭
函数的参数类型: 🍉
- 位置参数
- 要求实参顺序必须和形参顺序完全一致,由形参顺序决定实参顺序。
- 缺省参数
- 定义函数时,可以给 某个参数 指定一个默认值,具有默认值的参数就叫做 缺省参数。
- 可变参数
- 传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。
举例1
: 🌰
def power(x, n = 2): # n: 默认参数,缺省参数# 计算x的n次方return x**na = power(4)
b = power(5,3)
print(a)
print(b)
输出结果: 👇🏻
16
125
举例2
: 🌰
def infos(name, age = 24, gender = '女'):return '大家好,我叫%s,我今年%d岁,我是一名%s生' % (name,age,gender)stu1 = infos('mia')
stu2 = infos('lily',25)
stu3 = infos('jack',gender='男')
print(stu1)
print(stu2)
print(stu3)
输出结果: 👇🏻
大家好,我叫mia,我今年24岁,我是一名女生
大家好,我叫lily,我今年25岁,我是一名女生
大家好,我叫jack,我今年24岁,我是一名男生
举例3
: 🌰
def total(*args): # 可变参数【其前加1个*】print(args) # tuple元组result = 0for i in args:result += ireturn resultresult = total(1,4,5,6,7,8,3)
print(result)a = [1,2,3,4,5]
result = total(*a)
print(result)
输出结果: 👇🏻
(1, 4, 5, 6, 7, 8, 3)
34
(1, 2, 3, 4, 5)
15
举例4
: 🌰
def f(**kwargs): # 可变参数,接收字典【其前加2个* [kw: keyword关键字(字典里的),args: arguments参数]】for k,v in kwargs.items():print(k,v)d = {'name':'xiaoming','age':18}
f(**d)
输出结果: 👇🏻
name xiaoming
age 18
(六)变量作用域 🍭
全局变量 & 局部变量: 🐰
- 局部变量 是在 函数内部 定义的变量,只能在函数内部使用;
- 全局变量 是在 函数外部定义 的变量,所有函数 内部 都可以使用这个变量。
举例1
: 🌰
# 定义一个全局变量
num = 10def demo1():num2 = 20 # 局部变量print(num2)def demo2():print(num)demo1()
demo2()
print("over")
输出结果: 👇🏻
20
10
over
举例2
: 🌰
# 全局变量
num1 = 10 # 不可变数据类型
list1 = [1,2,3,4,5] # 可变数据类型def f():global num1 # 声明在f中使用的num1是全局变量num1num2 = 20 # 局部变量num1 = 20list1[2] = 8print('在函数f中打印num1的值', num1)print('在函数f中打印list1的值', list1)print('num2的值',num2)f()
# print('在函数f外打印变量num2的值',num2) # 局部变量不能在函数外使用
print('在函数f执行后打印num1的值',num1)
print('在函数f执行后打印list1的值',list1)
输出结果: 👇🏻
在函数f中打印num1的值 20
在函数f中打印list1的值 [1, 2, 8, 4, 5]
num2的值 20
在函数f执行后打印num1的值 20
在函数f执行后打印list1的值 [1, 2, 8, 4, 5]
(七)匿名函数 🍭
匿名函数: 🍑
lambda
函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方。- 优点:让代码更加精简,不需要考虑命名的问题。
# 常规函数
def fun(x,y):return x + y# 匿名函数
a = lambda x,y:x + y
print(fun(2,3))
输出结果: 👇🏻
5