前言

上一篇主要介绍了Python函数的参数类型,本篇继续学习Python函数多类型传值。

目录

  • 前言
  • 目录
  • 软件环境
  • 参数的多类型传值
    • 向函数传递Tuple
    • 向函数传递List
    • 向函数传递Dictionary

软件环境

  • 系统

    • 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 input1print input2for var in input2:print varif __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 input1print xprint yif __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 input1print citiesprint nameprint ageif __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 input1print 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基本语法_函数_参数的多类型传值相关推荐

  1. Python:wordcloud.wordcloud()函数的参数解析及其说明

    Python:wordcloud.wordcloud()函数的参数解析及其说明 目录 wordcloud.wordcloud()函数的参数解析及其说明 wordcloud.wordcloud()函数的 ...

  2. python导入模块的语法结构_python学习第五讲,python基础语法之函数语法,与Import导入模块....

    python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 函数,就是一个代码块,这个代码块是别人写好的.我们调用就可以. 函数也可以称为方法. 1.函数语法定义 ...

  3. Python基本语法_函数属性 参数类型 偏函数的应用

    目录 目录 前言 软件环境 Python Module的程序入口 函数的属性 Python函数的创建 函数的参数 必备参数 缺省参数 命名参数 不定长参数 匿名参数 偏函数的应用 前言 Python除 ...

  4. python魔法方法与函数_在Python中画图(基于Jupyter notebook的魔法函数)

    这篇文章主要介绍了在Python中画图(基于Jupyter notebook的魔法函数),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 先展示一段相 ...

  5. python四大高阶函数_详谈Python高阶函数与函数装饰器(推荐)

    一.上节回顾 Python2与Python3字符编码问题,不管你是初学者还是已经对Python的项目了如指掌了,都会犯一些编码上面的错误.我在这里简单归纳Python3和Python2各自的区别. 首 ...

  6. python中怎么调用函数_浅谈Python中函数的定义及其调用方法

    一.函数的定义及其应用 所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的使用包含两个步骤 1.定义函数–封装独立的功能 2.调用函数–享受封装的成果 函数的作用:在开发时 ...

  7. python四大高阶函数_四大高阶函数

    目录 1. 匿名函数 在我们需要一个函数但又不想费神的去命名一个函数的场合下使用,这就是匿名函数 1 f = lambda x,y,z:x+y+z2 defF(x,y,z):3 return x+y+ ...

  8. 什么是python的内置函数_什么是python内置函数

    python的内置函数截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就是python提供给你直接可以拿来使用的所有函数.那今天我们就一起来认识一下python的 ...

  9. python调用c语言函数_从Python调用C函数

    python调用c语言函数 We can call a C function from Python program using the ctypes module. 我们可以使用ctypes模块从P ...

最新文章

  1. laravel-admin 使用记录(2) - 快速搭建 CURD
  2. 信息化及信息化的五个层次
  3. 搜狗发布全球首个手语AI合成主播,用技术造福听障人群
  4. 为何要离开?该怎么离开?今天来谈谈辞职
  5. ue编辑器拖拽上传图片_Typora + PicGo打造超好用的Markdown编辑器
  6. console修改 ajax,【快速】chrome中console下ajax访问后台
  7. XLT格式化XML那点事(C#代码中的问题解决)(二)
  8. Postgres外部表示例
  9. 【WPF】在MenuItem中下划线“_”显示不正常
  10. Windows Phone 8初学者开发—第9部分:Windows Phone 8模拟器概述
  11. Hive窗口函数的使用
  12. Lecture 2 Asymptotic Notation
  13. 完整的40页UI/UX作品集展示、简历模板、面试模板
  14. php手册经常见到,什么是“二进制安全”?
  15. AG9300|Type-C 转VGA数据转换器解决方案
  16. 学习记录3——PMSM数学建模——simulink内数学模型搭建以及仿真
  17. 轻松实现iMessage群发
  18. (图解)一步一步使用CPP实现深度学习中的卷积
  19. 阐明量子力学到底为何物?
  20. 基于FPGA交织的实现

热门文章

  1. vmboxcentos安装重启又要安装_Windows 10八月更新再遇尴尬:安装失败 或安装后随机重启...
  2. python中常用的序列化模块_Python常用模块之pickle——对象序列化
  3. mysql 时差查了13小时_Mysql 时间差了 14 或 13 小时 com.mysql.cj.jdbc.Driver
  4. 中国队刷新知识图谱“世界杯”,但点开冠军团队一看,我愣住了
  5. AI用50个三角形画出抽象版蒙娜丽莎,有股后现代的感觉了 | 谷歌大脑出品
  6. 挖矿让英伟达多赚了近3亿美元,老黄:又创纪录了
  7. 在Hinton看来是“宇宙答案”GPT-3,到LeCun这里却“对世界一无所知”
  8. 北大电池新研究登上Nature:3万次循环测试,性能衰减不到30%,大幅提高锂空电池性能...
  9. 为了故意刁难AI,科学家们制造了这1200个问题,超强AI被“打回原形”
  10. AngularJS学习日记(四)Service和Provider