python函数的使用

一、函数的定义

Python使用保留字def定义一个函数,形式如下:

def   <函数名>(<参数列表>):

      <函数体>

      return <返回值>

函数的调用过程与C语言类似。

关于一中特殊的函数——匿名函数:使用lambda,

匿名函数是将函数名作为函数结果返回,语法格式如下:

<函数名>=lambda(<参数列表>)

等价于下面的形式:

def    <函数名>(<参数列表>):

      return    <表达式>

通俗来讲,lambda适用于简单、能够用一行表示完的函数,具体实例如下:

>>>f=lambda    x,y : x*y

>>>type(f)

>>>f(3,5)

22

二、函数的参数传递

一、可选参数和可变数量参数

1.可选参数:

有些函数在定义时,它的参数存在一个默认值,因此在调用时可以传入参数,也可以不传入参数,不传入参数时,使用它的默认值作为它的值,实例如下:

>>>def  func(a,b=3):

              print(a*b)

>>>func(5)

15

>>>func(5,4)

20

可见,第一次调用时,没有传入第二个参数,因此参数b默认为3,3*5=15

第二次调用传入了b为4,4*5=20

2.可变数量参数

通过在参数前加星号(*)来实现,且带星号的参数只能放在参数列表的最后。

在调用时,这些(0到多个)参数作为元组被传入函数,实例如下:

>>>def    func(a,*b):

                for   n  in  b:

                         a+=n

                return   a

>>>func(1,2,3,4,5)

15

在这个例子中,输入的参数为1,2,3,4,5,其中,a为数字1,b为元组(2,3,4,5)(元组:可理解为一组元素)  

3.参数的位置和名称传递

一般按照参数的位置传递,即函数定义中形参的位置和传入参数位置一一对应,例如,函数定义为:

def      fun(a,b,c,d)中,调用函数时,fun(1,3,5,6),表示传入的参数a=1,b=3,c=5,d=6,

如果参数很多,这种方式的可读性就会变差,因此出现了第二种方式:按照形参名称输入参数,这种方式参数之间的顺序可以随意调整,仍以def      fun(a,b,c,d)为例,其调用方式可以变成:

fun(b=3,c=5,a=1,d=6)达到相同的效果。

4.函数可以没有return,没有return时,没有返回值,return也可以返回多个值,使用元组保存。

5.在函数中定义的变量称为局部变量,仅在函数内部存在,函数结束后,局部变量将不存在。

全局变量是在函数外定义的变量,一般没有缩进,在程序执行过程中全过程有效。

在函数中,对于简单类型的变量如果不使用关键字global来声明一个全局变量,那么在函数中即使使用了与函数外一个全局变量名称相同的变量,也不会对全局变量造成影响。

而对于列表等类型的组合数据类型的全局变量,如果函数内部没有真实的创建同名变量,则该函数可以直接使用并修改全局变量的值,如果函数内部真实创建了一个同名变量,则对该变量的操作不会影响到全局变量。

三、函数的递归

函数调用自己本身的方式称为递归,最简单的递归实例就是计算一个数的阶乘。

该实例代码如下(计算n的阶乘):

def    fact(n):if  n == 0:return  1else:return  n*fact(n-1)

 

这个函数中,很容易看出在第五行它对自身的调用,也是递归中比较容易理解的一个实例。

递归的两个关键特征,1是存在一个或多个基例,基例是确定的表达式,不需要再次递归;2是所有递归链都以基例结尾。

四、Python的68个内置函数

abs()id()round()exec()memoryview()
all()input()set()enumerate()next()
any()int()sorted()filter()object()
asci()len()str()format()property()
bin()list()tuple()frozenset()repr()
bool()max()type()getattr()setattr()
chr()min()zip()globals()slice()
complex()oct()bytes()hasattr()staticmethod()
dict()open()delattr()help()sum()
divmod()ord()bytearray()isinstance()super()
eval()pow()callable()issubclass()vars()
float()print()classmethod()iter()__import()__
hash()range()compile()locals()
hex()reversed()dir()map()

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

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

相关文章

月薪2W的软件测试工程师,到底是做什么的?

在生活中&#xff0c;我们常常会遇到以下几种窘迫时刻&#xff1a; 准备骑共享单车出行&#xff0c;却发现扫码开锁半天&#xff0c;车子都没有反应&#xff1b;手机导航打车&#xff0c;却发现地图定位偏差很大&#xff0c;司机总是跑错地方&#xff1b;买个水&#xff0c;却…

使用flask_limiter限制接口访问速率的方法

flask_limiter 目录 flask_limiter1.简介2.安装3.初始化4.装饰器用法5.limit用法 1.简介 这里简单介绍了一些使用flask_limiter的方法。具体详细可参考官方文档 https://flask-limiter.readthedocs.io/en/stable/ 2.安装 pip install flask_socketio3.初始化 from flask i…

Redis实战之-分布式锁-redission

一、分布式锁-redission功能介绍 基于setnx实现的分布式锁存在下面的问题&#xff1a; 重入问题&#xff1a;重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中&#xff0c;可重入锁的意义在于防止死锁&#xff0c;比如HashTable这样的代码中&#xff0c;他的方法都…

面试高频知识点:1集合 1.1HashSet集合的特点

HashSet&#xff08;哈希集合&#xff09;是Java集合框架中的一种实现Set接口的类&#xff0c;它具有以下特点&#xff1a; 无序性&#xff1a; HashSet不保证元素的顺序&#xff0c;即元素在集合中的存储顺序与它们的插入顺序无关。这是因为HashSet使用哈希表来存储元素&#…

​第14节-高质量简历写作求职通关-在线测试

在线测试主要包括性格测试、综合能力测试、技能测试三类 性格测试 性格测试主要用于考察个人与工岗位的匹配程度 考察内容包含性格、能力、动机、价值观等&#xff0c;考察形式一般为给出相应的工作场景&#xff0c;让你选择最喜欢或者最不喜欢的答案 技能考试 这类测试一般是针…

SpringMVC第一天

简介 SpringMVC技术与Servlet技术功能等同&#xff0c;均属于web层开发技术 SpringMVC是一种基于java实现的MVC模型的轻量级Web框架 优点 使用简单,开发便捷(相比于Servlet) 灵活性强 入门案例 第一步、导入SpringMVC与Servlet坐标 <?xml version"1.0" encod…

(Bean工厂的后处理器入门)学习Spring的第七天

一 . Bean工厂的后处理器入门 : 直接上图 BeanDefinitionRegistyPostProcessor 为 BeanFactoryProcessor的子接口 , 前者先执行(图里只有Bean工厂的后处理器第一个类型) 如下图 : 这两个接口可改变两个Map(BeanDefinitionMap , singletonObject)里的信息 (黑马只讲了BeanFact…

打造更智能的应用 - 机器学习和Andorid

打造更智能的应用 - 机器学习和Andorid 一、关于机器学习和Andorid二、使用 Gemini 让您的 Android 应用如虎添翼2.1 Gemini API2.2 Android AICore 三、现成可用的还是自定义的机器学习3.1 机器学习套件 SDK 的常见用户流3.2 高性能自定义机器学习 四、机器学习套件 SDK&#…

透明拼接屏生产商:如何选择合格供应商

随着透明拼接屏市场的不断扩大&#xff0c;越来越多的生产商加入其中。对于需求方而言&#xff0c;选择一家合格的生产商至关重要。本文将围绕如何选择透明拼接屏生产商展开讨论&#xff0c;同时结合对尼伽OLED显示屏的了解&#xff0c;为您推荐这一领域的优质供应商。 一、透明…

鸿蒙开发笔记(二十二): 页面路由(router),组件导航 Navigation, Tabs

1. 页面路由 router 页面路由指在应用程序中实现不同页面之间的跳转和数据传递。HarmonyOS提供了Router模块&#xff0c;通过不同的url地址&#xff0c;可以方便地进行页面路由&#xff0c;轻松地访问不同的页面。本文将从页面跳转、页面返回和页面返回前增加一个询问框几个方…

和平精英如何针对伏地魔

我的办法是开启颜色反转 一般安卓手机有这种功能 比如我是橘子系统4.0 橘子系统永远得神。 开启颜色反转 进入设置–快捷与辅助/更多设置–无障碍/辅助功能–颜色反转–打开开关即可。 注&#xff1a;颜色反转即增强显示内容的对比度&#xff0c;使对低对比度内容识别力差的人…

【JavaScript】正则表达式

文章目录 正则表达式一、语法二 、修饰符三、方括号四、元字符五、 量词六、RegExp对象方法七、支持正则的String的方法九 、正则表达式演示总结 正则表达式 正则表达式用于对字符串模式匹配及检索替换 一、语法 // 语法 var pattnew RegExp(pattern,modifiers); // 或者更简…

Linux开机自动挂载window密码有转义字符的共享文件夹

文章阅读操作时间在5分钟左右&#xff0c;耐心看可以节约你们找废料的时间&#xff0c;看完相信可以解决你们的问题&#xff01;&#xff01;&#xff01;&#xff01;项目上遇到需要自动挂载windows共享盘到linux系统中&#xff0c;由于windows密码有英文逗号(,)&#xff0c;被…

基于Pytorch做深度学习,但是代码水平很低,应该如何学习呢?

PyTorch是一个Python程序库&#xff0c;有助于构建深度学习项目。它强调灵活性&#xff0c;并允许用深度学习领域惯用的Python来表示深度学习模型。它的易用性使得它在研究社区中有了早期的使用者&#xff0c;并且在第1次发布之后的几年里&#xff0c;它已经成为应用程序中使用…

sql 查询时间范围内的数据

要查询特定时间范围内的数据&#xff0c;您可以使用 SQL 中的 BETWEEN 运算符。以下是一个示例查询&#xff0c;它从名为 your_table 的表中检索在 start_date 和 end_date 之间创建的所有记录&#xff1a; SELECT * FROM your_table WHERE created_date BETWEEN start_date AN…

机器学习实验报告——EM算法

目录 一、算法介绍 1.1算法背景 1.2算法引入 1.3算法假设 1.4算法原理 1.5算法步骤 二、算法公式推导 2.1数学基础 2.2EM算法推导 三、算法实现 3.1关于EM聚类 3.2EM工具包的使用 3.3 实例测试 四、算法讨论 4.1EM算法的优缺点 4.2EM算法的应用 4.3对于EM算法…

信息安全概述

信息安全&#xff1a;防止任何对数据进行未授权访问的措施&#xff0c;或者防止造成信息有意无意泄漏、破坏、丢失等问题的发生&#xff0c;让数据处于远离危险、免于威胁的状态或特性。 网络安全&#xff1a;计算机网络环境下的信息安全。 信息安全现状及挑战 数字化时代威…

7.12、中间人攻击(ARP欺骗)

一、ARP协议原理 地址解析协议(Address Resolution Protocol&#xff0c;ARP)&#xff0c;负责把目的主机的IP 地址解析成目的MAC地址&#xff0c;地址解析的目标就是发现逻辑地址与物理地址的映射关系。网络中的计算机、交换机、路由器等都会定期维护自己的ARP缓存表。 为什么…

笨蛋学设计模式行为型模式-备忘录模式【22】

行为型模式-备忘录模式 8.9备忘录模式8.9.1概念8.9.2场景8.9.3优势 / 劣势8.9.4备忘录模式可分为8.9.5备忘录模式8.9.6实战8.9.6.1题目描述8.9.6.2输入描述8.9.6.3输出描述8.9.6.4代码 8.9.7总结 8.9备忘录模式 8.9.1概念 ​ 备忘录模式允许在不暴露对象实现细节的情况下捕获…

140 反装链表

问题描述&#xff1a;给你单链表的头指针和两个整数left和right&#xff0c;其中left<right.请你反转从位置left到right位置的链表节点&#xff0c;返回反转后的链表。三指针求解&#xff1a;首先定义一个指针指向反转链表前的那一个位置pre&#xff0c;然后找到反转链表最后…