定义函数的时候,在参数前加了一个 * 号,函数可以接收零个或多个值作为参数。返回结果是一个元组。

传递零个参数时函数并不报错,而是返回一个空元组。但以上这种方法也有局限性,它不能收集关键字参数。

对关键字参数进行收集的另一种 收集参数 机制:使用两个星号 ( ** ) ,用法同上。最后返回一个以参数名为键、参数值为键值的字典。

* 和 ** 是可以一起使用的,返回特定的结果。

参数收集的用处之一是使我们编写函数时不用头疼将 N 多个参数都塞在一个括号里,既美观又省事。用处之二便是:

* :可以将一系列值存放进一个元组变量里,可用该元组变量名加一个 * 号作为参数传递给一个正被调用的函数,而后该函数就可以自由地对这些值进行一系列合法的操作。

** :同理,只不过变量存放的方式是字典。

def foo(*param):
print(param) def foo_1(**param):
print(param)
def foo_2(*param1, **param2):
print(param1)
print(param2) if __name__ == '__main__':
foo(1,2,3,4) # (1, 2, 3, 4) foo_1(a = 1, b=2, c=3, d=4) # {'a': 1, 'b': 2, 'c': 3, 'd': 4} foo_2(6,7,8, m = 9, n = 10) # (6, 7, 8) {'m': 9, 'n': 10}

  

Python的4种传值的方式,必选传参 func(param)、默认传参func(param=value)、可选传参func(*param)、关键字传参func(**param)

# 必选参数 func(param): # 1、定义函数时的参数个数,顺序已定义好,在调用函数调时的参数个数、顺序必须一致,不能多,也不能少,也不能乱(和之前的顺序一致),因此叫必选参数,这是最常用的传参方式

def test(param1,param2,param3):

  print param1,param2,param3

test(1,"hello",True)

test(True,1,"hello")

执行结果:

1 hello True

True 1 hello

# 默认参数func(param=value): #

1、定义函数时,已为参数设定一个默认值,假如调用函数时不传参,在函数内部使用参数时的值则为默认值,传参时则和必选参数一样使用

# 2、如果必选参数和默认参数同时存在,则默认参数必须跟在必选参数后面

# 3、如果有多个默认参数,调用时顺序可以不一致,但是必须要显式表明是哪个默认参数,例如 param2=100,但是建议统一按照函数定义的顺序进行使用

def test(param1,param2=100,param3=True):

  print param1,param2,param3 test(1)

# 默认参数可以不传 test(1,"hello",False)

# 多个默认参数时,调用顺序一致 test(1,param3=False,param2="hello")

# 调用顺序也可以不一致

执行结果:

1 100 True

1 hello False

1 hello False

Python 中函数的 收集参数 机制的更多相关文章

  1. python中函数的默认参数陷阱问题

    其实也不能说是陷阱,只是一个不容易注意到的地方,尤其是有其他java/c++类编程语言经验的人员,这里涉及到python的一个特点,所以笔者说是陷阱只是一个噱头而已. def test(item, b ...

  2. python中函数的参数解析

    python中函数的各种参数梳理: 1.形参:函数定义时传入的参数 2.实参:函数调用时传入的参数 (有形参必传实参,形参里自身特点可不传的,可传可不传) 3.缺省参数:不传为默认值,传了会覆盖(下面 ...

  3. 【Python】解析Python中函数的基本使用

    1.简介 在Python中定义函数的基本格式为: def <函数名>(参数列表): <函数语句> return <返回值> Python中的函数形式比较灵活,声明一 ...

  4. python 中函数的参数

    一.python中的函数参数形式 python中函数一般有四种表现形式: 1.def function(arg1, arg2, arg3...) 这种是python中最常见的一中函数参数定义形式,函数 ...

  5. (转)python中函数参数中如果带有默认参数list的特殊情况

    在python中函数参数中如果带有默认参数list遇到问题 先看一段代码 1 2 3 4 5 6 7 8 9 def f(x,l=[]):     for i in range(x):         ...

  6. python中函数的参数

    函数参数(一) 思考一个问题,如下: 现在需要定义一个函数,这个函数能够完成2个数的加法运算,并且把结果打印出来,该怎样设计?下面的代码可以吗?有什么缺陷吗? def add2num(): a = 1 ...

  7. Python中函数的参数传递与可变长参数

    转自旭东的博客原文 Python中函数的参数传递与可变长参数 Python中传递参数有以下几种类型: (1)像C++一样的默认缺省函数 (2)根据参数名传参数 (3)可变长度参数 示例如下: (1)默 ...

  8. python中函数参数的引用方式

    值传递和引用传递时C++中的概念,在python中函数参数的传递是变量指向的对象的物理内存地址!!! python不允许程序员选择采用传值还是传引用.Python参数传递采用的肯定是“传对象引用”的方 ...

  9. Python中函数的参数-arguments

    归纳起来,Python中函数的定义形式和调用形式主要有如下几种形式: # 函数的定义形式 def func(name) # 匹配positional参数或者keyword参数 def func(nam ...

随机推荐

  1. 常用的C#编译命令

    使用 csc.exe 实现命令行生成 作为一个半路出家的非计算机专业出身的前端码农,最近对C#很感兴趣,原因如下: 1.希望通过学习C#能熟悉一下windows系统和一些概念,例如:windows服务 ...

  2. Servlet笔记9--转发与重定向

    关于Web中资源跳转的问题: 转发和重定向基本代码: package com.bjpowernode.javaweb; import java.io.IOException; import javax ...

  3. Number of Airplanes in the Sky

    Given an interval list which are flying and landing time of the flight. How many airplanes are on th ...

  4. 大数据系列之并行计算引擎Spark部署及应用

    相关博文: 大数据系列之并行计算引擎Spark介绍 之前介绍过关于Spark的程序运行模式有三种: 1.Local模式: 2.standalone(独立模式) 3.Yarn/mesos模式 本文将介绍 ...

  5. TcxGrid标题头 字体加粗

  6. 西安电子科技大学第16届程序设计竞赛网络同步赛 G-小国的复仇

    sb找规律. 分解因数. #include<bits/stdc++.h> #define LL long long #define fi first #define se second # ...

  7. 023 Hadoop的生态系统

    1.数据来源 RDBM:sqoop 日志文件:flume 2.zookeeper 多台机器保持同步数据. 3.hive sql语句的查询 HQL转换成mapreduce SQL On Hadoop 4 ...

  8. ref:web 防止SQL注入方法

    ref:https://blog.csdn.net/beidou321/article/details/6482618 小结:spring采用JdbcTemplate来操作sql,一般不要自行拼接sq ...

  9. springmvc springJDBC 简单实训银行账户管理系统

    springmvc springJDBC 简单实训银行账户管理系统 1.简单介绍一下,在校时每周结束都会有一次学习总结,简称“实训”,这次实训内容是spring,因为是最近热门框架,我就先从基础方面开 ...

  10. js控制手机端字体大小rem

    //得到手机屏幕的宽度 let htmlWidth = document.documentElement.clientWidth || document.body.clientWidth; if(ht ...