第5章函数进阶 第5.1节 Python函数的位置参数、关键字参数精讲
前面第二章简单介绍了函数定义的语法,经过后面一系列的学习,函数有必要再次介绍一下相关内容。
一、 关于函数的语法
1. 语法
def 函数名([参数]):
函数文档字符串
函数体
2. 函数名:是必须符合Python名称规范要求的标识符,需要避免使用Python的关键字;
3. 参数:称为函数的形参,调用时传递的真实数据称为实参,函数的参数可以没有,也可以是多个甚至可变个数;
4. 函数文档字符串:在“Python语句的补充和修订”那节老猿已经介绍,是很有用的东西,对于提高代码的可读性和用户体验很有帮助,注意必须与函数体一样与函数定义行保持缩进,具体内容在此老猿不再赘述;
5. 函数体:定义函数具体的操作代码,如果需要返回值,必须使用return语句返回,唯一例外是生成器函数使用yield返回值。如果函数没有返回值,可以不使用return或return后不跟返回值或return None即可。
二、 函数的位置参数
函数的参数在调用时传递数据时,默认是按参数的位置顺序传值,即形参的顺序与实参的顺序逐一对应,这种参数的使用模式称为位置参数。位置参数是最常用的一种参数使用形式。
使用位置参数传递实参的情况下,要求有缺省值的参数放在无缺省值的参数后面,如果某个有缺省值的参数需要使用位置参数方式传递非缺省值,则需要确保该参数前面的所有参数都有实参传入。
>>> def cal(method,number1,number2): #使用位置参数传参
if method=='+':return number1+number2
elif method=='-':return number1-number2
else:return None
>>> cal('+',1,2)
3
>>> def cal(method='+',number1,number2): #带缺省值参数不能放在无缺省值参数的前面
if method=='+':return number1+number2
elif method=='-':return number1-number2
else:return None
SyntaxError: non-default argument follows default argument
>>> def cal(number1,number2,method='+'): #带缺省值参数放在无缺省值参数的后面
if method=='+':return number1+number2
elif method=='-':return number1-number2
else:return None
>>> cal(1,2)
3
>>> cal(1,2,'-')
-1
执行截图:
三、 函数的关键字参数
除了位置参数的函数参数使用方式,还有一种在函数调用时指定形参等于指定实参的参数使用模式,该模式称为关键字参数。关键字参数使用可以不按形参的顺序传递实参,系统按形参的名字确认实参传递给哪个参数。如:
def minus(minuend,subtractor): return minuend-subtractor #定义一个减法函数
minus(10,2) #结果为8
minus(2,10) #结果为-8
minus(subtractor=10,minuend=2) #结果为-8
四、 小结
位置参数和关键字参数都是函数调用传递参数的常规方法,两者在函数参数的使用与字符串格式化的format方法中的自动编号索引format方法和关键字参数方式的format方法处理机制非常类似。
在位置参数和关键字参数的使用上,需要注意在同一个函数定义中两者尽量不混用,一般情况下,只有可选带缺省值的参数多而无缺省值的位置参数比较少的情况下才混用。如果位置参数和关键字参数要混用,必须确保位置参数在前,关键字参数在后,这样解释器才能按照先用位置参数传值,再用关键字参数传值,没有出现的参数使用缺省值;
举例:
minus(subtractor=10,2)
#报语法错:SyntaxError: positional argument follows keyword argument
本节对Python函数的位置参数和关键字参数进行了详细介绍,函数及其参数的使用是Python开发中非常重要的内容,希望老猿介绍的内容能有助于大家理解函数的参数使用,接下来还将继续介绍函数参数相关的其他内容。
老猿Python(https://blog.csdn.net/LaoYuanPython)系列文章用于逐步介绍老猿学习Python后总结的学习经验,这些经验有助于没有接触过Python的程序员可以很容易地进入Python的世界。
欢迎大家批评指正,谢谢大家关注!
第5章函数进阶 第5.1节 Python函数的位置参数、关键字参数精讲的更多相关文章
- 第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器
第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器 编写spiders爬虫文件循环 ...
- 第4章 基础知识进阶 第4.1节 Python基础概念之迭代、可迭代对象、迭代器
第四章 基础知识进阶第十七节 迭代.可迭代对象.迭代器 一. 引言 本来计划讲完元组和字典后就讲列表解析和字典解析,但要理解列表解析和字典解析,就需要掌握Python的高级的类型迭代器,因此本节 ...
- 深入理解javascript函数进阶系列第一篇——高阶函数
前面的话 前面的函数系列中介绍了函数的基础用法.从本文开始,将介绍javascript函数进阶系列,本文将详细介绍高阶函数 定义 高阶函数(higher-order function)指操作函数的函数 ...
- day11.1函数进阶 列表集合 字典中的函数变量,函数作为形参
函数进阶 1.函数作为变量 a=123 name="gao" nums=[1,2,3] data=nums#指向同一个内存地址 #查看内存地址篇章 def func(): prin ...
- 深入理解javascript函数进阶系列第四篇——惰性函数
前面的话 惰性函数表示函数执行的分支只会在函数第一次调用的时候执行,在第一次调用过程中,该函数会被覆盖为另一个按照合适方式执行的函数,这样任何对原函数的调用就不用再经过执行的分支了.本文将详细介绍惰性 ...
- python开发函数进阶:命名空间,作用域,函数的本质,闭包,作用域方法(globales)
一,命名空间 #局部命名空间#全局命名空间#内置命名空间 #三者的顺序#加载顺序 内置命名空间(程序运行前加载)->全局命名空间(程序运行中:从上到下加载)->局部命名空间(程 ...
- python的函数介绍 位置参数 关键字参数 默认参数 参数组 *args **kwargs
1.数学意义的函数与python中的函数 数学意义的函数 y = 2*3+1 x =3 y =7 x是自变量,y是因变量 2.python中定义函数的方法 一个函数往往都是为了完成一个特定的功能而存在 ...
- 第十一篇 Python函数之定义&形参&实参&位置参数&关键字参数&可变长参数&默认参数
函数的定义:函数是为了完成某一特定功能的,函数是逻辑结构化和过程化的一种编程方法 函数的定义格式,函数一般都是有返回值的 #语法 #函数名要能反映其意义 def 函数名(参数1,参数2,参数3,... ...
- 二十 Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器
编写spiders爬虫文件循环抓取内容 Request()方法,将指定的url地址添加到下载器下载页面,两个必须参数, 参数: url='url' callback=页面处理函数 使用时需要yield ...
随机推荐
- AE(After Effects)的简单使用——记一次模板套用的过程
一.环境配置 操作系统:win10 64位 软件版本:AE16.11版 二.模板下载 可去 newcger 网站进行模板下载,常用都是免费的,很好用,很推荐 三.具体操作 1.模板素材替换 点击[文件 ...
- phpword读取内容和样式 生成新的内容
table样式还未读出 正在测试中, 目前有 rows cell textrun等样式 顺序不固定 可以设定 <?php require 'vendor/autoload.php'; use P ...
- Pycharm激活码(2020最新永久激活码)
如果下边的Pycharm激活码过期失效了的话,大家可以关注我的微信公众号:Python联盟,然后回复"激活码"即可获取最新Pycharm永久激活码! 56NPDDVEIV-eyJs ...
- egit版本对应关系。
egit版本对应关系. http://wiki.eclipse.org/EGit/FAQ#What_versions_of_Eclipse_does_EGit_target.3F
- c++中的几种函数调用约定(转)
C++中的函数调用约定(调用惯例)主要针对三个问题: 1.参数传递的方式(是否采用寄存器传递参数.采用哪个寄存器传递参数.参数压桟的顺序等): 参数的传递方式,最常见的是通过栈传递.函数的调用方将参数 ...
- linux 源码下载和在线查看网站
下载: https://www.kernel.org/ 查看: https://elixir.bootlin.com/linux/
- vue 切换主题(换肤)功能
一:先写好两个css样式放在static文件夹中 二:在index.html中添加css link链接 <link rel="stylesheet" id="sty ...
- cosbench使用方法
前言 cosbench的功能很强大,但是配置起来可能就有点不是太清楚怎么配置了,本篇将梳理一下这个测试的配置过程,以及一些测试注意项目,以免无法完成自己配置模型的情况 安装 cosbench模式是一个 ...
- Python生成csv中文乱码解决办法
前言 在Linux下面用python进行数据处理,然后输出为csv格式,如果没有中文一切正常,但是如果有中文,就会出现乱码的问题,本篇将讲述怎么处理这个问题 处理过程 原始代码 #!/usr/bin/ ...
- ubuntu安装软件自动交互
在ubuntu下安装软件过程中可能会出现需要你输入密码或者其他的一些交互类的操作,这样在脚本安装的时候就可能出现阻断,这个在ubuntu里面已经考虑到了这个情况,以前我在安装这个的时候,通过的是脚本传 ...