Python函数之所以很好用,还有一点就的能传递参数实现不同场景的灵活使用,对于函数参数的类型小编总结了6种不同的形式。下面来一一学习下。

首先来一个问题:使用一个函数来打印3*2,3*3,3*4的结果。

正常情况下大家可能直接封装一个函数,在函数体内来完成这三个数的乘法,如下。

def p_num():print(3 * 2)print(3 * 3)print(3 * 4)p_num()

返回结果:

6
9
12

上面的结果实现了题目要求,这时候如果再来一个问题:用一个函数输出5*2,5*3,5*4的结果。

这时候你就会发现,你必须再封装一个函数来实现这样的效果,但是很多同学会发现,这个效果和我们上面的效果很相似。有的同学就会想到,第一题函数中的3我们可不可以用一个变量来代替,恭喜你,python也是这样想的,所以就引入参数这个概念,我们来看看python是怎么实现的吧。

一、函数的单参数传递

def p_num(n):  # 设置一个形参nprint(n * 2)print(n * 3)print(n * 4)p_num(5)  # 传递实参为5

上面函数中的n就是形参,你也可以把它理解为一个变量名,调用函数的时候小括号中要传入实参,你可以把他理解为给上面形参(变量)赋的值。这样你给n赋什么值,那函数体内参与运算的就是什么值,这样一来我们就能实现不同的数字实现上面的相同的方法了,一个函数搞定。

二、多参数传递

换种情况,如果我们想得到两个数字相乘和相减的值,而且在不同的场景中这两个数会随时变化,那又怎么实现呢?估计有同学已经想到了,只要把上面的函数中一个形参变成两个就可以了,是的,就是这样的。下面来演示一下。

def test():print(5 * 3)print(5 - 3)
test()
# 1.固定参数def test(m, n):print(m * n)print(m - n)
test(5, 3)
test(985, 211)

三、关键字参数

通过一个函数把一个字符串反复输出n次,注意这里的n代表未知次数,字符串也是未知字符串,我们从这个题目就可以看出来,一定属于一个多参数函数。那么很简单就实现了,如下。

def test(num, str):print(str * num)
test('www.wakey.com.cn', 5)

这时候大家可以看到输出的结果也是正确的,但是我们本身是想把num=5,str='www.wakey.com.cn',而函数里面的参数是按照顺序穿进去的,所以虽然结果没有问题,但是在有些场景中会出现不必要的错误,比如,我们要对字符串str进行处理后再计算,就不行了,这时候,python引入关键字参数来指定形参和实参的关系。

def test(num, str):print(str * num)
test(str='www.wakey.com.cn', num=5)

四、缺省参数

这时候出现另一种场景,就是上面的字符串在大多数情况下都是www.wakey.com.cn,偶尔会出现其他字符串的情况,如果使用上面关键字参数的话,每次都要输入一下固定值,这样写起来比较麻烦,所以看看缺省参数是怎么解决这个问题的。

def test(num, str='www.wakey.com.cn'):print(str * num)
test(num=5)
test(num=5, str='www')

这里的缺省参数也可以说成默认值参数,就是不传递参数的时候用自己的默认值,传递参数的时候使用传递进去的实参。

五、不定长参数 - 

如果一个函数不知道未来要接收多少个参数的时候可以使用一个元组来接受不定长参数,下面来直接实现效果。

def test(*m):  # 这里加了一个*号,当成元组的形式来接受参数,一般写成:*argsprint(m)  # 注意这里的形参不能带*号print(type(m))
test((3, 5, 7))
test(3, 5, 7)

注意这里两个调用的结果都是元组,但是结果不太一样,看看返回结果。

((3, 5, 7),)
<class 'tuple'>
(3, 5, 7)
<class 'tuple'>

六、不定长参数 - 字典

还有一种情况就是每个参数都用自己的含义,但是不是固定参数,这里可以借用字典的键值对特性来实现。

def test(**m):  # 这里加了2个*号,当成字典的形式接受参数,一般写成:**kwargsprint(m)print(type(m))# print(**m)  # 这里不能加**
test(a=3, b=5, c=7)

返回结果:

{'a': 3, 'b': 5, 'c': 7}
<class 'dict'>

上面两种不定长参数可以放在一起使用,表示可以接受任意参数,下面不给大家举例的,我们看看文档,很多内建方法都使用这样的写法。

def pow(*args, **kwargs): # real signature unknown"""Equivalent to base**exp with 2 arguments or base**exp % mod with 3 arguments Some types, such as ints, are able to use a more efficient algorithm wheninvoked using the three argument form."""pass

【100+ python基础入门-42】Python函数参数的六种类型相关推荐

  1. python基础入门视频-Python基础入门视频课程——笔记

    Python基础,主讲:汤小洋 一.Python简介 1. Python是什么? ​ Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum(龟叔)于1989年 ...

  2. Python基础入门:endswith() 函数

    函数:endswith() 作用:判断字符串是否以指定字符或子字符串结尾,常用于判断文件类型 相关函数:判断字符串开头 startswith() 一.函数说明 语法: string.endswith( ...

  3. Python基础入门知识点——Python中的异常

    前言 在先前的一些章节里你已经执行了一些代码,你一定遇到了程序"崩溃"或因未解决的错误而终止的情况.你会看到"跟踪记录(traceback)"消息以及随后解释器 ...

  4. python基础入门--input标签、变量、数字类型、列表、字符串、字典、索引值、bool值、占位符格式输出...

    # 在python3 中: # nian=input('>>:') #请输入什么类型的值,都成字符串类型# print(type(nian)) # a = 2**64# print(typ ...

  5. Python基础入门教程

    Python基础入门教程 Python基础教程 Python 简介 Python环境搭建 Python 基础语法 Python 变量类型 Python 运算符 Python 条件语句 Python 循 ...

  6. Python 100道基础入门练习题(附答案)【这期完结】

    嗨害大家好鸭!我是小熊猫❤ 一直忘记给大家整完剩下的python基础100题- 还好有小伙伴提醒了我嘿嘿 这就给大家更新上! 实例021:猴子偷桃 题目 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃 ...

  7. 零基础学python 视频_零基础入门学习PYTHON(第2版)(微课视频版)

    小甲鱼畅销图书重磅升级,针对Python 3.7,通过生动的实例,让读者在实践中理解概念,在轻松.愉快中学会Python! 本书提倡理解为主,应用为王.因此,只要有可能,小甲鱼(注:作者)都会通过生动 ...

  8. 万字长文爆肝Python基础入门【巨详细,一学就会】

    目录 数据的名字和种类--变量和类型 初探数据种类 数据类型 数值运算 比较运算 变量和赋值 变量的好处 用赋值更新变量 变量和数据类型的关系 总结 数据类型 数值运算 数值比较 变量和赋值 一串数据 ...

  9. Python基础day06【匿名函数lambda、列表生成式、集合set、文件读写】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员]   目录 1.复习 2.递归函数[理解] 2.1.递归求阶乘 3.匿名函数 3.1.匿名函数的4种 ...

  10. [新手必备]Python 基础入门必学知识点笔记

    Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...

最新文章

  1. 非线性优化:徒手实现LM算法
  2. 077_html5拖放
  3. java中super关键字_Java中关键字super与this的区别
  4. TeeChart.Direct2D.dll的使用
  5. php curl 传输大文件,空白目录 · php下载大文件curl · 看云
  6. [译]基于GPU的体渲染高级技术之raycasting算法
  7. 如何给网站制作一个favicon.ico图标
  8. 前端开发教程:使用 CSS3 Transforms 构建圆形导航
  9. with ...as ...
  10. SpringMVC的json数据交互
  11. [转]busybox登陆后没要求输入密码的解决办法
  12. inner join、 left join 、right join、full outer join之间的区别
  13. 面向GitHub学习网课
  14. U盘量产大致研究思路
  15. 悖论在计算机中的应用,“索洛悖论”悖论 计算机影响随处可见
  16. ACL 2017 最佳长论文,带你创造一门优雅的新语言
  17. You're a brave boy!
  18. 好用的翻译软件-大家都在用的互译软件
  19. Dell R710 iDRAC6 远程控制卡设置
  20. 组合框快速输入(二)

热门文章

  1. python程序设计大赛题目_第三第四题,这是Python程序设计的题目,
  2. OCT图像层次分割相关论文泛读
  3. 关于Video Src 带有 blob:http的视频如何下载的问题
  4. mysql水仙花数,水仙花数_水仙花数c语言程序
  5. LIN总线、CAN总线、FlexRay总线和MOST总线---汽车四大总线
  6. leecode.1758. 生成交替二进制字符串的最少操作数
  7. 阿里百川HotFix的使用
  8. 色彩空间(一):色彩空间基础
  9. C++17尝鲜:fold expression(折叠表达式)
  10. 数商云DMS渠道商城系统全渠道营销场景应用举例,赋能日化行业增强渠道掌控力