《Python基础》之函数的用法

一、简介

在 Python 中,函数是一段可重用的代码块,用于执行特定的任务。函数可以帮助你将代码模块化,提高代码的可读性和可维护性。 

函数的用途

  • 代码重用:通过函数,你可以将常用的代码块封装起来,避免重复编写相同的代码。

  • 模块化:函数可以将复杂的任务分解为更小的、可管理的模块。

  • 提高可读性:通过函数,你可以为代码块命名,使代码更易于理解和维护。

二、函数的用法以及性质

1、定义函数

# 使用python中的关键字 def
def 函数名(参数1,参数2...):函数体
  • 定义函数要用到python中的关键字 def ,其中函数的参数可以是一个,可以是多个,也可以没有。 

2、函数的特点

  • 函数不调用不执行
  • 定义函数必须在调用之前出现

3、函数的参数

(1)、参数的种类
  • 形式参数:指的是函数定义时,小括号中定义的参数
  • 实际参数:指的是将来调用函数时,实际传入进去的具体的值
(2)、参数的传值方式
  • 位置传参
def show1(a, b, c):print(f"a:{a},b:{b},c:{c}")   # a:11,b:22,c:33
show1(11, 22, 33)

        在调用函数时填的实参会按默认顺序给形参赋值 

 

  • 关键字传参(通过形参的名字传参)
def show1(a, b, c):print(f"a:{a},b:{b},c:{c}")
show1(b=100, c=200, a=300)

        调用函数时可以给形参赋值,这样即使顺序不对也可以完成赋值 

 

  • 混合传参
def show1(a, b, c):print(f"a:{a},b:{b},c:{c}")
show1(100, c=200, b=300)

         前两种方式的混合使用(一般很少用到) 

注意: 混合传参的时候,前面没有关键字的实参是会按照形参的位置来的,后面关键字传参可 以顺序不一样。

 

  • 默认值传参
def show1(a, b=100):

        在定义函数时可以给一些参数赋值,在调用参数时如果不对该参数进行赋值就会默认按照定义函数时赋的值进行运算。 

  • 动态传参

<1>、传入一个 * 的参数

def sum1(*num):
# 这里的num 是一个元组,接收若干个将来调用时传入的实参n = 0for i in num:n = n + iprint(f"总和为:{n}")
sum1(10, 20) # (10, 20)
sum1(10, 20, 30) # (10, 20, 30)
sum1(10, 20, 30, 40) # (10, 20, 30, 40)

 传参的内容,多个参数的类型可以是不一样的

<2>、传入两个 ** 的参数

def sum1(**num):print(num, type(num))
sum1(name='小明', age=18)
* : 表示传入的每一个单独的元素都被封装成一个元组
** : 表示传入的是一个一个的键值对,所有的键值对会被封装成一个字典
我们今后开发的时候,定义动态参数时,起名字是固定的,若一个*的动态参数,名字起为
*args, 若**的动态参数,名字起为**kwargs

              

4、函数的返回值(return)

注意:
 1、一个函数中如果没有写 return, 默认情况下,这个函数最后一句话会有一个 return None;
 2、一个函数中,如果遇到了return ,那么这个函数就结束了,函数中的后续代码不执行;
 3、一个函数中只能有一个 return;
4、 函数返回值 return 后面,要返回的类型可以是任意的类型;
 5、直接返回多个值,多个值之间使用英文逗号分隔,实际返回的内容是一个元组,可以用         多个变量分别接收;

 

5、函数的分类

函数根据参数和返回值可以分为:无参无返回值、无参有返回值、有参无返回值、有参有返回值

6、函数的嵌套

(1)、嵌套调用
def fun1():print("hello world")def fun2():return 100def fun3(a1, b1):fun1() # 调用fun1函数res1 = fun2() # 调用fun2函数return a1 + b1 + res1res2 = fun3(11,22)
print(res2)  

 

(2)、嵌套定义
def fun1():a = 10def fun2():print("hello world")print(a)fun2()fun1()

7、函数的作用域和变量

python 中,作用域分为两个区域
  • 函数外是一个作用域
  • 函数内部是一个作用域
python 中,变量分为两种
  • 全局变量:将变量定义在函数外
  • 局部变量:将变量定义在函数内部
注意:
1、局部作用域中可以使用到全局变量【可以使用函数外部定义的变量】;
           
2、函数与函数内部的作用域是相互独立的,不能互相调用函数内部创建的局部变量;
           
3、python中提供了一个关键字 global, 在函数内部定义一个全局变量,出了函数也是可以被访问到的。 如果函数内部有变量被global修饰,需要先调用该函数,让内存中出现这个变量,后续才能去使用。

8、补充知识

1、函数名也可以当作一个变量使用
2、函数名作为变量 可以存储在容器中,比如列表
3、可以将函数作为返回值使用

总结

函数是 Python 编程中的重要组成部分,通过函数,你可以将代码模块化、提高代码的可读性和可维护性。函数可以接受参数、返回值,并且具有局部作用域。掌握函数的定义、用途、特点和用法,将帮助你编写更高效、更清晰的 Python 代码。

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

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

相关文章

《Shader入门精要》透明效果

代码以及实例图可以看github &#xff1a;zaizai77/Shader-Learn: 实现一些书里讲到的shader 在实时渲染中要实现透明效果&#xff0c;通常会在渲染模型时控制它的透明通道&#xff08;Alpha Channel&#xff09;​。当开启透明混合后&#xff0c;当一个物体被渲染到屏幕上时&…

PICO 获取设备号 SN码

Unity版本 2020.3.42f1c1PICO SDK版本PICO Unity Integration SDK-3.0.5-20241105Pico设备pico 4ultra 注意 此api暂时只测试企业版本 pico 4ultra 代码 using Unity.XR.PICO.TOBSupport;private void Awake() {bool result PXR_Enterprise.InitEnterpriseService();Debug.L…

C++设计模式之组合模式实践原则

在实现组合模式时&#xff0c;为了确保符合软件设计原则&#xff0c;需要考虑以下几个重要方面&#xff1a; 1. 单一职责原则&#xff08;Single Responsibility Principle, SRP&#xff09; 考虑&#xff1a;组合模式中的每个类应只负责一个特定的任务。例如&#xff0c;Com…

D 型 GaN HEMT 在功率转换方面的优势

氮化镓 (GaN) 是一种 III-V 族宽带隙半导体&#xff0c;由于在用作横向高电子迁移率晶体管 (HEMT) 时具有卓越的材料和器件性能&#xff0c;因此在功率转换应用中得到越来越多的采用。 HEMT 中产生的高击穿电场 (3.3 MV/cm) 和高二维电子气 (2DEG) 载流子迁移率 (2,000 cm 2 /…

政安晨【零基础玩转各类开源AI项目】探索Cursor-AI Coder的应用实例

目录 Cusor的主要特点 Cusor实操 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; Cursor 是 Visual Studio Code 的一个分支。这使我们能够…

【Java从入门到放弃 之 Java程序基础】

Java程序基础 Java程序基础基本数据类型和变量数据类型变量赋值基本运算算术运算比较运算逻辑运算 Java程序基础 基本数据类型和变量 数据类型 对Java语言而言&#xff0c;有如下基本数据类型。 整数类型&#xff1a;有4种整型byte/short/int/long&#xff0c;它们占用的字…

AI-agent矩阵营销:让品牌传播无处不在

矩阵营销是一种通过多平台联动构建品牌影响力的策略&#xff0c;而 AI-agent 技术让这一策略变得更加智能化。AI社媒引流王凭借其矩阵管理功能&#xff0c;帮助品牌在多个平台上实现深度覆盖与精准传播。 1. 矩阵营销的优势 品牌触达更广&#xff1a;多平台联动可以覆盖不同用…

极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【五】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…

1- 9 C 语言面向对象

面向对象的基本特性&#xff1a;封装&#xff0c;继承&#xff0c;多态 1.0 面向过程概念 当我们在编写程序时&#xff0c;通常采用以下步骤&#xff1a; 1. 将问题的解法分解成若干步骤 2. 使用函数分别实现这些步骤 3. 依次调用这些函数 这种编程风格的被称作 面向过程…

中国科学院大学研究生学术英语读写教程 Unit7 Materials Science TextA 原文和翻译

中国科学院大学研究生学术英语读写教程 Unit7 Materials Science TextA 原文和翻译 Why Is the Story of Materials Really the Story of Civilisation? 为什么材料的故事实际上就是文明的故事&#xff1f; Mark Miodownik 1 Everything is made of something. Take away co…

Q Weights, K Weights, V Weights矩阵代表什么

目录 Q Weights, K Weights, V Weights矩阵代表什么 Q Weights(查询权重矩阵):理解任务 K Weights(键权重矩阵):打标签 V Weights(值权重矩阵):实际的信息内容 Q:在一个电影评论数据集里查询有关 “电影特效” 的内容。理解任务,数据集中找“特效” 相关的词汇(…

从零开始-VitePress 构建个人博客上传GitHub自动构建访问

从零开始-VitePress 构建个人博客上传GitHub自动构建访问 序言 VitePress 官网&#xff1a;VitePress 中文版 1. 什么是 VitePress VitePress 是一个静态站点生成器 (SSG)&#xff0c;专为构建快速、以内容为中心的站点而设计。简而言之&#xff0c;VitePress 获取用 Markdown…

TCP IP协议和网络安全

传输层的两个协议&#xff1a; 可靠传输 TCP 分段传输 建立对话&#xff08;消耗系统资源&#xff09; 丢失重传netstat -n 不可靠传输 UDP 一个数据包就能表达完整的意思或屏幕广播 应用层协议&#xff08;默认端口&#xff09;&#xff1a; httpTCP80 网页 ftpTCP21验证用户身…

Http 请求协议

HTTP的请求协议 请求数据格式&#xff1a; 请求行 请求数据的第一行&#xff0c;包含请求方式、资源路径、协议及版本。 请求头 从请求数据的第二行&#xff0c;以key: value的格式 常见的请求头 Host&#xff1a;请求的主机名&#xff0c;如&#xff1a;localhost:8080&#x…

mcu上一种利用伪随机数防止mac地址冲突的方法

一 前言 前段时间开发的一个带tcp功能的项目&#xff0c;出现了mac地址冲突的问题&#xff0c;领导让随机生成一个mac地址&#xff0c;因此研究了下随机数。 二 预研 1.硬随机数 硬随机数又叫真随机数&#xff0c;英文名称”true random number generator“,即通过硬件随机数…

英伟达发布 Edify 3D 生成模型,可以在两分钟内生成详细的、可用于生产的 3D 资源、生成有组织的 UV 贴图、4K 纹理和 PBR 材质。

英伟达发布 Edify 3D 生成模型&#xff0c;可以利用 Agents 自动判断提示词场景中需要的模型&#xff0c;生成后将他们组合为一个场景。 Edify 3D 可以在两分钟内生成详细的、可用于生产的 3D 资源、生成有组织的 UV 贴图、4K 纹理和 PBR 材质。 相关链接 论文&#xff1a;htt…

【二叉树】【2.1遍历二叉树】【刷题笔记】【灵神题单】

关注二叉树的三个问题&#xff1a; 什么情况适合自顶向下&#xff1f;什么时候适合用自底向上&#xff1f;一般来说&#xff0c;DFS的递归边界是空节点&#xff0c;什么情况下要额外把叶子节点作为递归边界&#xff1f;在什么情况下&#xff0c;DFS需要有返回值&#xff1f;什…

远程控制软件:探究云计算和人工智能的融合

在数字化时代&#xff0c;远程控制工具已成为我们工作与生活的重要部分。用户能够通过网络远程操作和管理另一台计算机&#xff0c;极大地提升了工作效率和便捷性。随着人工智能&#xff08;AI&#xff09;和云计算技术的飞速发展&#xff0c;远程控制工具也迎来了新的发展机遇…

腾讯云 AI 代码助手:产品研发过程的思考和方法论

一、文章摘要 本文将详细阐述 腾讯云 AI 代码助手的历史发展形态与产品整体架构&#xff0c;并从技术、研发方法论的角度分别阐述了产品的研发过程。 全文阅读约 5&#xff5e;8 分钟。 二、产品布局 AI 代码助手产品经历了三个时代的发展 第一代诸如 Eclipse、Jetbrains、V…

Qt实现窗口内的控件自适应窗口大小

前言&#xff1a;因为有时候窗口内的控件比较大&#xff0c;但是为了同时操作多个窗口&#xff0c;希望可以根据情况&#xff0c;在调整窗口大小时&#xff0c;控件能自适应大小&#xff0c;于是通过遍历整个界面内的控件&#xff0c;并在调整大小的事件中按比率调整控件大小实…