当前位置: 首页 > web >正文

Python中函数知识详解和示例

一、函数的概念(What is a Function)

函数是组织好的、可重复使用的代码块,用于实现特定的功能。函数能提高程序的模块化和复用性,是 Python 最基本的构造之一。


二、函数的定义与调用

1. 基本语法

def 函数名(参数1, 参数2, ...):"""[可选]函数说明文档"""函数体return 返回值

2. 示例:最简单的函数

def greet():print("Hello, world!")greet()  # 调用函数

三、参数详解(Function Parameters)

Python 函数支持多种参数类型:


1. 位置参数(Positional Arguments)

def add(a, b):return a + bprint(add(3, 5))  # 输出 8

2. 默认参数(Default Parameters)

def greet(name="World"):print(f"Hello, {name}!")greet()           # Hello, World!
greet("Alice")    # Hello, Alice!

✅ 默认参数必须放在位置参数之后


3. 可变参数(*args)

用于传入任意多个位置参数,在函数内部是一个 tuple

def total(*numbers):return sum(numbers)print(total(1, 2, 3))  # 输出 6

4. 关键字参数(**kwargs)

接收任意多个关键字参数,在函数内部是一个 dict

def print_info(**info):for key, value in info.items():print(f"{key}: {value}")print_info(name="Tom", age=18)

5. 参数组合(推荐顺序)

def func(a, b=0, *args, **kwargs):pass

顺序是:

位置参数 → 默认参数 → *args → **kwargs

四、变量作用域(Scope)

作用域决定变量的可访问范围


1. 局部变量(Local)

在函数内定义,只能在函数内访问。

def func():x = 10  # 局部变量print(x)func()
# print(x)  # 报错:x 未定义

2. 全局变量(Global)

在函数外定义,整个文件都能访问。

x = 100def show():print(x)  # 访问全局变量show()

3. 修改全局变量

必须用 global 关键字:

count = 0def increment():global countcount += 1increment()
print(count)  # 1

4. 闭包变量 & nonlocal

def outer():x = 10def inner():nonlocal xx += 1print(x)inner()outer()  # 输出 11

五、返回值 return

return 用于从函数中返回值,函数执行到 return 就结束。


1. 返回一个值

def square(x):return x * x

2. 返回多个值(元组)

def stats(a, b):return a + b, a * bs, p = stats(3, 4)
print(s, p)  # 输出:7 12

3. 没有 return 时默认返回 None


六、函数的注意事项与最佳实践

注意点说明
函数名应见名知意避免起名如 fun1do_stuff
使用文档字符串"""说明""" 描述函数用途
避免参数命名与全局变量冲突否则容易混淆作用域
多返回值建议用解构接收如:a, b = func()
函数不要做太多事单一职责,便于维护

七、实用示例大全


1. 递归函数(阶乘)

def factorial(n):if n == 0:return 1return n * factorial(n - 1)

2. 判断质数

def is_prime(n):if n < 2:return Falsefor i in range(2, int(n**0.5)+1):if n % i == 0:return Falsereturn True

3. 判断回文字符串

def is_palindrome(s):return s == s[::-1]

4. 函数嵌套

def outer():def inner():print("内部函数")inner()

5. 函数作为参数传递(高阶函数)

def apply(func, value):return func(value)print(apply(abs, -5))  # 5

6. lambda 匿名函数(简写)

square = lambda x: x * x
print(square(4))  # 16

八、练习题推荐

  1. 编写一个函数判断一个字符串是否为回文。
  2. 实现一个支持可变数量数字求和的函数。
  3. 写一个函数将摄氏温度转换为华氏温度。
  4. 用函数实现“猜数字”游戏。
  5. 写一个递归函数打印斐波那契数列前 n 项。

http://www.xdnf.cn/news/10159.html

相关文章:

  • 正则化-深度学习
  • 2011肠衣问题
  • 视频压制(Video Encoding/Compression)
  • 20250530-C#知识:String与StringBuilder
  • dify账号与基础模型配置
  • RK3568项目(四)--uboot启动流程之启动模式选择
  • PPIO × AstrBot:多平台接入聊天机器人,开启高效协同 | 教程
  • 封装一个Qt调用动态库的类
  • LLM enhanced VRP
  • 根据面包屑的展开与隐藏控制样式
  • 告别充电焦虑:移动充电桩如何优化传统充电模式?
  • 湖北理元理律师事务所:债务优化服务的流程透明度建设
  • 【NLP入门系列一】NLP概述和独热编码
  • 手撕Java+硅基流动实现MCP服务器教程
  • 【Oracle】DML语言
  • AI+爆款文案,提示词脚本 ——卫朋
  • Linux之锁
  • 数据结构与算法之中缀表达式的求值
  • mapbox高阶,PMTiles介绍,MBTiles、PMTiles对比,加载PMTiles文件
  • SSE流式输出使用POST 请求
  • WSP 对CSV文件中E+如何恢复可用方案
  • Hash 的工程优势: port range 匹配
  • 可视化与动画:构建沉浸式Vue应用的进阶实践
  • 机器学习模型:逻辑回归、决策树、随机森林和 XGBoost
  • 龙虎榜——20250530
  • 主流 AI IDE 之一的 Windsurf 使用入门
  • 新中地三维GIS开发智慧城市效果和应用场景
  • Unity3D ET框架游戏脚本系统解析
  • Linux top命令各指标参数详解(AI)
  • 【大模型】Bert应对超长文本