Python 函数详解

引言

函数是编程中非常重要的概念,它允许我们将代码组织成可重用的块。Python 提供了灵活且强大的函数功能,包括创建和调用函数、形式参数与实际参数、位置参数、关键字参数、默认参数值、可变参数、返回值、变量作用域以及匿名函数(lambda)。本文将详细介绍这些内容,并提供相应的代码示例。

1. 函数的创建和调用

在 Python 中,可以使用 def 关键字来定义一个函数。函数定义完成后,可以通过函数名加括号来调用它。

示例代码:

# 定义一个简单的函数
def greet(name):print(f"Hello, {name}!")# 调用函数
greet("Alice")  # 输出: Hello, Alice!
2. 形式参数和实际参数
  • 形式参数(Formal Parameters):在函数定义时使用的参数。
  • 实际参数(Actual Parameters):在调用函数时传递给函数的参数。

示例代码:

# 定义一个带有形式参数的函数
def add(a, b):  # a 和 b 是形式参数return a + b# 调用函数并传递实际参数
result = add(3, 5)  # 3 和 5 是实际参数
print(result)  # 输出: 8
3. 位置参数

位置参数是指在调用函数时,按照函数定义中的顺序传递参数。

示例代码:

# 定义一个带有两个位置参数的函数
def describe_pet(animal_type, pet_name):print(f"I have a {animal_type} named {pet_name}.")# 使用位置参数调用函数
describe_pet("dog", "Buddy")  # 输出: I have a dog named Buddy.
4. 关键字参数

关键字参数允许你在调用函数时明确指定参数名称,这样就不需要关心参数的顺序。

示例代码:

# 使用关键字参数调用函数
describe_pet(pet_name="Whiskers", animal_type="cat")  # 输出: I have a cat named Whiskers.
5. 为参数设置默认值

可以在定义函数时为参数设置默认值。如果在调用函数时没有传递该参数,则使用默认值。

示例代码:

# 定义一个带有默认参数值的函数
def describe_pet(pet_name, animal_type="dog"):print(f"I have a {animal_type} named {pet_name}.")# 调用函数时不传递 animal_type 参数
describe_pet(pet_name="Rex")  # 输出: I have a dog named Rex.# 传递 animal_type 参数
describe_pet(pet_name="Fluffy", animal_type="cat")  # 输出: I have a cat named Fluffy.
6. 可变参数

可变参数允许你传递任意数量的位置参数或关键字参数。使用 *args 表示任意数量的位置参数,使用 **kwargs 表示任意数量的关键字参数。

示例代码:

# 定义一个带有可变位置参数的函数
def make_pizza(*toppings):print("Making a pizza with the following toppings:")for topping in toppings:print(f"- {topping}")# 调用函数并传递多个位置参数
make_pizza("mushrooms", "pepperoni", "green peppers")
# 输出:
# Making a pizza with the following toppings:
# - mushrooms
# - pepperoni
# - green peppers# 定义一个带有可变关键字参数的函数
def build_profile(first, last, **user_info):profile = {'first_name': first, 'last_name': last}for key, value in user_info.items():profile[key] = valuereturn profile# 调用函数并传递多个关键字参数
user_profile = build_profile('albert', 'einstein',location='princeton',field='physics')
print(user_profile)
# 输出: {'first_name': 'albert', 'last_name': 'einstein', 'location': 'princeton', 'field': 'physics'}
7. 返回值

函数可以返回一个值或多个值。返回值可以被赋值给变量,以便后续使用。

示例代码:

# 定义一个带有返回值的函数
def get_formatted_name(first_name, last_name):full_name = f"{first_name} {last_name}"return full_name.title()# 调用函数并使用返回值
formatted_name = get_formatted_name("jane", "doe")
print(formatted_name)  # 输出: Jane Doe# 返回多个值
def calculate_rectangle_area(length, width):area = length * widthperimeter = 2 * (length + width)return area, perimeter# 调用函数并接收多个返回值
rect_area, rect_perimeter = calculate_rectangle_area(5, 3)
print(f"Area: {rect_area}, Perimeter: {rect_perimeter}")  # 输出: Area: 15, Perimeter: 16
8. 变量的作用域
  • 局部变量:在函数内部定义的变量,只能在该函数内部访问。
  • 全局变量:在函数外部定义的变量,可以在整个文件范围内访问。

示例代码:

# 全局变量
global_var = "I am global"# 定义一个使用全局变量的函数
def show_global():print(global_var)# 调用函数
show_global()  # 输出: I am global# 局部变量
def show_local():local_var = "I am local"print(local_var)# 调用函数
show_local()  # 输出: I am local# 尝试在函数外部访问局部变量
try:print(local_var)
except NameError as e:print(e)  # 输出: name 'local_var' is not defined# 在函数内部修改全局变量
def modify_global():global global_varglobal_var = "I am modified global"modify_global()
print(global_var)  # 输出: I am modified global
9. 匿名函数(lambda)

lambda 表达式用于创建小型的匿名函数。lambda 函数可以接受任意数量的参数,但只能有一个表达式。

示例代码:

# 定义一个 lambda 函数
square = lambda x: x * x# 调用 lambda 函数
print(square(5))  # 输出: 25# 使用 lambda 函数作为参数
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x * x, numbers))
print(squared_numbers)  # 输出: [1, 4, 9, 16, 25]# 使用 lambda 函数进行排序
words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=lambda word: len(word), reverse=True)
print(sorted_words)  # 输出: ['banana', 'cherry', 'apple', 'date']
结论

本文详细介绍了 Python 中函数的相关知识,包括如何创建和调用函数、形式参数与实际参数、位置参数、关键字参数、默认参数值、可变参数、返回值、变量作用域以及匿名函数(lambda)。通过掌握这些内容,你可以编写出更高效、更灵活的 Python 代码。

扩展阅读

  • Python官方文档 - 函数
  • Python官方文档 - 常见问题解答 - 函数
  • Python官方文档 - Lambda 表达式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/57295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 配置 ssh —— ubuntu

Linux 配置 ssh —— ubuntu 设置 ip 这里我们选择使用系统 DHCP 自动分配的 IP,有些教程推荐使用自定义 IP,但是这样我们就没法上网,所有这里采用自定义 IP 即可 安装并启动 ssh 首先需要安装 ssh: sudo apt-get install op…

【深度学习中的注意力机制6】11种主流注意力机制112个创新研究paper+代码——加性注意力(Additive Attention)

【深度学习中的注意力机制6】11种主流注意力机制112个创新研究paper代码——加性注意力(Additive Attention) 【深度学习中的注意力机制6】11种主流注意力机制112个创新研究paper代码——加性注意力(Additive Attention) 文章目录…

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

@[TOC](修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)) 对于MySQL的漏洞问题,建议通过防火墙来限制远程访问本地3306端口的方式来处理。如果必须要升级,那么涉及到的具体兼容性问题,新版本安装后会导致的业务异常。 所以,建议采用增加防火墙策略的方式,不建议对mysql进…

计算PSNR, SSIM, VAMF工具

计算PSNR, SSIM, VAMF GitHub - fifonik/FFMetrics: Visualizes Video Quality Metrics (PSNR, SSIM & VMAF) calculated by ffmpeg.exe 绘制码率图 GitHub - fifonik/FFBitrateViewer: Visualizes video bitrate received by ffprobe.exe 视频对比 https://github.com/…

什么是全局污染?怎么避免全局污染?

全局污染(Global Pollution)是指在编程过程中,过度使用全局变量或对象导致命名冲突、代码可维护性下降及潜在错误增加的问题。在 JavaScript 等动态语言中,尤其需要关注全局污染的风险。 全局污染的影响 1. 命名冲突 3. 意外修改…

【C#】调用本机AI大模型流式返回

【python】AI Navigator的使用及搭建本机大模型_anaconda ai navigator-CSDN博客 【Python】AI Navigator对话流式输出_python ai流式返回-CSDN博客 前两章节我们讲解了使用AI Navigator软件搭建本机大模型,并使用python对大模型api进行调用,使其流式返…

Python Flask 框架下的 API 接口开发与封装示例

API(Application Programming Interface)接口的开发和封装是构建软件系统的重要环节。以下是关于 API 接口开发和封装的详细步骤: 一、需求分析 在开发 API 接口之前,首先需要明确接口的功能需求。这包括确定接口要提供哪些数据…

“智能科研写作:结合AI与ChatGPT提升SCI论文和基金申请质量“

基于AI辅助下的高效高质量SCI论文撰写及投稿实践 科学研究的核心在于将复杂的思想和实验成果通过严谨的写作有效地传递给学术界和工业界。对于研究生、青年学者及科研人员,如何高效撰写和发表SCI论文,成为提升学术水平和科研成果的重要环节。系统掌握从…

ProteinMPNN中DecLayer类介绍

PositionWiseFeedForward 类的代码 class PositionWiseFeedForward(nn.Module):def __init__(self, num_hidden, num_ff):super(PositionWiseFeedForward, self).__init__()self.W_in = nn.Linear(num_hidden, num_ff, bias=True)self.W_out = nn.Linear(num_ff, num_hidden, …

SAP_FICO模块-资产减值功能对折旧和残值的影响

一、业务背景 由于财务同事没注意,用总账给资产多做了一笔凭证,导致该资产金额虚增,每个月的折旧金额也虚增;现在财务的需求是怎么操作可以进行资产减值,并且减少每个月计提的折旧; 二、实现方式 通过事务码…

linux CentOs7 安装 FastDFS

CentOs7 安装 FastDFS 1. 安装依赖 yum install gcc libevent libevent-devel -y#进入src目录 cd /usr/local/src2. 安装 libfastcommon 库 libfastcommon 库是 FastDFS 文件系统运行需要的公共 C 语言函数库 # 下载 wget https://github.com/happyfish100/libfastcommon/a…

使用梧桐数据库进行销售趋势分析和预测

在当今竞争激烈的商业环境中,企业需要深入了解销售数据,以便做出明智的决策。销售趋势分析和预测是帮助企业把握市场动态、优化库存管理、制定营销策略的重要工具。本文将介绍如何使用SQL来创建销售数据库的表结构,插入示例数据,并…

6.2024.10.22

2024.10.22 2024.10.22 2024.10.22 今天没怎么学习嵌入式的,找时间补上今天学习的空缺。

qt EventFilter用途详解

一、概述 EventFilter是QObject类的一个事件过滤器,当使用installEventFilter方法为某个对象安装事件过滤器时,该对象的eventFilter函数就会被调用。通过重写eventFilter方法,开发者可以在事件处理过程中进行拦截和处理,实现对事…

go 语言 Gin Web 框架的实现原理探究

Gin 是一个用 Go (Golang) 编写的 Web 框架,性能极优,具有快速、支持中间件、crash处理、json验证、路由组、错误管理、内存渲染、可扩展性等特点。 官网地址:https://gin-gonic.com/ 源码地址:https://github.com/gin-gonic/gi…

Shell重定向输入输出

我的后端学习大纲 我的Linux学习大纲 重定向介绍 标准输入介绍 从键盘读取用户输入的数据,然后再把数据拿到Shell程序中使用; 标准输出介绍 Shell程序产生的数据,这些数据一般都是呈现到显示器上供用户浏览查看; 默认输入输出文件 每个…

重新认识Linux下的硬链接和软链接

文章目录 前言1、软链接?1.1 工作原理1.2 特点 2、硬链接2.1 工作原理2.2 特点 3、 总结 前言 让自己永远保持一颗好奇心 今天无意间听别人提到了硬链接和软链接,起初我想这么基础的知识我肯定是知道的,毕竟大学接触Linux到现在工作了那么多…

ubuntu20.04 opencv4.0 /usr/local/lib/libgflags.a(gflags.cc.o): relocation报错解决

在一个只有ubuntu20.04的docker环境中配置opencv4.0.0, 什么库都没有,都要重新安装, 其他的问题在网上都找到了解决方案,唯独这个问题比较棘手: [ 86%] Linking CXX executable …/…/bin/opencv_annotation /usr/bin/ld: /usr/lo…

前OpenAI首席技术官为新AI初创公司筹资;我国发布首个应用临床眼科大模型 “伏羲慧眼”|AI日报

文章推荐 2024人工智能报告.zip |一文迅速了解今年的AI界都发生了什么? 今日热点 据报道,前OpenAI首席技术官Mira Murati正在为一家新的AI初创公司筹集资金 据路透社报道,上个月宣布离职的OpenAI首席技术官Mira Murati正在为一…

栈和队列(一)

栈和队列的定义和特点 栈和队列是一种特殊的线性表,只能在表的端点进行操作 栈的定义和特点 这就是栈的结构,是一个特殊的线性表,只能在栈顶(或者说是表尾)进行操作。其中top为栈顶,base为栈底 栈s的存储…