Python教程(14)——Python函数的入门学习

函数是什么?在编程中,函数是一段可重用的代码块,用于完成特定任务或执行特定操作。它可以接输入参数并返回一个值或执行一系列操作。函数可以帮助程序员将代码模块化,提高代码的可读性和可维护性。

函数通常包括以下组成部分:

  1. 函数名:用于标识函数,并可以通过函数名调用执行该函数。
  2. 参数:输入给函数的值,在函数内部可以使用参数进行操作或计算。
  3. 函数体:包含函数执行的代码块。在函数体中可以进行各种操作、计算、逻辑判断等任务。
  4. 返回值:函数可以返回处理结果,供调用者使用。

每种编程语言对于函数的语法规范可能所有不同,但是都是包含函数组成部分的。
在这里插入图片描述

Python函数组成

Python函数的定义通包括以下几个部分:

  1. 函数头部:使用关键字 def 开始,后跟函数名和一对圆括号 ( )。圆括号内可以包含函数的参数,多个参数之间用逗号分隔,最后在右括号)之后要加个冒号:无论是括号还是冒号一定都要是英文状态下的。
  2. 函数体:函数体是由函数的操作逻辑组成的代码块,函数体内的代码需要缩进,通常使用4个空格或制表符(Tab键)进行缩进。
  3. 函数返回值:函数可以返回一个值使用关键字 return 后跟要返回的值。

以下是一个简单的示例,展示了一个算两个数之和的函数:

def add_numbers(num1, num2):sum = num1 + num2return sumresult = add_numbers(5, 3)
print(result)  # 输出:8

在这个示例中,函数 add_numbers 接收两个参数 num1num2,计算它们的和并返回结果。通过调用 add_numbers(5, 3) 可以得到结果 8将结果赋值给变 result,最后打印 result 的值。

Python函数解释

上述的add_numbers是个非常简单的函数,但是初学者朋友如果不注意相关规则的话,可能会造成怀疑人生的结果。

正如Python函数的语法组成那样,Python是用def开头来定义一个函数的,然后空格后跟上函数名add_numbers,我们专业一点的叫法的话,叫函数定义,在使用一个函数之前,必须先定义,否则就会报语法错误。

比如我们像下面这样书写,就不行的,会一个NameError的错误。NameError: name 'add_numbers' is not defined

result = add_numbers(5, 3)def add_numbers(num1, num2):sum = num1 + num2return sumprint(result) 

接着加上括号,括号里面跟上参数名,这里的参数名我们称之为形式参数,简称形参,这个在编程当中是一个比较重要的概念,特别是在C语言当中。然后右括号后面加上一个冒号,后面就另起一行写函数体,当然在一些非常简单的函数体当中,可能直接跟在冒号后面,比如:

if a == 1: return 1

在leetcode编程中,这种写法也经常见到。

如果是超过一行的,一般都是另起一行写函数体。函数体内的代码需要缩进,通常使用4个空格或制表符进行缩进。这里要特别注意,在函数体中, 要不都用4个空格,要不就用制表符,千万不要混用 ,一个制表符又刚好等于4个空格,所以从表面上看确实是对齐了,对于没有编程经验的初学者来说,一旦混用,又不懂得利用搜索引擎的话,可能一个晚上你都会困在那里,百思不得其解。

混用的话,一般会报以下错误:

IndentationError: unindent does not match any outer indentation level


意思大概就是说你缩进不匹配,大概率就是制表符和空格混用了!但是如果你是用PyCharm等一些高级的IDE,可能这些IDE会自动帮你修正这些对齐的bug,而如果你是从其他编辑器复制代码到PyCharm中的,这些没有对齐的错误并不会自动的修正,还是需要你手动就纠正的,所以还是推荐大家尽量使用PyCharm编写Python代码。

Python函数类型

Python当中有各种类型的函数,像上面那种就是比较普通的自定义函数,顾名思义,就是自己定义的函数。在 Python 中,还有以下几种常见的函数类型。

内置函数

Python 提供了一些内置函数,可以直接使用,不需要导入任何模块,如 print()len()type() 等,

匿名函数

匿名函数也称为 lambda 表达式,是一种简洁的函数定义方式,通常用于一次性的简单函数。例如:

multiply = lambda x, y: x * y
result = multiply(3, 5)
print(result)  # 输出 15

闭包函数

闭包函数是指在一个函数内部定义了另一个函数,并且内部函数可以访问外部函数的变量。这种函数形式可以用来创建一些特定的函数,例如函数工厂或者装饰器。

def outer_function(x):def inner_function(y):return x + yreturn inner_functionadd_5 = outer_function(5)
result = add_5(3)
print(result)  # 输出 8

生成器函数

生成器函数使用 yield 关键字来定义,可以通过迭代器的方式逐步生成结果,而不是一次性生成所有结果。

def fibonacci():a, b = 0, 1while True:yield aa, b = b, a + bfib = fibonacci()
print(next(fib))  # 输出 0
print(next(fib))  # 输出 1
print(next(fib))  # 输出 1

这些是 Python 中常见的函数类型,每种类型都有不同的特点和用途,一些比较高级用法的函数,后面学到了我们在来讲,现在只需要了解下就可以了。

更多精彩内容,请关注同名公众:一点sir(alittle-sir)

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

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

相关文章

排序算法之归并排序

一、归并排序的形象理解 原题链接 示例代码 void merge_sort(int q[], int l, int r) {if (l > r) return;int mid l r >> 1;merge_sort(q, l, mid), merge_sort(q, mid 1, r);int k 0, i l, j mid 1;while (i < mid && j < r) //第一处if (q[i]…

003 linux 自动化构建工具-make/makefile

前言 本文将会向您介绍make/makefile的原理与操作 引入 首先先向您介绍linux的编译器gcc的编译过程&#xff1a; 预处理 预处理功能主要包括宏定义,文件包含,条件编译,去注释等。 预处理指令是以#号开头的代码行。 实例: gcc –E hello.c –o hello.i 选项“-E”,该选项的作…

8位微控制器上的轻量级SM2加密算法实现:C语言详细指南与完整代码解析

引言 在当今的数字化世界中&#xff0c;安全性是每个系统的核心。无论是智能家居、医疗设备还是工业自动化&#xff0c;每个设备都需要确保数据的安全性和完整性。对于许多应用来说&#xff0c;使用高级的微控制器或处理器可能是不切实际的&#xff0c;因为它们可能会增加成本…

iOS线上闪退问题解决方案

iOS线上闪退问题的收集工具是关键&#xff0c;它们可以帮助你及时发现和解决应用程序中的崩溃问题。以下是一些常用的iOS线上闪退问题收集工具及其使用方法&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合…

DSU ON TREE

DSU ON TREE DSU&#xff1a;并查集 DSU ON TREE&#xff1a;树上启发式合并 我也不知道为啥树上并查集就是树上启发式合并 启发式合并的思想是每次把小的往大的合并&#xff0c;也就是最大化利用已有的答案&#xff08;大的数组不用清空&#xff0c;在原基础上加上小的即可&…

3.wifi开发,网络编程

网络协议栈LwIP WiFi UDP Clinet编程 WiFi UDP Server编程 WiFi TCP Client编程 WiFi TCP Server编程 一。LWIP原理介绍&#xff0c;API介绍&#xff0c;文件结构 1.Lwip支持的协议 2.API 3.文件结构 1.api目录&#xff1a;应用程序接口文件。 2.arch目录&#xff1a;与硬件和…

机器学习笔记:Huber Loss

1 介绍 Huber Loss是回归问题中的一种损失函数&#xff0c;它结合了均方误差MSE和绝对误差MAE的特点。 Huber Loss在误差较小的时候是平方损失&#xff0c;而在误差较大的时候是线性损失。因此&#xff0c;它在处理有噪声的数据时&#xff0c;尤其是存在离群点的情况下&#x…

nginx反向代理vue项目

文章目录 前言一、创建站点1.添加站点2.添加ssl证书 二、反向代理vue项目1.添加反向代理2.更改vue项目配置3.修改反向代理配置 前言 项目描述&#xff1a;前端vue项目、后端Java项目、首页WordPress项目 客户要求&#xff1a;使用宝塔进行部署 需求描述&#xff1a;客户只有一…

一文彻底理解synchronized(通俗易懂的synchronized)

目录 一、什么是synchronized 二、synchronized的四种用法 2.1、修饰一个代码块 2.2、修饰一个方法 2.3、修饰一个静态的方法 2.4、修饰一个类 三、使用案例分析 3.1、修饰一个代码块 3.2、修饰一个方法 3.3、修饰一个静态的方法 3.4、修饰一个类 3.5 经典用法&…

蓝桥杯 题库 简单 每日十题 day8

01 扫雷 题目描述 在一个n行列的方格图上有一些位置有地雷&#xff0c;另外一些位置为空。 请为每个空位置标一个整数&#xff0c;表示周围八个相邻的方格中有多少个地雷。 输入描述 输入的第一行包含两个整数n&#xff0c;m。 第2行到第n1行每行包含m个整数&#xff0c;相邻整…

Winform直接与Wpf交互

Winform项目中&#xff0c;可以直接使用wpf中的自定义控件和窗体 测试环境&#xff1a; vistual studio 2017 window 10 一 winform直接使用wpf的自定义控件 步骤如下&#xff1a; 1 新建winfrom项目&#xff0c;名为WinFormDemo&#xff0c;默认有一个名为Form1的窗体…

OpenAI官方吴达恩《ChatGPT Prompt Engineering 提示词工程师》(4)推理/Inferring

推理/Inferring 推理是指模型将文本作为输入并执行某种分析的任务。这可以是提取标签、提取名称、理解文本的情感等任务。 例如&#xff0c;如果您想从一段文本中提取积极或消极的情感&#xff0c;在传统的机器学习工作流程中&#xff0c;您需要收集标签数据集、训练模型、确定…

关于表单快速开发低代码技术平台的内容介绍

运用什么样的表单快速开发软件平台可以实现高效率创收&#xff1f;随着科技的进步和飞速发展&#xff0c;专业的低代码技术平台已经走入了很多企业的办公职场中&#xff0c;它们灵活、轻量级、优质、高效、易维护等优势特点&#xff0c;可以高效助力广大企业提质增效&#xff0…

位移贴图的实现原理

在以前的文章中介绍过GLTF编辑器 &#xff0c; 编辑器可以对模型的各种材质纹理进行编辑修改&#xff0c;但是有一些新手用户可能对这些材质纹理不太了解&#xff0c;所以我收集了一些资料对这些材质纹理做一下详细的介绍&#xff0c;今天这篇文章主要是介绍位移贴图。 1、什么…

stm32之智能垃圾桶实战

之前用过51做过一个垃圾桶的小项目&#xff0c;这里用32重新搞了一下。视频的效果和之前一样&#xff0c;可参考这个垃圾桶效果 。 一、项目描述&#xff08;同51&#xff09; 项目主要是模拟不用手动打开垃圾桶盖&#xff0c;而进行自动操作。自动打开的条件如下&#xff1a…

【二叉树魔法:链式结构与递归的纠缠】

本章重点 二叉树的链式存储二叉树链式结构的实现二叉树的遍历二叉树的节点个数以及高度二叉树的创建和销毁二叉树的优先遍历和广度优先遍历二叉树基础oj练习 1.二叉树的链式存储 二叉树的链式存储结构是指&#xff0c;用链表来表示一棵二叉树&#xff0c;即用链来指示元素的逻辑…

OpenAI官方吴达恩《ChatGPT Prompt Engineering 提示词工程师》(3)摘要

摘要/ Summarizing 如何使用大模型来概括文本 环境准备 和&#xff08;①指南&#xff09;一样需要搭建一个环境 导入OpenAI、加载API密钥以及这个getCompletion辅助函数 import openai import osfrom dotenv import load_dotenv, find_dotenv _ load_dotenv(find_dotenv(…

点云从入门到精通技术详解100篇-单期点云的高斯曲率定位桥梁潜在损伤技术研究

目录 前言 国内外研究现状 三维激光扫描对桥梁损伤检测的研究现状 基于点云高斯曲率损伤检测的研究现状 柱体偏差检测技术研究现状 存在的问题 法向量约束高斯曲率的 TLS 桥面潜在损伤区域探测 2.1 高斯曲率探伤的基本理论 2.2 点云拓扑关系建立的方法比较 2.2.1 KD-…

OpenCV项目开发实战--进行高动态范围 (HDR) 成像--附C++与Python的实现源码

在本教程中,我们将学习如何使用以不同曝光设置拍摄的多张图像创建高动态范围 (HDR) 图像。本文最后将共享 C++ 和 Python 代码供读者下载。 什么是高动态范围 (HDR) 成像? 大多数数码相机和显示器都以 24 位矩阵的形式捕获或显示彩色图像。每个颜色通道有 8 位,因此每个通…

社区分享|MeterSphere变身“啄木鸟”,助力云帐房落地接口自动化测试

云帐房网络科技有限公司&#xff08;以下简称为“云帐房”&#xff09;成立于2015年3月&#xff0c;以“成为最值得信赖的税务智能公司”为愿景&#xff0c;运用人工智能、大数据等互联网技术&#xff0c;结合深厚的财税行业服务经验&#xff0c;为代账公司和中大型企业提供智能…