Python用函数实现代码复用

归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝
生命对某些人来说是美丽的,这些人的一生都为某个目标而奋斗!

目录

一、函数的定义和调用:

1.函数的定义

2.函数的调用

3. 函数的嵌套

二、函数的参数和返回值:

1.函数的参数

2.默认参数 

3.可变参数

4.用户的返回值 

5.lambda函数

三、Python 的内置函数: 

1.数学运算函数

2.字符串运算函数 

3.转换函数

4. 序列操作函数 


        在计算机语言中,函数是实现某一特定功能的语句集合。函数可以重复使用,提高了代码的可重用性;函数通常实现较为单一的功能,提高了程序的独立性;同一个函数,通过接收不同的参数,实现不同的功能,提高了程序的适应性。Python提供了很多内置函数,用户也可以定义和使用自己的函数。

一、函数的定义和调用:

1.函数的定义

        在 Python 中定义函数要使用def关键字,其语法格式如下:

        def funcname(paras):

        statements

        return [expression]

         关于函数定义说明如下
函数定义以 def关键字开头,后接函数名称和圆括号()。
paras 是函数的参数,放在函数名后面的圆括号内,参数之间用逗号分隔。
statements是函数体,函数体的前部可以选择性地使用字符串,用于说明函数功能

函数声明以冒号结束,函数体内需要缩进。
return 语句用于结束函数,将返回值传递给调用语句。不带表达式的return 返回 None 值
需要说明的是,如果函数的参数是多个,默认情况下,函数调用时,传人的参数和函数定义
时参数定义的顺序是一致的。

2.函数的调用

        函数通过函数名加上一组圆括号来调用,参数放在圆括号内,多个参数之间用逗号分隔。需要注意的是,Pyton 中的所有语句都是解释执行的,def也是一条可执行语句,使用函数时,要求函数的调用必须在函数定义之后。另外,在 Python 中,函数名也是一个变量,如果 return 语句没有返回值,则函数值为 None.

3. 函数的嵌套

        函数的嵌套可以从嵌套定义和嵌套调用两方面理解,但通常情况下,嵌套是指函数的嵌套定义。

        函数的嵌套定义指的是在函数内部定义的函数,但内嵌的函数只能在该函数内部使用,闭包应用了函数的嵌套定义。

        函数的嵌套调用是指在一个函数的内部调用其他函数的过程。嵌套调用是模块化程序设计的基础,合理划分不同的函数,有利于实现程序的模块化。

二、函数的参数和返回值:

1.函数的参数

        在定义函数时,参数表中的参数称为形式参数,也称形参。调用函数时,参数表中提供的参数称为实际参数,也称实参。Python中的变量保存的是对象的引用,调用函数的过程就是将实参传递给形参的过程。函数调用时,实参可分为位置参数和赋值参数两种情况。

        函数调用时,默认情况下,实参将按照位置顺序传递给形参。

        通常情况下,函数调用时,实参默认采用按照位置顺序的方式传递函数。如果参数很多,按位置传递参数的方式可读性较差。

        参数值的类型是指函数调用时,传递的实际参数是基本数据类型还是组合数据类型。参数类型不同,在函数调用后,参数值的变化也是不同的。
基本数据类型的变量在函数体外,是全局变量,作为实际参数时,是将常量或变量的值传递给形参,是一种值传递的过程,实参和形参是两个独立不相关的变量,因此,实参值一般是不会改变的。

        列表、元组、字典等组合数据类型的变量用作函数参数时,这些变量在函数体外,是全局量。形参和实参之间传递的只是组合数据类型变量的地址(引用),如果在函数内部修改了参数的值,参数的地址是不发生改变的,这种修改将影响到外部的全局变量。

2.默认参数 

        定义函数时,可以给函数的形式参数设置默认值,这种参数被称为默认参数。当调用函数的时候,由于默认参数在定义时已被赋值了,所以可以直接忽略,而其他参数是必须要传人值的。

        如果默认参数没有传人值,则直接使用默认值;如果默认参数传入了值,则使用传人的新值替代。

3.可变参数

        在 Python 的函数中,可以定义可变参数。可变参数指的是在函数定义时,该函数可以接受任意个数的参数,参数的个数可能是1个或多个,也可能是0个。可变参数有两种形式,参数名称前加星号(*)或者加两个星号(**)。定义可变参数的函数语法格式如下:
def funname(formal_args,*args,**kwargs)
        在上面的函数定义中,formal args 为定义的传统参数,代表一组参数,*args 和**kwargs 为可变参数。函数传入的参数个数会优先匹配 formal args参数的个数,*args 以元组的形式保存多余的参数,**kwargs 以字典的形式保存带有指定名称形式的参数,这种参数也称为关键字参数。

        调用函数的时候,如果传入的参数个数和 formal args 参数的个数相同,可变参数会返回空的元组或字典;如果传入参数的个数比 formal args 参数的个数多,可以分为如下两种情况:如果传入的参数没有指定名称,那么*args会以元组的形式存放这些多余的参数;如果传入的参数指定了名称,如score=90,那么**kwargs 会以字典的形式存放这些被命名的参数。

4.用户的返回值 

        用户可以为函数指定返回值,返回值可以是任意数据类型,return[expression]语句用于退出函数、将表达式值作为返回值传递给调用方。不带参数值的retum语句返回None。

5.lambda函数

        lambda 函数是 Python中的匿名函数,该函数实质上是一个lambda 表达式,是不需要使用 def关键字定义的函数,lambda函数的语法格式如下
lambda parameters:expression

        其中,parameters是可选的参数表,通常是用逗号分隔的变量或表达式,即位置参数。expression是函数表达式,该表达式中不能包含分支或循环语句。expression 表达式的值将会作为lambda 函数的返回值。

        lambda 函数的应用场景是定义简单的、能在一行内表示的函数,返回一个函数类型。Python 提供了很多函数式编程的特性,例如 map、reduce、fiter、sorted 等函数都支持函数作为参数,lambda 函数也可以很方便地应用在函数式编程中。

三、Python 的内置函数: 

1.数学运算函数

与数学运算相关的常用 Python 内置函数如表 6.1所示

 

2.字符串运算函数 

字符串作为一种最常用的数据类型,它提供了大小写转换、查找替换、拆分合并等函数

3.转换函数

转换函数主要用于不同数据类型之间的转换,常见的内置转换函数如表 6.2所示。

4. 序列操作函数 

        序列作为一种重要的数据结构,包括字符串、列表、元组等,表6.3中的函数主要针对列表元组两种数据结构。

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

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

相关文章

云时代【7】—— 存储卷

云时代【7】—— 存储卷 四、Docker(四)存储卷1. 存储卷(1)定义(2)分类 2. 相关指令(1)管理卷 VolumeA. 创建方式方式一:docker volume方式二:docker run -v …

Mybatis plusSwagger代码生成器

Mybatis plus 1.查询没找到请求参数 Parameter pageNum not found. Available parameters are [arg1, arg0, param3, param1, param2, username] 原因: Mapper文件中都要加上 Param("pageNum") Select("SELECT * FROM user where username like #{u…

Java进阶-IO(2)

话接上回,继续java IO部分的学习。上一次说完了字节流的读写数据,这次介绍一下字符流的读写数据。 一、字符流及其读/写数据 1、字符流 1.1 概述 1)背景 由于字节流操作中文不是特别方便,所以java就提供了字符流。 字符流字节…

AXI4—FULL

文章目录 手册解读AXI—FULL协议特性AXI—FULL架构信号描述代码编写手册解读 AXI—FULL协议特性 支持的主要功能: 数据通道与地址通道分离支持不对齐传输,使用数据掩码实现突发传输只需要一个突发基地址读写通道分离AXI—FULL架构 关于读操作 关于写操作

SpringMVC自定义视图解析器

/** * 使用View接口完成请求转发|重定向 * 解释: * SpringMVC的官方,提供了一个叫做View的接口,告诉开发人员 * DispatcherServlet底层会调用View接口的实例化对象中的逻辑方法 * 来完成对应的请求转发和重定向。 * 使用: * 1. 单元方法的返回值为View接…

把Anaconda添加进环境变量的方法(解决pip识别不到环境的问题)

找到你的Anaconda的安装根目录 比如我的是在:C:\ProgramData\Anaconda3 那么只需要将以下目录添加进环境变量即可: C:\ProgramData\Anaconda3C:\ProgramData\Anaconda3\ScriptsC:\ProgramData\Anaconda3\Library\binC:\ProgramData\Anaconda3\condabin…

取送货问题(Pickup and Delivery Problem)

取送货问题及其变体 广义取送货问题(General Pickup and Delivery Problems,GPDP)可以分为两类: Vehicle Routing Problems with Backhauls,VRPB:从配送中心(depot)取货运输货物到客…

备战蓝桥杯---动态规划的一些思想1

话不多说,直接看题: 目录 1.双线程DP 2.正难则反多组DP 3.换个方向思考: 1.双线程DP 可能有人会说直接贪心:先选第1条的最优路径,再选第2条最优路径。 其实我们再选第1条时,我们怎么选会对第2条的路径…

在线开源免费问卷调查系统

在线开源免费问卷调查系统 平台简介 本项目旨在提供一个简单易用的问卷调查平台,帮助用户创建、分享问卷,并收集、分析调查数据。我们希望能够为各行各业的调查需求提供一种高效、便捷的解决方案。 项目特点 用户友好:清晰直观的用户界面…

华为数通方向HCIP-DataCom H12-821题库(多选题:21-40)

第21题 管理员在配置 VRRP 时,下面哪些不是必须配置的? A.抢占模式 B.抢占延时 C.虚拟IP 地址 D.虚拟路由器的优先级 【参考答案】ABD 【答案解析】 VRRP的作用之一是提供一个虚拟的IP地址,用作默认网关,用来实现冗余和故障转移。因此,配置虚拟IP地址是必须的。华为设备vr…

深入sizeof与strlen

一、sizeof与strlen的对比 sizeofstrlensizeof是单目操作符strlen是库函数,使用需要包含头文件string.hsizeof计算操作数所占用的内存,单位是字节strlen是求字符串长度,统计的是\0之前字符的个数不关注内存中存放什么数据 关注内存总是否有\0…

数据结构开篇

目录 一. 如何学好数据结构二. 基本概念和术语2.1 区分数据、数据元素、数据项、数据对象2.2 数据结构2.2.1 逻辑结构2.2.2 存储结构 2.3 数据类型和抽象数据类型2.4 抽象数据类型的实现 \quad 一. 如何学好数据结构 勤于思考;多做练习;多上机;善于寻求帮助;不怕困难&#xff…