Python读书笔记22(函数传递任意数量实参)

连小编都没想到一个小小的函数要分享这么多期~

当然,主要原因是!

不好意思,放错图了是!

今天和大家分享函数的最后一个部分,虾米呢?

前期有分享过传递一个实参,设置默认初始化的实参,变换位置的实参,某个列表作为实参,今天分享的是传递任意数量的实参!

我们先看这个案例

如果我们定义某个函数只有一个形参,输入多个实参的时候就会提示报错,因为Python要求除了有默认初始值的参数外,数量必须与函数定义的保持一致。

但是有时候工作中就是要输入未知个数的实参,怎么解决呢?

如果想让任意数量的实参都不报错,需要在形参定义的时候前面多个星号!

这样函数传递多少个参数进去都不会报错,此时实参传递进去的是什么东西呢?是以什么形式进行存储的呢?

我们将打印改为换返回这个形参,并且赋值给了list1变量,再用Type函数获取list1变量的数据类型。

发现返回值是tuple,证明这个list1参数的存储方式是元组。

其实看之前的Print值的时候我们已经可以看到所有的打印结果都是小括号括起来的,小括号括起来其实就是元组的意思。

所以如果定义函数的时候,形参前面多个星号,代表可以输入多个实参,在定义函数之时这个形参已经默认变量类型为元组;当调用函数时,多个参数以元组的形式赋值给形参!

接下来我们换个形式呈现一下这个函数

我们使用for循环语句打印里面的每个内容!

这个应用和传递一个列表进函数有虾米区别?

我们将列表改为元组呢?

条条大路通罗马噻~ 给你多个解决方案有咩问题!!!!

那如果我的函数是指定位置实参和任意数量实参混合应用呢?

我们需要将固定位置的放在前面,不定数量的放在后面,这样子Python可以按照先后顺序,将不同实参传递到函数之中!

当然参数传递还有更为复杂的方式,作为基础知识分享,及小编的个人感悟,分享到现在已经足够,最主要函数变量类型的灵活性让我们可以在调用函数的时候变得非常的随心所欲,无论后期遇到多复杂的应用,根据前几期分享的内容,基本上还是可以理解看懂的~

下期和大家分享类!

原文发布于微信公众号 - 阿凯的Excel(akexcel)

原文发表时间:2018-01-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

深入理解java异常处理机制

http://blog.csdn.net/hguisu/article/details/6155636

452
来自专栏鸿的学习笔记

用Scala实现一个简单的Python的上下文管理器

上下文管理器是对try/finally模式的简化,保证一段代码运行完后执行某项操作,即使那段代码被中止了,也会执行指定的操作。在这篇文章将展现函数式编程的威力,...

852
来自专栏noteless

java 虚拟机内存划分,类加载过程以及对象的初始化

虚拟机运行时内存 java内存划分 类加载顺序  类加载时机  类加载步骤  对象初始化顺序  构造代码块顺序 构造方法 顺序 内存区域   java内存图  ...

743
来自专栏木木玲

“类加载机制”详解

1101
来自专栏linux驱动个人学习

如何使用C语言的面向对象

我们都知道,C++才是面向对象的语言,但是C语言是否能使用面向对象的功能? (1)继承性 1 typedef struct _parent 2 { 3 int ...

3385
来自专栏精讲JAVA

Java面试基础必备知识点,怼死面试官,从我做起

小海哥有话说 感觉最近支持我的人越来越多,谢谢大家,大家找到工作才是最重要的,我还是那句话,喜欢的就关注,想看深入研究的东西,等我更新完面试系列...

4938
来自专栏专注 Java 基础分享

基本数据类型及其包装类(一)

我们都说,Java 是一门面向对象型程序设计语言,但是它设计出来的「基本数据类型」仿佛又打破了这一点,所以,只能说 Java 是非 100% 纯度的面向对象程序...

3715
来自专栏C/C++基础

C/C++数据类型的转换之终极无惑

数据类型在编程中经常遇到,虽然可能存在风险,但我们却乐此不疲的进行数据类型的转换。

913
来自专栏用户2442861的专栏

全面分析Java的垃圾回收机制

【简 介】 Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过...

901
来自专栏Java3y

List集合就这么简单【源码剖析】

1874

扫码关注云+社区