欢迎光临
我们一直在努力

Python函数从入门到实战:一篇就够了

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、函数是什么?
    • 1.为什么需要函数?
  • 二、函数的定义与调用
  • 2.1 基本语法
    • 三、函数的参数
    • 3.1 位置参数
    • 3.2 默认参数
    • 3.3 关键字参数
    • 3.4 可变参数
    • 3.5 参数解包
    • 四、函数的返回值
    • 4.1 return 语句
    • 4.2 返回多个值
    • 4.3 没有 return 的情况
    • 五、综合实战案例
  • 总结

前言

本文基于三个实战代码文件,系统讲解Python函数的定义、参数类型、返回值以及综合应用,适合Python初学者快速掌握函数编程。

一、函数是什么?

函数是一段提前组织好的,可以重复利用的代码块,用来实现单一,相关联的共能。函数就像饭店的“菜单”一样,提前编写好,点单完成,就能得到做好的菜,而不需要每次从头执行。

1.为什么需要函数?

先看一个例子:如果我们要打印1到5的数字,可能会这样写:

print(1)
print(2)
print(3)
print(4)
print(5)

如果需要在多个地方重复打印1到5,难道要复制粘贴多次吗?显然这样代码会变得冗余且难以维护。

使用循环可以解决一部分问题:

python
for i in range(1, 6):
print(i)

但如果需要在程序的不同位置多次执行同样的打印操作,每次都要写一遍循环,仍然很麻烦。这时候,函数就派上用场了

二、函数的定义与调用

2.1 基本语法

Python中定义函数使用 def 关键字:

def 函数名():
函数体

函数1.1

def my_print():
"""
函数注释:函数说明
"""

for i in range(1, 6):
print(i)
# 调用函数
my_print()
my_print()
my_print()

上面的代码定义了一个名为 my_print 的函数,每次调用都会打印1到5的数字

💡 提示:函数定义时不会执行函数体,只有调用时才会执行。

三、函数的参数

3.1 位置参数

让函数更灵活,可以给它传入参数:

def my_print(start, stop, msg):
"""
自定义打印函数
:param start: 开始
:param stop: 结束
:param msg: 打印信息
"""

for i in range(start, stop):
print(i, msg)

my_print(1, 6, "好饿呀") # 输出:1 好饿呀 … 5 好饿呀
my_print(55, 60, "开饭了") # 输出:55 开饭了 … 59 开饭了

这里 start、stop、msg 就是位置参数,调用时按顺序传入】。

3.2 默认参数

有些参数在大多数情况下有固定值,可以设置默认值:

def my_print(msg="醒醒啦", n=1):
for i in range(n):
print(msg)

my_print("开饭啦") # msg="开饭啦", n=1
my_print(n=10) # msg="醒醒啦", n=10

当调用时没有传入参数,就会使用默认值。

3.3 关键字参数

调用函数时,可以通过 参数名=值 的方式指定参数,顺序可以打乱:

def my_max(a, b):
return a if a > b else b

print(my_max(1, 2)) # 位置参数
print(my_max(b=1, a=2)) # 关键字参数

两种调用方式都合法,但关键字参数更清晰。

3.4 可变参数

有时候我们不确定要传入多少个参数,可以使用:

*args:接收任意数量的位置参数,打包成元组

**kwargs:接收任意数量的关键字参数,打包成字典

def my_print(*args, **kwargs):
print(args, type(args)) # (10, 20, 30, 40, 50) <class 'tuple'>
print(kwargs, type(kwargs)) # {'a': 10, 'b': 20, 'c': 30} <class 'dict'>

my_print(10, 20, 30, 40, 50, a=10, b=20, c=30)

参数的顺序规则是:**位置参数 → 默认参数 → *args → kwargs。

3.5 参数解包

反过来,我们也可以将列表或字典“拆开”作为参数传入:

# 列表解包
def add(a, b, c):
return a + b + c

datas = [10, 20, 30]
print(add(*datas)) # 输出:60

# 字典解包
def greet(name, age, addr):
print(f"{name} 今年 {age}{addr}")

data = {"name": "小明", "age": 20, "addr": "郑州"}
greet(**data) # 输出:小明 今年 20 岁 郑州

  • 用于解包列表/元组,** 用于解包字典。

四、函数的返回值

4.1 return 语句

函数可以使用 return 返回结果:

def get_total(a, b):
total = 0
for i in range(a, b+1):
if i % 2: # 判断奇数
total += i
return total

print(get_total(10, 50)) # 输出:10到50之间所有奇数的和

return 会立即结束函数,后面的代码不会执行。

4.2 返回多个值

Python函数可以同时返回多个值,实际上是以元组形式返回:

def my_print():
return 100, 200.0, True, "hello", [1, 2, 3]

r = my_print()
print(r) # (100, 200.0, True, 'hello', [1, 2, 3])

多个返回值可以用多个变量接收。

4.3 没有 return 的情况

如果函数没有 return 语句,默认返回 None:

r = print(666)
print(r) # None

print 函数执行打印功能,但没有返回值。

五、综合实战案例

案例一:求阶乘和 需求:计算 5! + 4! + 3! + 2! + 1!

def get_mul(i):
"""计算 i 的阶乘"""
mul = 1
for j in range(1, i + 1):
mul *= j
return mul

def get_sum(value):
"""计算 1! 到 value! 的和"""
total = 0
for i in range(1, value + 1):
total += get_mul(i)
return total

print(get_sum(5)) # 输出:153

这里使用了函数嵌套调用——get_sum 内部调用了 get_mul。

案例二:判断质数并统计 需求:统计 500~1000 之间有多少个质数

def is_prime(value):
"""判断一个数是否为质数"""
for i in range(2, value):
if value % i == 0:
return False
else:
return True

def get_count(a, b):
"""统计 a 到 b 之间的质数个数"""
count = 0
for i in range(a, b + 1):
if is_prime(i):
count += 1
return count

print(get_count(500, 1000)) # 输出:73

⚠️ 注意:这里的 for…else 结构,当循环没有被 break 中断时,会执行 else 分支。

案例三:寻找质数对 需求:在 500~1000 范围内,找出相差为 18 的三个质数(即 p, p+18, p+36 都是质数)

def is_prime(value):
for i in range(2, value):
if value % i == 0:
return False
else:
return True

def get_prime_pairs(a, b, c):
result = []
for i in range(a, b + 1):
if is_prime(i) and is_prime(i + c) and is_prime(i + c + c):
result.append((i, i + c, i + c + c))
return result

print(get_prime_pairs(500, 1000, 18))

输出示例:[(523, 541, 559), …]

案例四:turtle 绘图——封装绘制三角形 需求:封装一个函数,传入三个顶点坐标和颜色,绘制填充三角形

import turtle

def draw(pencolor, fillcolor, point1_x, point1_y,
point2_x, point2_y, point3_x, point3_y):
turtle.color(pencolor, fillcolor)
turtle.up()
turtle.goto(point1_x, point1_y)
turtle.down()
turtle.begin_fill()
turtle.goto(point2_x, point2_y)
turtle.goto(point3_x, point3_y)
turtle.goto(point1_x, point1_y)
turtle.end_fill()

# 调用函数绘制三个三角形
draw("red", "green", 50, 50, 150, 200, 100, 80)
draw("pink", "purple", 150, 50, 150, 200, 100, 80)
draw("black", "blue", 150, 150, 250, 250, 100, 180)

turtle.mainloop()

这个案例展示了如何将重复的绘图逻辑封装成函数,通过参数控制不同的颜色和位置。

总结

函数是 Python 编程的核心概念,掌握函数的定义、参数传递和返回值,是写出高质量、可维护代码的基础。通过本文的讲解和实战案例,相信你已经对 Python 函数有了全面的认识。多写多练,函数编程就会变得得心应手!

赞(0)
未经允许不得转载:171主机测评 » Python函数从入门到实战:一篇就够了
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址