「Python系列」Python函数

文章目录

  • 一、Python函数
    • 函数的组成部分:
    • 调用函数:
    • 变量作用域:
    • 默认参数和可变参数:
  • 二、匿名函数(Lambda函数)
  • 三、相关链接

一、Python函数

Python函数是组织代码的一种方式,它允许你定义可重用的代码块,并通过名称来调用这些代码块。函数可以接收输入(称为参数)并产生输出(称为返回值)。

在Python中,你可以使用def关键字来定义函数。以下是一个简单的Python函数示例:

def greet(name):"""这个函数接受一个名字作为参数,并返回一个问候消息。"""return "Hello, " + name + "!"# 调用函数
message = greet("Alice")
print(message)  # 输出: Hello, Alice!

在这个例子中,greet是函数名,name是参数,函数体中的代码是return "Hello, " + name + "!",这行代码返回了一个问候消息。

函数的组成部分:

  1. 函数定义:使用def关键字开始,后面跟着函数名、参数列表(用圆括号括起来)和冒号。
  2. 函数体:缩进的部分,包含函数执行的代码。
  3. 返回值:使用return语句来返回函数的结果。如果函数没有return语句或return语句没有跟任何值,那么函数默认返回None
  4. 文档字符串(可选):在函数定义的第一行,使用三引号("""''')可以添加一个文档字符串(docstring),它用于解释函数的目的和如何使用它。这不是必需的,但强烈建议为函数提供文档字符串,以便他人(或未来的你)可以理解函数的用途。

调用函数:

要调用一个函数,只需使用函数名,后面跟上括号和任何必要的参数。函数执行后将返回指定的值。

# 定义一个函数,不接受参数,返回一个固定的字符串  
def greet():  return "Hello, World!"  # 调用函数,不需要传递参数  
message = greet()  # 打印函数返回的结果  
print(message)  # 输出: Hello, World!

变量作用域:

在函数内部定义的变量具有局部作用域,这意味着它们只能在函数内部访问。在函数外部定义的变量具有全局作用域,可以在整个程序中访问。然而,函数内部可以访问全局变量,但通常不建议这样做,因为这可能导致代码难以理解和维护。如果需要修改全局变量,可以在函数内部使用global关键字。

在Python中,变量的作用域指的是变量在程序中的可见性和生命周期。了解变量作用域对于编写清晰、可维护的代码至关重要。下面是一个关于Python变量作用域的案例:

假设我们有一个函数,它需要在内部使用一个变量,并且这个变量不应该在函数外部可见或可修改。此外,我们还想在函数内部修改一个全局变量。我们可以通过以下代码来展示这些概念:

# 全局变量
global_var = "I am global"# 定义一个函数
def my_function():# 局部变量local_var = "I am local"# 修改全局变量global global_varglobal_var = "I am modified inside the function"# 打印局部变量和全局变量print("Inside function:")print("local_var:", local_var)print("global_var:", global_var)# 调用函数
my_function()# 打印全局变量,以展示它已被函数修改
print("Outside function:")
print("global_var:", global_var)

输出将会是:

Inside function:
local_var: I am local
global_var: I am modified inside the function
Outside function:
global_var: I am modified inside the function

在这个案例中,我们定义了一个全局变量 global_var 和一个函数 my_function。在函数内部,我们定义了一个局部变量 local_var,并通过 global 关键字声明了我们想要修改的是全局变量 global_var

当函数被调用时,它打印了局部变量和全局变量的值。由于 local_var 是局部变量,它只能在函数内部访问。而 global_var 虽然是全局变量,但在函数内部通过 global 关键字被修改,因此它的值在函数内部和外部都发生了变化。

这个例子展示了以下几点:

  1. 局部变量作用域仅限于函数内部,函数外部无法访问。
  2. 全局变量在整个程序中都可见,可以在函数内部和外部访问和修改。
  3. 如果在函数内部需要修改全局变量,必须使用 global 关键字声明。

理解变量作用域有助于避免命名冲突和意外地修改不应该修改的数据。在编写复杂的程序时,合理地规划变量作用域可以提高代码的可读性和可维护性。

默认参数和可变参数:

函数定义时,可以为参数指定默认值,这样调用函数时就不需要提供该参数。此外,你还可以使用*args**kwargs来定义可变数量的位置参数和关键字参数。

在Python中,函数可以接受不同类型的参数,包括默认参数和可变参数。默认参数是在函数调用时如果没有提供相应参数值则使用的默认值,而可变参数允许你传递任意数量的参数给函数。下面我将通过一个案例来展示这两种参数的使用。

假设我们要编写一个函数,该函数用于计算一组数字的平均值。我们可以使用默认参数来指定一个默认的起始值,同时使用可变参数来接受任意数量的数字作为输入。

# 定义一个计算平均值的函数
def calculate_average(*args, start_value=0):# 计算总和total = start_valuefor num in args:total += num# 计算平均值average = total / len(args)return average# 使用默认参数调用函数
average_with_default = calculate_average(1, 2, 3, 4, 5)
print(f"Average with default start_value: {average_with_default}")  # 输出: Average with default start_value: 3.0# 使用自定义起始值调用函数
average_with_custom_start = calculate_average(1, 2, 3, 4, 5, start_value=10)
print(f"Average with custom start_value: {average_with_custom_start}")  # 输出: Average with custom start_value: 2.4# 使用空参数调用函数(仅使用默认起始值)
average_with_no_args = calculate_average()
print(f"Average with no arguments: {average_with_no_args}")  # 输出: Average with no arguments: 0.0

在这个案例中,calculate_average 函数使用了两个参数:

  • *args 是一个可变参数,它允许你传递任意数量的位置参数给函数。在函数内部,这些参数被收集到一个名为 args 的元组中。
  • start_value 是一个默认参数,它有一个默认值 0。如果在调用函数时没有提供 start_value,则使用默认值。如果提供了,则使用提供的值。

函数体内部首先计算了总和,包括 start_value 和所有通过 *args 传递进来的数字。然后,通过除以 args 的长度(即传递的数字的数量)来计算平均值。

通过三次不同的函数调用,我们展示了如何使用默认参数、如何使用自定义的起始值,以及如何在不传递任何参数的情况下使用默认起始值。这种灵活性使得函数更加通用和可重用。

二、匿名函数(Lambda函数)

Python 中的 lambda 关键字用于创建匿名函数,也就是没有名字的函数。lambda 函数通常用于需要一个简单函数对象的地方,并且只使用一次。它们特别适用于在排序函数(如 sorted())或作为回调函数(如 map()filter())中使用。

lambda 函数的语法如下:

lambda arguments: expression

其中 arguments 是函数的参数,用逗号分隔,而 expression 是返回的表达式。

下面是一些 lambda 函数的例子:

  1. 一个简单的 lambda 函数,接受两个参数并返回它们的和:
add = lambda x, y: x + y
print(add(3, 4))  # 输出: 7
  1. 用于 sorted() 函数,根据字符串长度进行排序:
words = ['apple', 'banana', 'cherry', 'date']
sorted_words = sorted(words, key=lambda word: len(word))
print(sorted_words)  # 输出: ['date', 'apple', 'cherry', 'banana']
  1. 使用 map() 函数将列表中的每个元素都乘以 2:
numbers = [1, 2, 3, 4, 5]
doubled = list(map(lambda x: x * 2, numbers))
print(doubled)  # 输出: [2, 4, 6, 8, 10]
  1. 使用 filter() 函数筛选列表中的偶数:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 输出: [2, 4, 6, 8]

lambda 函数的一个主要优点是它们的简洁性,特别是在只需要一行代码来定义函数行为的情况下。然而,对于更复杂的逻辑,使用常规的 def 关键字来定义函数通常更加清晰和易于维护。

需要注意的是,lambda 函数不能包含多条语句,只能有一个表达式,并且没有文档字符串、参数注解、或复杂的控制结构(如循环或条件语句)。这些限制使得 lambda 函数非常适合简单的、一行代码就能完成的任务。

三、相关链接

  1. Python下载安装中心
  2. Python官网
  3. Python软件下载
  4. 「Python系列」Python简介及案例
  5. 「Python系列」Python基础语法/数据类型
  6. 「Python系列」Python解释器
  7. 「Python系列」Python运算符

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

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

相关文章

洛谷 8599.带分数

这道题其实是蓝桥杯的一道真题,其实这题看似很难解,但是如果稍加点化,其实很简单。 思路:因为我们需要选择1-9的数字来组成可以按照题目要求计算成目标数的形式,而且只有一次选用。那么,我们可以想&#x…

SEO优化对服务器有影响吗

SEO优化对服务器有影响吗 SEO优化也就是搜索引擎优化,简单的理解就是利用搜索引擎的规则来提高自己网站在搜索引擎上的自然排名。那么究竟服务器对于SEO优化是否有影响呢?SEO优化对服务器的选择有没有什么要求?服务器对SEO优化有什么影响&…

Docker命令实战

文章目录 一、Docker常用命令-图谱二、基础实战命令2.1、查找镜像2.2、启动容器2.3、修改容器内容2.3.1、进入容器内部修改2.3.2、挂载数据到外部修改 2.4、提交改变2.5、镜像传输--将镜像保存成压缩包2.6、两台主机间压缩文件的传输拷贝2.7、推送阿里云个人远程镜像仓库2.8、其…

【水文】计算并输出1到100之间所有质数的和

#include <stdio.h> #include <stdbool.h> // 函数声明 bool isPrime(int num); int main() { int sum 0; printf("1到100之间的质数有&#xff1a;\n"); for (int i 2; i < 100; i) { if (isPrime(i)) { printf("%…

CentOS7与Ubuntu防火墙管理命令操作总结

CentOS7与Ubuntu防火墙管理命令操作总结 CentOS7启动、停止和重启防火墙置默认区域查看防火墙状态和规则添加和删除规则重新加载和永久生效配置 Ubuntu防火墙管理操作安装和启用ufw验证ufw状态管理操作配置ufw规则删除和禁用规则 CentOS7 在CentOS7上&#xff0c;默认使用firew…

Nodejs 第三十九章(knex)

knex Knex是一个基于JavaScript的查询生成器&#xff0c;它允许你使用JavaScript代码来生成和执行SQL查询语句。它提供了一种简单和直观的方式来与关系型数据库进行交互&#xff0c;而无需直接编写SQL语句。你可以使用Knex定义表结构、执行查询、插入、更新和删除数据等操作。…

SQL110 插入记录(一)(插入和interval关键字的用法)

代码 insert into exam_record(uid,exam_id,start_time,submit_time,score) values(1001,9001,2021-09-01 22:11:12,2021-09-01 22:11:12interval 50 minute,90), (1002,9002,2021-09-04 07:01:02,null,null)知识点 interval关键字的用法 INTERVAL关键字一般使用格式为&#x…

Python爬虫之Splash负载均衡配置

爬虫专栏&#xff1a;http://t.csdnimg.cn/WfCSx Splash基础&#xff1a;Python爬虫之Splash详解-CSDN博客 用 Splash 做页面抓取时&#xff0c;如果爬取的量非常大&#xff0c;任务非常多&#xff0c;用一个 Splash 服务来处理的话&#xff0c;未免压力太大了&#xff0c;此…

【Linux 内核源码分析】内存映射(mmap)机制原理

内存映射(mmap)是 Linux 内核的一个重要机制&#xff0c;它为程序提供了一种将文件内容直接映射到进程虚拟地址空间的方式。同时内存映射也是虚拟内存管理和文件 IO 的重要组成部分。 在 Linux 中&#xff0c;虚拟内存管理是基于内存映射来实现的。在调用 mmap 函数时&#xf…

一篇博客教会你使用node多版本管理

文章目录 nvm 简介nvm 安装nvm 使用配置国内镜像显示可以安装的 nodejs安装 nodejs显示已安装的 nodejs切换 nodejs nvm 简介 nvm&#xff08;Node Version Manager&#xff09;是 node.js 的版本管理器&#xff0c;可以让我们轻松地在不同的 node.js 版本之间进行切换。 今天…

c语言(指针进阶)

指针 一.什么是字符指针二.使用指针数组模拟二维数组三.函数指针 一.什么是字符指针 字符指针&#xff1a;指向字符型数据的指针变量。每个字符串在内存中都占用一段连续的存储空间&#xff0c;并有唯一确定的首地址。即将字符串的首地址赋值给字符指针&#xff0c;可让字符指针…

vivado RAM HDL Coding Guidelines

从编码示例下载编码示例文件。 块RAM读/写同步模式 您可以配置块RAM资源&#xff0c;为提供以下同步模式给定的读/写端口&#xff1a; •先读取&#xff1a;在加载新内容之前先读取旧内容。 •先写&#xff1a;新内容立即可供阅读先写也是众所周知的如通读。 •无变化&…

树和堆的精讲

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

告别你的朝九晚五的工作。

告别你的朝九晚五的工作。 以下是6个网站&#xff0c;你可以从任何地方获得100美元到2000美元的报酬&#xff1a; &#xff08;第3个网站最正规&#xff09; 1. Honeygain 分享未使用的互联网带宽换取现金。 功能包括推荐系统、JumpTask模式、成就和每日幸运抽奖。 非常适…

机构如何搭建一个在线课程教学平台?

随着数字化教育的兴起&#xff0c;越来越多的教育机构开始考虑建立自己的在线课程教学平台。这一趋势不仅顺应了时代的发展&#xff0c;而且为教育行业带来了诸多便利和优势。构建一个在线教学平台可以帮助机构拓宽服务范围、提升教学质量、增强学生体验&#xff0c;并且能够有…

Qt之Qchar类的接口1

Qt类的构造函数 QChar类提供了许多个不同原型的构造函数&#xff0c;以方便不同场合下使用。 QChar(); //构造一个空字符&#xff0c;即‘\0’ QChar(char ch); //由字符数据ch构造 QChar(uchar ch)…

optuna,一个好用的Python机器学习自动化超参数优化库

🏷️个人主页:鼠鼠我捏,要死了捏的主页 🏷️付费专栏:Python专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 前言 超参数优化是机器学习中的重要问题,它涉及在训练模型时选择最优的超参数组合,以提高模型的性能和泛化能力。Optuna是一个用于自动化超参数优化的…

react虚拟dom及实现原理

React的虚拟DOM&#xff08;Virtual DOM&#xff09;是一种优化手段&#xff0c;用于提高页面更新的效率。它是在内存中以JavaScript对象的形式维护的一份DOM树的拷贝&#xff0c;通过比较虚拟DOM树的变化并最小化实际DOM操作&#xff0c;从而减少页面重绘和重新布局的开销。 …

美容小程序:让预约更简单,服务更贴心

在当今繁忙的生活节奏中&#xff0c;美容预约常常令人感到繁琐和疲惫。为了解决这个问题&#xff0c;许多美容院和SPA中心已经开始采用美容小程序来简化预约流程&#xff0c;并提供更加贴心的服务。在这篇文章中&#xff0c;我们将引导您了解如何制作一个美容小程序&#xff0c…

2024 年 2 月 TIOBE 指数:最流行的 10 种编程语言

Go 进入了 TIOBE 指数的前 10 名&#xff0c;这是谷歌编程语言有史以来的最高位置。 在 2024 年 2 月的 TIOBE 软件最受欢迎的编程语言列表中&#xff0c;Python、C 和 C 保持了它们的领先地位&#xff08;图 A&#xff09;。TIOBE 的专有积分系统考虑了根据多种大型搜索引擎&…