Day5 - 07 函数的参数-参数组合
在Python中定义函数,可以使用这五种参数进行组合。
但是参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数
print(a,b,c,pp,kw)
dd = [9,10,12,14,15,17,19,20]
dk = {'q':99, 'p':88}
f1(*dd,**dk)
print(a,b,c,job,hh)
dw = (1,2,3)
ww ={'job':'jj','hh':'HH'}
f2(*dw,**ww)
def f3(a,b,c,*pp,host,words,**kw):
print(a,b,c,pp,host,words,kw)
pp1 = (1,2,3,4,5,6,7,8,9,0)
pp2 = {'host':'HH', 'words':'WW'}
pp3 = {'oo':'oooo', 'ppp':'pppppp'}
pp4 = {'host':'HH', 'words':'WW', 'oo':'oooo', 'ppp':'pppppp'}
f3(*pp1,**pp2,**pp3)
f3(*pp1,**pp4)
1 2 3 (4, 5, 6, 7, 8, 9, 0) HH WW {'oo': 'oooo', 'ppp': 'pppppp'}
实际上,对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数时如何定义的。
练习:
以下函数允许计算两个数的乘积,请稍加改造,变成可接收一个或多个数并计算乘积:
def product(x, y):
return x * y
def pro(*x,y=1):
s = 1
for i in x:
s = i * s
print( s*y )
Day5 - 07 函数的参数-参数组合的更多相关文章
- Day5 - 05 函数的参数-关键字参数
可变参数可以传入任意个参数,并在函数调用时自动组为一个tuple,而关键字参数允许传入任意个携带参数名的参数,这些关键字参数在函数内部自动组为一个dict. >>> ...
- Day5 - 03 函数的参数-位置参数和默认参数
位置参数 调用函数时,传入函数的参数,按照位置顺序依次赋值给函数的参数.#计算乘方的函数 def power(x, n): s = 1 ...
- Python函数中的参数(二)
当使用混合特定的参数匹配模型时,Python将会遵循以下有关顺序的法则: 1.在函数调用中,参数必须以这样的顺序出现:任何位置参数(Value).任何关键字参数(name = Value)和*sequ ...
- 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针
您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...
- 百万年薪python之路 -- 函数的动态参数
1.函数的动态参数 1.1 动态接收位置参数 在参数位置用*表示接受任意参数 def eat(*args): print('我想吃',args) eat('蒸羊羔','蒸熊掌','蒸鹿尾儿','烧花鸭 ...
- 【Java学习笔记】函数的可变参数
package p2; public class ParamterDemo { public static void main(String[] args) { int sum1 = add(4,5) ...
- Python函数中的参数(一)
函数传递参数时的简要关键点: 1.参数的传递是通过自动将对象赋值给本地变量名来实现的.函数参数在实际中只是Python赋值的一个实例.因为引用是以指针的形式实现的,所有的参数实际上都是通过指针进行传递 ...
- ios开发@selector的函数如何传参数/如何传递多个参数
不同的类会有不同的传递方式,参数名也不尽相同.如果是传单个参数的就不用集合,如果是传多个参数可以用类似nsarray,nsdictionary之类的集合传递.看下面例子: 例子1: 通过NSTimer ...
- 给setTimeout和setIntreval函数添加回调参数
setTimeout和setInterval是两个很常见的计时函数.在以前,他们只接收两个参数,我们无法直接向他们的回调函数中添加参数,如果需要实现添加多个参数,可以在外层多嵌一层来实现类似的功能.现 ...
随机推荐
- 4.Spring Boot web开发
1.创建一个web模块 (1).创建SpringBoot应用,选中我们需要的模块: (2).SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来 (3).自己编 ...
- ThreadPoolExecutor源码分析-面试问烂了的Java线程池执行流程,如果要问你具体的执行细节,你还会吗?
Java版本:8u261. 对于Java中的线程池,面试问的最多的就是线程池中各个参数的含义,又或者是线程池执行的流程,彷佛这已成为了固定的模式与套路.但是假如我是面试官,现在我想问一些更细致的问题, ...
- kali 安装redis
wget http://download.redis.io/releases/redis-2.8.3.tar.gz 下载 tar xzf redis-2.8.3.tar.gz ...
- webug第三关:你看到了什么?
第三关:你看到了什么? 右键源码 扫描到test目录
- addslashes()
addslashes() 函数返回在预定义字符之前添加反斜杠的字符串. 作用:防止sql注入
- PDF文档工具:pdfFactory快照功能详解
pdfFactory的快照功能,是通过一种类似截图的方式,将文档中的内容,如标题.图片.段落.文字等进行剪切的功能.剪切后的内容会转化为文本框的形式,我们可以对其进行加边框.旋转等编辑处理,但不能对其 ...
- Java进阶专题(十七) 系统缓存架构设计 (上)
前言 我们将先从Redis.Nginx+Lua等技术点出发,了解缓存应用的场景.通过使用缓存相关技术,解决高并发的业务场景案例,来深入理解一套成熟的企业级缓存架构如何设计的.本文Redis部分总结 ...
- Centos7安装vscode
CentOS7 安装vscode 最近在Linux环境下写几个程序时发现用vim时总出现一点问题,配置了vim也还是不太习惯,因此就安装了vs ...
- 通过python基于netconf协议获取网络中网元的配置数据,助力企业网络控制自动化轻松实现!
摘要:在当今信息化时代,大多数企业都需要网络支撑企业的ICT运行,提升企业运行效率,针对企业网络中的网元设备(包括交换机,路由器,防火墙等),很多企业希望根据自身的业务特点定制网络管理,比如可以实现网 ...
- Java基础教程——Scanner类
Scanner属于java.util包. java.util包是Java内置的一个工具包,其中包含一系列常用的工具类,如处理日期.日历.集合类: 如果要使用到该包中的类,必须显式引入包名:import ...