《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…

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 的一个分支。这使我们能够…

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

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

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…

从零开始-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验证用户身…

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…

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

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

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

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

WebGIS技术汇总

WebGIS系统通常都围绕地图进行内容表达&#xff0c;但并不是有地图就一定是WebGIS&#xff0c;所以有必要讨论下基于Web的地图API分类及应用场景。 Web上的Map API主要分类如下几类&#xff1a; Charts&#xff1a;以D3.js&#xff0c;Echarts等为代表。LBS&#xff1a;以高德…

Oracle 深入学习 Part 9: Storage Structure and Relationships(存储结构与关系)

在数据库管理系统&#xff08;DBMS&#xff09;中&#xff0c;Segment&#xff08;段&#xff09;、Extent&#xff08;区块&#xff09; 和 Block&#xff08;块&#xff09; 是描述数据库物理存储结构的三个重要概念。这些概念帮助理解数据库是如何在磁盘等存储设备上组织和管…

C语言实例之10求0-200内的素数

1. 素数 素数&#xff08;Prime number&#xff09;&#xff0c;也叫质数&#xff0c;是指在大于 1 的自然数中&#xff0c;除了 1 和它自身外&#xff0c;不能被其他自然数整除的数。例如 2、3、5、7、11 等都是素数&#xff0c;而 4 能被 2 整除、6 能被 2 和 3 整除&#x…

使用Python和Pybind11调用C++程序(CMake编译)

目录 一、前言二、安装 pybind11三、编写C示例代码四、结合Pybind11和CMake编译C工程五、Python调用动态库六、参考 一、前言 跨语言调用能对不同计算机语言进行互补&#xff0c;本博客主要介绍如何实现Python调用C语言编写的函数。 实验环境&#xff1a; Linux gnuPython3.10…

哈希C++

文章目录 一.哈希的概念1.直接定址法2.负载因子 二.哈希函数1.除法散列法 / 除留余数法2.乘法散列法3.全域散列法&#xff08;了解&#xff09; 三.处理哈希冲突哈希冲突&#xff1a;1.开放定址法&#xff08;1&#xff09;线性探测&#xff1a;&#xff08;2&#xff09;二次探…

SAR ADC系列15:基于Vcm-Base的开关切换策略

VCM-Based开关切换策略&#xff1a;采样~第一次比较 简单说明: 电容上下极板分别接Vcm&#xff08;一般Vcm1/2Vref&#xff09;。采样断开瞬间电荷锁定&#xff0c;进行第一次比较。 当VIP > VIN 时&#xff0c;同时 减小VIP 并 增大VIN 。P阵列最高权重电容从Vcm(1/2Vref)…

深度学习模型:循环神经网络(RNN)

一、引言 在深度学习的浩瀚海洋里&#xff0c;循环神经网络&#xff08;RNN&#xff09;宛如一颗独特的明珠&#xff0c;专门用于剖析序列数据&#xff0c;如文本、语音、时间序列等。无论是预测股票走势&#xff0c;还是理解自然语言&#xff0c;RNN 都发挥着举足轻重的作用。…