Python基本语法_函数_参数的多类型传值
前言
上一篇主要介绍了Python函数的参数类型,本篇继续学习Python函数多类型传值。
目录
软件环境
- 系统
- UbuntuKylin 14.04
- 软件
- Python 2.7.4
- IPython 4.0.0
参数的多类型传值
一般而言,形参和实参的数量要一致。但是当实参为序列数据类型时,我们可以将多个实参传递到形参中。
我们可以在实参列表中以 * 或者 ** 标识符来限制传入的实参必须为 Tuple/List 或 Dict 的类型对象。
向函数传递Tuple
其实不定长参数本质是将冗余的实参转换为Tuple数据类型后再传递给函数。下面的例子传递了一个Tuple类型实参给函数,和使用不定长参数效果是一样的。需要注意的是,不定长参数需要放到函数形参列表的后端,而Tuple类型形参可以随意放置。
In [33]: %pycat func1Test.py
#!/usr/bin/env python
#Filename:func1Test.py
import sys
def printYourEnter(input1,input2):
print input1
print input2
for var in input2:
print var
if __name__ == '__main__':
enter1 = raw_input("Ple enter your living cities:")
enter2 = raw_input("ple enter your name:")
enter3 = raw_input("Ple enter your age:")
tuple1 = (enter2,enter3)
printYourEnter(enter1,tuple1) # 这里没有限制实参类型,可以传入任意类型对象
In [34]: run func1Test.py
Ple enter your living cities:BJ
ple enter your name:Jmilk
Ple enter your age:23
BJ
('Jmilk', '23')
Jmilk
23
注意:向函数传度Tuple还有一种形式:
In [91]: %pycat tupleTest.py
#!/usr/bin/env python
#Filename:tupleTest.py
def test(x,y):
print x*y
if __name__ == '__main__':
t = (2,3)
test(*t) # 限制只能传入 Tuple 类型对象
In [92]: run tupleTest.py
6
在调用函数的时候,使用 * 标识符:标识将 t 元组中的元素以迭代的方式传递给形参。但是这种时候要求元组元素的个数与形参的个数要一致。
向函数传递List
向函数传递List类型对象,与传递Tuple类型对象类似。
In [61]: %pycat func1Test.py
#!/usr/bin/env python
#Filename:func1Test.py
def printYourEnter(input1,x,y):
print input1
print x
print y
if __name__ == '__main__':
enter1 = raw_input("Ple enter your living cities:")
enter2 = raw_input("ple enter your name:")
enter3 = int(raw_input("Ple enter your age:"))
li1 = [enter2,enter3]
printYourEnter(enter1,*li1)
In [62]: run func1Test.py
Ple enter your living cities:BJ
ple enter your name:Jmilk
Ple enter your age:23
BJ
Jmilk
23
向函数传递Dictionary
想函数传递Dic数据类型需要注意下面几点:
1.形参名与dic中的key相同,形参会自左往右的匹配第一个与自己同名的key,并将此key映射的value传递到形参。
2.若有形参在dic中并没有找到匹配的key,则会报错。
3.若dic中有多个同名的key,则自右往左的优先级来匹配。
4.形参与dic的key:value顺序无关。
注意:若dic中有key不能与形参匹配时,需要人为的指定dic中key给形参,并传递其value给形参,否则会报错。本质是将dic中的value值先取出来再传递到函数形参。
functionName(dic[x][,...])
Example:
In [45]: %pycat func1Test.py
#!/usr/bin/env python
#Filename:func1Test.py
def printYourEnter(input1,cities,name,age):
print input1
print cities
print name
print age
if __name__ == '__main__':
enter1 = raw_input("Ple enter your living cities:")
enter2 = raw_input("ple enter your name:")
enter3 = int(raw_input("Ple enter your age:"))
dic = {'cities':enter1,'name':enter2,'age':enter3}
printYourEnter('a',**dic)
In [46]: run func1Test.py
Ple enter your living cities:BJ
ple enter your name:Jmilk
Ple enter your age:23
a
BJ
Jmilk
23
当限制向函数传递一个dic数据类型时,在调用函数时要使用 ** 来标识是一个映射,即传递一个字典类型的对象。而且在函数定义时,函数的形参必须与字典的Key一致,才可以实现将字典的value传递给函数中对应的形参。
也可以写成下面这种形式:
In [49]: %pycat func1Test.py
#!/usr/bin/env python
#Filename:func1Test.py
def printYourEnter(input1,dic):
print input1
print dic['cities']
print dic['name']
print dic['age']
if __name__ == '__main__':
enter1 = raw_input("Ple enter your living cities:")
enter2 = raw_input("ple enter your name:")
enter3 = int(raw_input("Ple enter your age:"))
dic = {'cities':enter1,'name':enter2,'age':enter3}
printYourEnter('a',dic)
In [50]: run func1Test.py
Ple enter your living cities:BJ
ple enter your name:Jmilk
Ple enter your age:23
a
BJ
Jmilk
23
Jmilk
Python基本语法_函数_参数的多类型传值的更多相关文章
- python学习第五讲,python基础语法之函数语法,与Import导入模块.
目录 python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 1.函数语法定义 2.函数的调用 3.函数的文档注释 4.函数的参数 5.函数的形参跟实参 6.函 ...
- Python基本语法_函数属性 & 参数类型 & 偏函数的应用
目录 目录 前言 软件环境 Python Module的程序入口 函数的属性 Python函数的创建 函数的参数 必备参数 缺省参数 命名参数 不定长参数 匿名参数 偏函数的应用 前言 Python除 ...
- 多测师讲解python _函数中参数__高级讲师肖sir
函数中讲解参数: 形参和实参的认识 函数无参数的调用 函数单个参数的调用 函数多个参数的调用 # #调试函数给默认参数传新值,则函数使用新值 # 注意:当多种参数同时出现在函数中,默认参数要放在最后的 ...
- python基础语法5 函数定义,可变长参数
函数 1.什么是函数 函数就是一种工具. 可以重复调用 2.为什么要用函数 1.防止代码冗(rong)余 2.代码的可读性差 3.怎么用函数 1.定义函数-->制造工具 2.调用函数--> ...
- Oracle学习总结_day03_day04_条件查询_排序_函数_子查询
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day03_条件查询_排序_函数 清空回收站: PUR ...
- python学习笔记(3)--函数、参数、变量、递归
1.函数基本语法和特性 背景摘要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏出了所有的知识量吗,写出了以下代码 whi ...
- python基础语法_9-0函数概念
http://www.runoob.com/python3/python3-function.html 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代 ...
- python之列表作为函数的参数
函数参数为 列表或者字典 传递一个列表,例如 [1, 2, 3] 将此传给函数get_sum() 求出 各个元素之和 传递一个字典,打印出key/value的对应关系表: #!/usr/bin/env ...
- python学习笔记之函数的参数
函数的参数有位置参数和关键字参数,位置参数一定要在关键字参数的前面,位置参数的优先级是高于关键字参数的,否则会报错 def my_abs(a,b): print(a) print(b) my_abs( ...
随机推荐
- 七,ingress及ingress cluster
目录 Service 类型 namespace 名称空间 Ingress Controller Ingress Ingress-nginx 进行测试 创建对应的后端Pod和Service 创建 Ing ...
- MMU功能解析、深入剖析、配置与使用
MMU = memory management unit 1.把虚拟地址转化成物理地址,防止地址冲突 2.访问权限管理 MMU把一个虚拟地址的20位到31位作为取出来,建立 一张表,叫做transla ...
- 模拟赛小结:2018 China Collegiate Programming Contest Final (CCPC-Final 2018)
比赛链接:传送门 跌跌撞撞6题摸银. 封榜后两题,把手上的题做完了还算舒服.就是罚时有点高. 开出了一道奇奇怪怪的题(K),然后ccpcf银应该比区域赛银要难吧,反正很开心qwq. Problem A ...
- ubuntu下usb抓包方法步骤--usbmon
开发或者调试USB设备相关的工具或者驱动,一个调试的利器就是usbmon抓包. 在ubuntu下使用步骤如下: 1 运行命令 sudo mount -t debugfs none /sys/ke ...
- 更新protobuf
sudo pip install --upgrade protobuf sudo apt-get install libprotobuf-dev protobuf-compiler这个不知道是什么问题 ...
- 红帽Linux故障定位技术详解与实例(4)
红帽Linux故障定位技术详解与实例(4) 在线故障定位就是在故障发生时, 故障所处的操作系统环境仍然可以访问,故障处理人员可通过console, ssh等方式登录到操作系统上,在shell上执行 ...
- mahout从入门到放弃--安装(1)
1.稀里糊涂下载 我的集群是hadoop 2.7.3 ,本来想找到对应的mahout版本,但是没有找到.本着安全原则,mahout最新版本是0.14.0,回退一个版本使用0.13.0 mahout地址 ...
- nginx在一个服务器上配置两个项目,并通过两个不同的域名访问
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序设计师Igor Sysoev所开发,其特点是占有内存少,并发能力强. 话不多说,先从最基 ...
- Eclipse中SVN分支与合并
一.创建分支 Eclipse中利用svn插件创建分支,如下图 分支创建完毕,查看svn资源库中可以看到,分支信息: 二.分支合并主干 1.切换到分支,如图 切换: 2.修改分支信息 在pojo中新增T ...
- element-ui 弹出添加拖拽功能
1.新建dialog.js文件2.在main.js 中引入dialog.js import ‘./utils/dialog.js’3. 使用:<el-dialog v-dialogDrag&g ...