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. Spring+MyBatis框架中sql语句的书写,数据集的传递以及多表关联查询

    在很多Java EE项目中,Spring+MyBatis框架经常被用到,项目搭建在这里不再赘述,现在要将的是如何在项目中书写,增删改查的语句,如何操作数据库,以及后台如何获取数据,如何进行关联查询,以 ...

  2. linux下ftp的配置

    最近公司要用到ftp,小菜鸡百度了一下教程,自己也总结一下 现在随便百度都是vsftpd的服务,所以这里我也是用vsftp 1.检测或安装vsftp 首先检查一下你的主机是否含有vsftp服务,关于r ...

  3. String()与 toString()

    我们知道String()与 .toString()都是可以转换为字符串类型,但是String()与 .toString()的还是有区别的 1..toString()可以将所有的的数据都转换为字符串,但 ...

  4. Html定位精要

    Html定位基础 Html的布局是文档流模型,块元素独占一行,内联元素并列一行. 相对定位 position: relative 相对于自己定位 不脱离文档流,元素原有位置被保留 绝对定位 posit ...

  5. JAVA 技术手册 卷1 第十四章『多线程』 读书摘要

    什么是线程 进程受CPU时间片的轮转调度,进而予人多任务并发的感觉. 线程在更低层次上扩展多任务概念,一个进程通常包含多个线程. 进程各自数据独立,而线程共享数据. 数据独立使进程相互通信变得繁难,共 ...

  6. 动态规划(DP)基础

    DP基础 简单dp 背包问题 记忆化搜索 简单dp 数字三角形 给一个数字构成的三角形,求从顶端走到底部的一条路径,使得路径上的和最大(或者最小). 1 2 3 6 5 4 Example_1 7 3 ...

  7. NodeJs + mongodb模块demo

    代码比较通俗易懂,但是我还是在这个过程中浪费了不少时间,也算是看到了nodejs中异步的一个小坑.未来的坑还有很多,慢慢找坑填坑吧. 参考资料如下: 1.断言模块 : https://nodejs.o ...

  8. java 判断String 是否为空

    StringUtils.isBlank(null) = true StringUtils.isBlank("") = true StringUtils.isBlank(" ...

  9. ypzl药品质量不合格数据库-excel自动排版

    原创: qq:231469242 import xlrdimport pandas,numpyimport matplotlib.pyplot as pltimport pandas as pd #参 ...

  10. CentOS个人目录下中文路径转英文路径

    CentOS个人目录下中文路径转英文路径 如果安装了中文版到CentOS之后,root目录及home目录下会出现中文到路径名,如"桌面"."文档"," ...