Day5 - 04 函数的参数-可变参数*
def msum(numbers):
r = max(numbers) + min(numbers)
return r
>>>msum([1,2,3,4,5])
6
numbers需要为list或者tuple,相当于:
a = [1,2,3,4,5]
msum(a)
如果使用可变参数,那么调用函数时的变化如下:
未使用可变参数:msum([1,2,3,4,5])
使用可变参数: msum(1,2,3,4,5)
def msum(*numbers):
r = max(numbers) + min(numbers)
return r
运行结果:
>>> def msum(*numbers):
... r = max(numbers) + min(numbers)
... return r
...
>>> msum(1,2,3,4)
5
>>> msum(1,2,5,7,8,9,123,323123)
323124
在参数前加*号后,参数numbers接收到的是一个tuple,因此在代码完全不变的情况下,调用函数可以传入任意个参数。
调用可变参数
如果已经有了一个list或tuple,调用一个可变参数的方法:
>>> a = [1,2,3,4,5,6]
>>> msum(a[0],a[1],a[2],a[3],a[4],a[5])
7
太麻烦了。
在list或tuple前加*号,把list或tuple的元素变为可变参数传进函数!
>>> a = [1,2,3,4,5,6,7,8,10,12,123123123,122]
>>> msum(*a)
123123124
*a 表示把a这个list的所有元素作为可变参数传递到msum函数中。
这种写法非常常见,非常有用。
Day5 - 04 函数的参数-可变参数*的更多相关文章
- Python星号*与**用法分析 What does ** (double star/asterisk) and * (star/asterisk) do for parameters? 必选参数 默认参数 可变参数 关键字参数
python中*号**的区别 - CSDN博客 https://blog.csdn.net/qq_26815677/article/details/78091452 定义可变参数和定义 list 或 ...
- 2017寒假零基础学习Python系列之函数之 函数之定义可变参数
若想让函数接受任意个参数,就可以定义一个可变的参数: def fn(*args): print args fn() >>>() fn(1,2,5,6) >>>(1, ...
- 利用可变参数模拟Printf()函数实现一个my_print()函数和调用可变参数注意的陷阱!
可变参数函数的实现与函数调用的栈结构密切相关,正常情况下C的函数参数入栈规则为__stdcall, 它是从右到左的,即函数中的最右边的参数最先入栈. 例如,对于函数: void test(char a ...
- Python函数中的可变参数
在Python函数中,还可以定义可变参数. 如:给定一组数字a,b,c……,请计算a2 + b2 + c2 + ……. 要定义出这个函数,我们必须确定输入的参数.由于参数个数不确定,我们首先想到可以把 ...
- 可变参数模拟printf()函数实现一个my_print()函数以及调用可变参数需注意的陷阱
入栈规则 可变参数函数的实现与函数调用的栈帧结构是密切相关的.所以在我们实现可变参数之前,先得搞清楚 栈是怎样传参的. 正常情况下,C的函数参数入栈遵照__stdcall规则, 它是从右到左的,即函数 ...
- C/C++函数中使用可变参数
先说明可变参数是什么,先回顾一下C++里面的函数重载,如果重复给出如下声明: int func(); int func(int); int func(float); int func(int, int ...
- 在C/C++函数中使用可变参数
原文链接地址:http://blog.csdn.net/djinglan/article/details/8425768 下面介绍在C/C++里面使用的可变参数函数. 先说明可变参数是什么,先回顾一下 ...
- python函数的参数-可变参数,关键字参数
# -*- coding: utf-8 -*- #coding=utf-8 ''' @author: tomcat @license: (C) Copyright 2017-2019, Persona ...
- c语言可变参数函数
c语言支持可变参数函数.这里的可变指,函数的参数个数可变. 其原理是,一般情况下,函数参数传递时,其压栈顺序是从右向左,栈在虚拟内存中的增长方向是从上往下.所以,对于一个函数调用 func(int a ...
随机推荐
- oracle 11.2.0.4静默安装
oracle 11.2.0.4静默安装 1.安装包 1.1.上传安装包 xshell可用rz命令,选择安装包. mobaxterm可用左侧栏上传功能. 2.安装准备 2.1.关闭防火墙.SELinux ...
- 分布式监控系统之Zabbix网络发现
前文我们了解了zabbix的宏,自定义item和模板的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14013331.html:今天我们来了解下zab ...
- 【flask-migrate】:ERROR [root] Error: Target database is not up to date.
问题:flask-migrate数据迁移添加新的表,执行python manager.py db migrate 出现Target database is not up to date 原因: 1. ...
- 安装curl,composer
wget https://curl.haxx.se/download/curl-7.54.1.tar.gz tar -zvxf curl-7.54.1.tar.gz cd curl-7.54.1 ./ ...
- leetcode151. 翻转字符串里的单词
给定一个字符串,逐个翻转字符串中的每个单词. 示例 1:输入: "the sky is blue"输出: "blue is sky the"示例 2:输入: & ...
- Codeforces Round #669 (Div. 2) C. Chocolate Bunny 题解(交互)
题目链接 题目大意 有一个长度为n的全排列,你可以询问2n次,要你经过这个2n次的询问后,求出这个全排列 询问定义为:输入"? i j"输出\(p_{i} mod p_{j}\) ...
- cobbler 装机服务
一.Cobbler 安装 $ yum install -y epel-release $ yum install -y cobbler cobbler-web pykickstart debmirro ...
- rsync单项同步
配置rsync+inotify实时单向同步 定期同步的缺点: 执行备份的时间固定,延期明显,实时性差 当同步源长期不变化时,密集的定期任务是不必要的(浪费资源) 实时同步的优点: 一旦同步源出现变化, ...
- LeetCode 018 4Sum
题目描述:4Sum Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c ...
- java并发编程实战《一》可见性、原子性和有序性
可见性.原子性和有序性问题:并发编程Bug的源头 核心矛盾:CPU.IO.内存三者之间的速度差异. 为了合理利用 CPU 的高性能,平衡这三者的速度差异,计算机体系结构.操作系统.编译程序都做出了贡献 ...