当前位置: 首页 > news >正文

Python_函数

        函数是带名字的代码块,可以完成指定的功能。如果需要在程序中重复多次执行某个任务,可以直接调用函数即可。这样就可以避免程序代码的冗余,减少代码量,方便维护。

一、 定义函数的格式:
def function_name(参数1,参数2,参数3......):
代码块
二、函数的形参和实参:函数定义时的参数为形参,在函数调用时赋予的参数为实参; 例如:
Python_函数
三、函数传参讲解
1.位置参数
场景说明:当实参较少,函数在调用时易于知道函数中参数的位置及定义,可以使用该方式。一般用的较多。
说明:位置参数就是函数调用时传入的实参要与函数定义时的形参位置(先后顺序)上一 一对应;例如上面的函数调用时,分别用下面两种方式来进行,1.def get_info(‘陈晨’,'湖北'),2.def get_info('湖北',‘陈晨’)。1表示陈晨来自湖北,2则表示湖北来自陈晨,完全不同,如下图所示:
Python_函数
另外,该种方式除了要求形参和实参的位置(先后顺序)一 一对应外,还要求实参和形参的数量完全相同,否则将会报错;
2.关键字参数
场景说明:当函数中的参数较多,且在每次调用时,参数的顺序较多,不方便记忆,此时建议使用关键字参数的方式进行传参。
说明:关键字参数是指在函数调用时使用键值对的方式来进行制定参数的值,例如:1.get_info(name='陈晨',address ='湖北'),2.get_info(address ='湖北',name='陈晨');两种方式结果完成相同。
Python_函数
即:关键字参数是通过参数名来定义参数值的,与位置无关。
3.默认参数
场景说明:当函数在调用时,大多情况下,某些参数的值不变,此时为了方便,不用每次对这些值进行传值,可以默认为固定的值,有且当需要更改时才进行传值,这些固定的值即为默认参数。
说明:默认参数是位置参数和关键字参数的结合形式,默认参数必须放在最后,其他参数按照位置参数的规则进行传参。现在对上面的例子进行改进(增加一个用户的年龄),如下图所示:
Python_函数
如果在实际使用中发现,百分之七十以上的用户都来自湖北,此时就可以使用默认值,函数定义如下图所示:
Python_函数
这样,以后在调用时,如果该用户是来自湖北,就可以对address不进行传参;如果该用户不是来自湖北,在进行传参,分别如下图所示:
Python_函数
Python_函数
4.任意多参数
场景说明:在某些复杂的项目中,某些函数的参数数量不能事先确定,此时就可以定义成任意多的参数形式,该种模式是参考了位置参数和关键字参数而进一步得到的。我们通过元组来存放事先未知的类似位置参数的参数,通过字典来存放事先未知的键值对(关键字参数),格式如下所示:
Python_函数
注意:如果要让函数接受不同类型的参数,必须在函数中定义任意数量实参的形参放在最后。Python将会先匹配位置实参和关键字参数,再将余下的位置实参收集到元组中,将关键字参数收集到字典中。即:此时的参数顺序:位置参数,关键字参数,元组,键值对,其中某种类型的参数可以不存在(不存在就忽略),但整体的顺序不能变。
Python_函数
四、函数返回值
说明:函数在调用时,绝大数情况下需要得到某个结果返回给调用的对象,此时将需要使用函数返回值了,函数返回值需要使用return关键字。注意:一旦使用了return,函数后面的部分将不再执行;若在函数中没有使用return,返回的将是一个None对象。
函数返回的值可以是任意形式的类型,包括:数字,字符串,列表、元组、字典等。

转载于:https://blog.51cto.com/10836356/2082586

相关文章:

  • POJ 2392 Space Elevator(多重背包,排序)
  • ubuntu17.04中启动tnsorboard过程
  • BZOJ3601 一个人的数论
  • 亚马逊推出FreeTime Android应用程序,开放适合儿童资源
  • SpaceX发射机密间谍卫星,系与美国防部签订的第一单合作
  • 无人机给你送餐了,快来签收!
  • 作为“云计算”的延伸,“雾计算”只是一种炒作吗?
  • RT-Thread的线程(任务)处理 rt_thread_create/rt_thread_init区别
  • 命令收集
  • 为实现全局化产品线布局,瑞芯微宣布旗下芯片RK3399 Linux系统开源
  • mongodb--安装和初步使用教程
  • WIFI渗透从入门到精通
  • Webscan360的防御与绕过
  • 装饰器
  • vue属性用法
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 5、React组件事件详解
  • Android优雅地处理按钮重复点击
  • hadoop集群管理系统搭建规划说明
  • interface和setter,getter
  • Js基础知识(一) - 变量
  • linux安装openssl、swoole等扩展的具体步骤
  • Python3爬取英雄联盟英雄皮肤大图
  • rabbitmq延迟消息示例
  • React系列之 Redux 架构模式
  • 前端面试之闭包
  • 前嗅ForeSpider采集配置界面介绍
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 用mpvue开发微信小程序
  • 自定义函数
  • 大数据全解:定义、价值及挑战
  • #mysql 8.0 踩坑日记
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (转)socket Aio demo
  • .net core控制台应用程序初识
  • .net core使用ef 6
  • .NET6实现破解Modbus poll点表配置文件
  • .NET构架之我见
  • .Net小白的大学四年,内含面经
  • @RequestBody与@ResponseBody的使用
  • @staticmethod和@classmethod的作用与区别
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [AI]文心一言出圈的同时,NLP处理下的ChatGPT-4.5最新资讯
  • [Android] Android ActivityManager
  • [C++]四种方式求解最大子序列求和问题
  • [CISCN2019 华东南赛区]Web4
  • [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c