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( ...
随机推荐
- Python名称空间与作用域
什么是名称空间? 比如下图的长方形代表内存,在这个内存里我要设置一个变量100,那么这个变量得有个门牌号,就叫他a吧,但其实变量不是这么存储的,他其实的存储方式是这样的,他会有一个名称空间,这个名称空 ...
- 关于ORACLE事务处理的一些笔记
这是2013年在看ORACLE概念手册的时候的一些笔记,现在整理如下(可能跟其他一些文章的内容有重复): 20131012 周六 oracle概念手册中文版 第4章 事务管理 事务具有原子 ...
- POJ - 2689 Prime Distance (区间筛)
题意:求[L,R]中差值最小和最大的相邻素数(区间长度不超过1e6). 由于非素数$n$必然能被一个不超过$\sqrt n$的素数筛掉,因此首先筛出$[1,\sqrt R]$中的全部素数,然后用这些素 ...
- 【The 13th Chinese Northeast Collegiate Programming Contest H 题】
题目大意:NOIP2018d1t1 支持 M 次区间查询答案和区间修改操作. 题解: 首先考虑不带区间修改的情况.从左到右进行考虑,发现对于第 i 个数来说,对答案的贡献仅仅取决于第 i-1 个数的大 ...
- linux学习:【第4篇】之nginx
一.知识点回顾 临时:关闭当前正在运行的 /etc/init.d/iptables stop 永久:关闭开机自启动 chkonfig iptables off ll /var/log/secure # ...
- python1-集合、函数(全局变量与局部变量)
集合(set) # s=set('hello')# print(s)## s=set(['alex','alex','sb'])# print(s) # s={1,2,3,4,5,6} #添加# s. ...
- golang之运算符
目录 一.golang之运算符 1. 算术运算符 2. 关系运算符 3. 逻辑运算符 4. 位运算符 5. 赋值运算符 一.golang之运算符 Go 语言内置的运算符有:(比python少了一个成员 ...
- Acwing-99-激光炸弹(二维前缀和)
链接: https://www.acwing.com/problem/content/101/ 题意: 一种新型的激光炸弹,可以摧毁一个边长为 R 的正方形内的所有的目标. 现在地图上有 N 个目标, ...
- Codeforces Round #608 (Div. 2) D. Portals
链接: https://codeforces.com/contest/1271/problem/D 题意: You play a strategic video game (yeah, we ran ...
- 【leetcode】1187. Make Array Strictly Increasing
题目如下: Given two integer arrays arr1 and arr2, return the minimum number of operations (possibly zero ...