python可变参数函数二阶导数公式_Python中函数的参数定义和可变参数

刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函数定义,这个*和**让人有点费解。其实只要把函数参数定义搞清楚了,就不难理解了。

先说说函数定义,我们都知道,下面的代码定义了一个函数funcA

def funcA():

pass

显然,函数funcA没有参数(同时啥也不干:D)。

下面这个函数funcB就有两个参数了,

def funcB(a, b):

print a

print b

调用的时候,我们需要使用函数名,加上圆括号扩起来的参数列表,比如 funcB(100, 99),执行结果是:

100

99

很明显,参数的顺序和个数要和函数定义中一致,如果执行funcB(100),Python会报错的:

TypeError: funcB() takes exactly 2 arguments (1 given)

我们可以在函数定义中使用参数默认值,比如

def funcC(a, b=0):

print a

print b

在函数funcC的定义中,参数b有默认值,是一个可选参数,如果我们调用funcC(100),b会自动赋值为0。

OK,目前为止,我们要定义一个函数的时候,必须要预先定义这个函数需要多少个参数(或者说可以接受多少个参数)。一般情况下这是没问题的,但是也有在定义函数的时候,不能知道参数个数的情况(想一想C语言里的printf函数),在Python里,带*的参数就是用来接受可变数量参数的。看一个例子

def funcD(a, b, *c):

print a

print b

print "length of c is: %d " % len(c)

print c

调用funcD(1, 2, 3, 4, 5, 6)结果是

1

2

length of c is: 4

(3, 4, 5, 6)

我们看到,前面两个参数被a、b接受了,剩下的4个参数,全部被c接受了,c在这里是一个tuple。我们在调用funcD的时候,至少要传递2个参数,2个以上的参数,都放到c里了,如果只有两个参数,那么c就是一个empty tuple。

好了,一颗星我们弄清楚了,下面轮到两颗星。

上面的例子里,调用函数的时候,传递的参数都是根据位置来跟函数定义里的参数表匹配的,比如funcB(100, 99)和funcB(99, 100)的执行结果是不一样的。在Python里,还支持一种用关键字参数(keyword argument)调用函数的办法,也就是在调用函数的时候,明确指定参数值付给那个形参。比如还是上面的funcB(a, b),我们通过这两种方式调用

funcB(a=100, b=99)

funcB(b=99, a=100)

结果跟funcB(100, 99)都是一样的,因为我们在使用关键字参数调用的时候,指定了把100赋值给a,99赋值给b。也就是说,关键字参数可以让我们在调用函数的时候打乱参数传递的顺序!

另外,在函数调用中,可以混合使用基于位置匹配的参数和关键字参数,前题是先给出固定位置的参数,比如

def funcE(a, b, c):

print a

print b

print c

调用funcE(100, 99, 98)和调用funcE(100, c=98, b=99)的结果是一样的。

好了,经过以上铺垫,两颗星总算可以出场了:

如果一个函数定义中的最后一个形参有 ** (双星号)前缀,所有正常形参之外的其他的关键字参数都将被放置在一个字典中传递给函数,比如:

def funcF(a, **b):

print a

for x in b:

print x + ": " + str(b[x])

调用funcF(100, c='你好', b=200),执行结果

100

c: 你好

b: 200

大家可以看到,b是一个dict对象实例,它接受了关键字参数b和c。

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

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

相关文章

windows找不到文件gpedit.msc_此电脑右键管理提示windows找不到文件的解决方法

也许当你右键点击此电脑管理时,也许会出现Windows找不到文件的提示,下面提供一些解决方法:1、首先按下“Windows”R组合键打开运行,在弹出的“运行“对话框中输入”compmgmt.msc“,点击”确定“;2、如果此时…

java序列化流_java 序列化流与反序列化流

一 对象序列化流ObjectOutputStreamObjectOutputStream 将Java对象的基本数据类型和图形写入OutputStream。可以使用ObjectInputStream读取(重构)对象。通过在流中使用文件可以实现对象的持久存储。注意:只能将支持 java.io.Serializable 接口的对象写入流中用于从流…

【spring boot】注解@ApiParam @PathVariable @RequestParam三者区别

1.ApiParam,就是用于swagger提供开发者文档,文档中生成的注释内容。 ApiOperation( value "编辑公告", notes "编辑公告", httpMethod "POST" )RequestMapping( value "/edit", method RequestMethod.POST…

Zookeeper Watch监听

概述 ZooKeeper -server host:port cmd args stat path [watch] ls path [watch] ls2 path [watch] get path [watch] watch监听有不同的类型,有监听状态的stat ,内容的get,目录结构的ls。 命令使用一次,只监听…

win10文件显示后缀名_win10系统,如何去除“此电脑” 里的6个多余文件夹

Windows系统从XP到win7,再到进化到如今的win10,在系统性能和使用便捷性方面,确实改进了很多,但是,金无赤足,没有完美的东西,总是有一些小细节让我们感觉不舒服,如如鲠在喉。比如我们下面看到的这…

ubuntu sun-java6-jre_在 Ubuntu Lucid 下请回 Sun Java6 Jre, 赶走 OpenJDK

Ubuntu Lucid 将 sun-java6-jre 系列包移出了源,java软件用 openjdk系列包提供支持。然而在某些软件(比如FreeRapid)的使用中,openjdk还是喜欢出一些莫名其妙的错误(比如栈溢出),因此考虑请回sun-java6-jre。具体方法很简单,首先添…

数字化工厂的五大系统_如何搭建以MES系统为核心的数字化工厂?

MES强调车间级的过程集成、控制和监控,以及合理地配置和组织所有资源。满足车间信息化需要,提高车间对随机事件的快速响应和处理能力,有力地促进企业信息化进程向车间层拓展。通过构建以“精益生产、智能制造”为特点的车间管理系统&#xff…

zookeeper数据结构及Znode类型

结构 1、层次化的目录结构,命名符合常规文件系统规范 2、每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识。 3、节点Znode可以包含数据和子节点(但是EPHEMERAL类型的节点不能有子节点)。 4、客户端应用可以在节点上设置监视器…

Windows10下手工强制清理删掉安装版的JRE8导致java.exe无法运行的解决办法

error:could not open xxxx.jvm.cfg 参考:https://blog.csdn.net/u010102493/article/details/18425267 1.搜索并删掉C:\Windows\System32下:java*.exe 仍然不行: 在WIN10的开始菜单搜索java C:\ProgramData\Oracle\Java下还有一些东西。 确认…

设计企业网站大纲_企业网站设计布局

网站制作一年350元,五站合一,快速建站 ,www.sxjcwzjs.com,只需进入网站右上角注册快速建站即可(需要电脑登录注册),需要联系我吧!电话:13752214574,微信号:m1078582894企业网站布局很…

python画子图_Python使用add_subplot与subplot画子图操作示例

本文实例讲述了Python使用add_subplot与subplot画子图操作。分享给大家供大家参考,具体如下:子图:就是在一张figure里面生成多张子图。Matplotlib对象简介FigureCanvas 画布Figure 图Axes 坐标轴(实际画图的地方)注意&#…

vue导入静态js_如何在vue js中加载静态图像

我有一个组件,它接受一个prop字符串,即一个url。它可以是远程图片,也可以是资产文件夹中的本地静态资产。目录结构:-assets/- logo.png-app.vue-components/-ImageTest.vue图像测试.vue{{imagelink}}export default {name: "ImageTest",props:{imagelink: String,},c…

Zookeeper JavaApi 增删改查

官网API http://zookeeper.apache.org/doc/r3.4.6/api/index.html JAR包 \zookeeper-3.3.6\lib\ jline-0.9.94.jar \zookeeper-3.3.6\lib\ log4j-1.2.15.jar \zookeeper-3.3.6\ zookeeper-3.3.6.jar Demo代码 注意代码中的注解 package hello.zookeeper.api;import java.uti…

搭建linux测试环境有什么用_谈谈现在搭建网站用什么程序好,选择对的程序是很重要的开头...

目前可以选择的网站程序还是蛮多的,开源的系统也很多,也有很多精品。更多时候,选择网站程序要结合网站的定位。说说dedecms,就是我们都知道的织梦程序,功能很齐全,作为一个简单的资讯门户网站,算…

python练习笔记——利用信号signal处理僵尸进程

1 signal处理僵尸进程的基于语法 利用信号signal处理僵尸进程的方法:signal(SIGCHLD,SIG_IGN),该方法也是第三种处理僵尸进程的方法。 SIGCHLD:子进程状态改变后产生此信号,父进程需要调用一个wait函数以确定发生了什么。 1&#…

Zookeeper应用:服务端上下线

需求 客户端感知服务器的上下线。 示意图 步骤 服务端: 1、所有机子向Zookeeper注册,注册znode为临时的。 2、有机子下线,连接断开后被Zookeeper自动删除,触发监听事件。 3、有机子上线,触发监听事件。 客户端&am…

哈希表查找失败的平均查找长度_你还应该知道的哈希冲突解决策略

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/5vxYoeARG1nC7Z0xTYXELA作者:Xuegui Chen哈希是一种通过对数据进行压缩, 从而提高效率的一种解决方法,但由于哈希函数有限,数据增大等缘故,哈希…

hive 创建访问用户_hive创建角色并赋权

1 角色管理命令1.1 创建角色创建一个新角色,需要 admin 用户执行CREATE ROLE role_name;1.2 删除角色删除一个角色,需要 admin 用户执行DROP ROLE role_name;1.3 显示当前角色显示用户当前角色列表SHOW CURRENT ROLES;1.4 设定角色如果指定了role_name&a…

python 正则替换_5分钟速览Python正则表达式常用函数!五分钟就掌握它!

导读:正则表达式是处理字符串类型的"核武器",不仅速度快,而且功能强大。本文不过多展开正则表达式相关语法,仅简要介绍python中正则表达式常用函数及其使用方法,以作快速查询浏览。01 Re概览Re模块是python的…

MFC鼠标OnMouseHover使用

ON_WM_MOUSEHOVER消息要生效,要配合ON_WM_MOUSEMOVE一起使用.代码如下:void CYuButton::OnMouseMove(UINT nFlags, CPoint point) {// TODO: 在此添加消息处理程序代码和/或调用默认值TRACKMOUSEEVENT tme { 0 };tme.cbSize sizeof(TRACKMOUSEEVENT);tme.dwFlags TME_HOVER…