python系列均基于python3.4环境

1、位置传递和关键字传递

  • 代码示例
#位置传递
def fun(a,b,c):
print("a: {0}, b: {1}, c: {2}".format(a,b,c)) fun(1,2,3) #参数传递,位置传递
fun(c=3,a=1,b=2) #关键字传递,位置可以打乱
fun(1,c=3,b=2,) #关键字传递和位置传递混合,位置参数需要在关键字参数之前
  • 运行结果
a: 1, b: 2, c: 3
a: 1, b: 2, c: 3
a: 1, b: 2, c: 3
  • 结果分析:

(1)关键字传递是根据每个参数的名字传递参数。关键字并不用遵守位置的对应关系。

(2)关键字传递可以和位置传递混用。但位置参数要出现在关键字参数之前。

  • 代码示例2:参数默认值
def fun2(a,b,c=100):
print("a: {0}, b: {1}, c: {2}".format(a,b,c)) fun2(1,2) #传递2个值,c没有被赋值,所以c将使用默认值
fun2(1,2,3) #c被赋值为1,将不使用默认值
  • 运行结果
a: 1, b: 2, c: 100
a: 1, b: 2, c: 3
  • 结果分析:

(1)如果该参数最终没有被传递值,将使用该默认值。

2、包裹位置传递

  • 代码示例
def func(*name):
print(type(name))
print(name) func(1,2,3)
func(5,6,7,1,2,3)
  • 运行结果
<class 'tuple'>
(1, 2, 3)
<class 'tuple'>
(5, 6, 7, 1, 2, 3)
  • 结果分析:

(1)两次调用,尽管参数个数不同,都基于同一个func定义。在func的参数表中,所有的参数被name收集,根据位置合并成一个元组(tuple)。

(2)name是包裹位置传递所用的元组名,在定义func时,在name前加*号。

3、包裹关键字传递

  • 代码示例
def func(**dict):
print(type(dict))
print(dict) func(a=1,b=9)
func(m=2,n=1,c=11)
  • 运行结果
<class 'dict'>
{'b': 9, 'a': 1}
<class 'dict'>
{'n': 1, 'm': 2, 'c': 11}
  • 结果分析

(1)dict是一个字典,收集所有的关键字,传递给函数func。参数dict是包裹关键字传递所用的字典,在dict前加**。

4、解包裹(包裹和解包裹并不是相反操作,是两个相对独立的过程。)

  • 代码示例
#解包裹
def func(a,b,c):
print(a,b,c) args = (1,2,3)
func(*args) dict = {'a':1,'b':2,'c':3}
func(**dict)
  • 运行结果
1 2 3
1 2 3
  • 结果分析:

(1)*和**,也可以在解包裹的时使用。

(2)在传递tuple时,让tuple的每一个元素对应一个位置参数。在调用func时使用*,把args拆成分散的三个元素,分别传递给a,b,c。

(3)在传递词典dict时,让词典的每个键值对作为一个关键字传递给func。

5、结论

  • 在定义或者调用参数时,参数的几种传递方式可以混合。基本原则是,先位置,再关键字,再包裹位置,再包裹关键字。

6、附:学习参考

python--基础学习(五)参数位置传递、关键字传递、包裹传递及解包裹的更多相关文章

  1. Python基础学习五

    Python基础学习五 迭代 for x in 变量: 其中变量可以是字符串.列表.字典.集合. 当迭代字典时,通过字典的内置函数value()可以迭代出值:通过字典的内置函数items()可以迭代出 ...

  2. Python基础学习五 内置模块

    time 模块 1 >>> import time 2 >>> time.time() 3 1491064723.808669 4 >>> # t ...

  3. 【Python基础学习五】列表,元祖,字典

    1.列表(list) 列表是Python的一种内置数据类型,list是一种有序的集合,可以随时添加和删除其中的元素,就像动态数组一样.获取list中的元素用角标获取,角标可以使用正角标,也可以使用负角 ...

  4. Python基础学习五 内置函数

    1.函数补充: 1)函数返回值return可以有多个 2)补充示例: nums = [0,1,2,3,4,5,6,7,8] #如何将list里面的元素变为字符串类型 new_nums = [str(x ...

  5. python基础学习10

    python基础学习 内容概要 文件内光标的移动 文件数据修改 函数简介 函数语法结构 内容详情 文件内光标的移动 with open(r'路径','r',encoding='utf8') as f: ...

  6. python基础——函数的参数

    python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...

  7. (一)python基础学习

    根据廖雪峰老师的python教程写一些学习总结! Python基础学习 1.使用list和tuple (1)list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时 ...

  8. Day1 Python基础学习

    一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...

  9. Day1 Python基础学习——概述、基本数据类型、流程控制

    一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...

  10. Python基础学习总结(六)

    8.函数 函数是带名字的代码块,用于完成具体的工作.def函数定义,指出函数名.定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参 ...

随机推荐

  1. VIM编辑器简单总结

    第一讲小结  1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键.         h (左移)       j (下行)       k (上行)     l (右移)  2. ...

  2. django request对象和HttpResponse对象

    HttpRequest对象(除非特殊说明,所有属性都是只读,session属性是个例外)HttpRequest.scheme 请求方案(通常为http或https)HttpRequest.body 字 ...

  3. JQuery对id中含有特殊字符的转义处理

    转载--http://www.jb51.net/article/41192.htm <div id="a[]">kkkkkk</div> <scrip ...

  4. 对dom的理解

    js对dom的操作可以理解为: 增.删.改.查 获取对象:查 对象操作:增,修,删 内容操作:innerHTML,innerText等 事件操作:mouse,key 样式操作:id,tag,class ...

  5. Iptables防火墙NAT地址转换与端口转发

    开启系统转发功能: [root@localhost /]# vim /etc/sysctl.conf # Generated by iptables-save v1.4.7 on Thu May 12 ...

  6. 【Beta】Scrum03

    Info 时间:2016.12.01 21:30 时长:15min 地点:大运村1号公寓5楼楼道 类型:日常Scrum会议 NXT:2016.12.04 21:30 Task Report Name ...

  7. Python Day7

    概述 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 静态方法 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法 ...

  8. 跟随 Web 标准探究DOM -- Node 与 Element 的遍历

    写在前面 这篇没有什么 WebKit 代码的分析,因为……没啥好分析的,在实现里无非就是树的(先序DFS)遍历而已,囧哈哈哈……在WebCore/dom/Node.h , WebCore/dom/Co ...

  9. 【转载】使用Pandas对数据进行筛选和排序

    使用Pandas对数据进行筛选和排序 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas对数据进行筛选和排序 目录: sort() 对单列数据进行排序 对多列数据进行排序 获取金额最小前10项 ...

  10. 将十六进制色值转换成Color

    在给Background赋值时,除了自带的Red,Blue,Black等,可以通过以下方法赋予其他颜色. 主要是将Hex转换成ARGB(A:alpha,表示透明度.R:Red.G:Green.B:Bl ...