0 总述

这个题目分为2篇,第一篇基本上是概念以及实例,有个相对系统的认识,第二篇想写的深入一些,不同参数类型的区别以及和c/c++的函数参数对比下异同~下面开始是第一篇的内容啦~

Python中的函数参数一共分为5种类型,分别是:必须参数

默认参数

可变参数(不定长参数)

关键字参数

组合参数

其中必须参数和默认参数是我们日常码代码中定义函数最常使用的函数参数,下面我们通过几个例子来了解他们吧!

1 必须参数

作为第一个例子,当然首选是hello word啦~

def say(words):

print("say is ",words,)

say("Hello World!")

say()

我们可以从上述say函数中发现,words作为一个行参,调用时传入了一个“Hello World!”字符串,那么words的类型也是字符串。因此行参的类型取决于传入的实参的类型。那么可不可以不传入参数,直接调用这个函数呢?就会看到下面的报错信息:

为什么会报错呢?什么是必须参数呢 ? 主要是特征是在调用时必须传入与定义一致数量的参数,不能多也不能少,如果按照要求传入参数就会报错啦~

那么又有个新的问题,如果我比较懒,想在不穿入参数的情况下(同时也能完成字符串打印功能),也打印hello word呢?就可以学习下下一种参数类型啦~

2 默认参数

看下面的例子一,就可以完成不穿入参数也完成打印hello word的功能啦

#例子一:

def say(words="Hello World!"):

print("SAY:",words)

#函数调用

say("Hello World!")

say()

从函数定义可以看出,函数形参words被赋了一个值"Hello World!",在调用时,可以传入一个新的实参,同时也可以不传入使用默认值。默认参数的优点在于对于一些参数,可以给其预设一些默认的值,这样在调用时只需要传入必要的参数即可,简化调用。

下面的再来个例子,我们巩固一下默认参数:

# 定义函数

def robot_marry(male_name, female_name = "eva"):

print(male_name + " and " + male_name + " are friend.")

# 调用方式1:第一个参数使用传入的参数

robot_marry("wali" , "eva")

# 调用方式2,第二个参数使用默认值

robot_marry("wali")

如果我想打印的,小蟑螂和wali,eva是好朋友呢,难道只能给函数再加一个形参吗?

3 可变参数

可变参数,什么东西可变呢? 是参数的个数是可变的,这个比较有趣,函数定义后,我可以按需传入设定数量的参数,当我们不是很确定参数的个数,或者说参数个数会发生变化的时候,就可以用可变参数,可变参数可以连续传入多个参数,最常用的可变参数的函数,就是我们的print函数啦~

下面的例子就可以打印wali , eva , small cockroach , are friend啦

# 定义函数

def robot_friend(*robot_name):

for name in robot_name:

print(name + ", ",end='') #python3

print('are friend')

# 调用方式1:第一个参数使用传入的参数

robot_friend("wali" ,"eva", "small cockroach

再来个例子巩固一下,比如:双十一来了,我们需要买好多东西,但买啥,买多少我们并不确定,这个时候我们也可以用可变参数

# 函数定义

def buy(*things):

print("You have buy:")

for thing in things:

print(thing)

# 函数调用:可以写入任意数量个参数

buy("red-shoe","coat","trousers","hat")

通过上述函数可以发现,我们在定义时仅仅在参数前加了个*号,带来的效果时我在使用时可以通过things获取到传入多个参数中的每一个参数。因此简单来说,可变参数本质为任意数量个数的参数的容器,可以容纳无限个参数。

4 关键字参数

当我们定义的函数中有很多参数,其中一些有默认值,我们在调用时只想传入某一些参数,而这些参数又不是都在前面,这个时候使用关键字参数能摆脱使用位置对应行参的约束,使得代码很简洁。如以下例子所示:

def number_add(a , b = 3, c = 4 , d =5 ,e = 6):

print("sum is ", a+b+c+d+e)

我们在调用时,首先a使用的为必须参数,因此必须传入一个实参,b,c,d假设我并不想改变,只想改变e,这时我们有两种办法:

number_add(10,3,4,5,7)#方法1

number_add(10,e=7)#方法2

方法2通过行参名加上赋值的方式,跳出了位置约束,使得代码很简洁,对于这些默认参数很多,而调用时只想改变很少一部分的应用,非常有效。

5 组合参数

组合参数就是将以上描述的4种参数中的两个及以上同时引入函数作为行参,但参数的位置顺序必须准照以下规则:必须参数、关键字参数、默认参数、不定长参数

6 下篇

下篇准备写下不同的参数类型的区别,可变参数不可变参数,以及与c++的异同,对应的内容推荐Python学习手册中的第六章和第十八章~~

python中函数的参数_Python小知识-Python中的函数参数(基础篇)相关推荐

  1. python什么是堆什么是栈_python中堆和栈_Python小知识00002

    原博文 2019-05-15 09:48 − 变量位于栈 对象位于堆 ... 0 739 相关推荐 2019-12-03 17:11 − 目录 Python 全栈之路 一. Python 1. Pyt ...

  2. 小知识 | Java中的“魔数”

    转载自 小知识 | Java中的"魔数" 在编程过程中,我们可能经常听到"魔数"这个词,那么这个词到底指的是什么呢?什么数叫做魔数呢? 一.标识文件类型的&qu ...

  3. 视频教程-30小时微信小程序从入门到精通课程-基础篇-微信开发

    30小时微信小程序从入门到精通课程-基础篇 8年IT开发经验,6年IT教育经验,喜欢把复杂逻辑用简单的表述传达给学生,传授编程知识,讲述生活故事 曹圣捷 ¥12.00 立即订阅 扫码下载「CSDN程序 ...

  4. python中关键字 表示空类型_Python小知识:如何在Python 3中转换数据类型

    写在前面: 在Python中,数据类型用于对一种特定类型的数据进行分类,确定可以分配给该类型的值以及可以对其执行的操作. 这里主要讲述转换数字,字符串,元组和列表,并提供示例以帮助各位熟悉不同的用例. ...

  5. python中mean的用法_python 的numpy库中的mean()函数用法介绍

    1. mean() 函数定义: numpy.mean(a, axis=None, dtype=None, out=None, keepdims=)[source] Compute the arithm ...

  6. python average函数怎么用_python 的numpy库中的mean()函数用法介绍

    1. mean() 函数定义: numpy.mean(a, axis=None, dtype=None, out=None, keepdims=)[source] Compute the arithm ...

  7. python如何查看函数的参数_python 如何查看自带函数的默认参数?

    python 为什么默认参数不能放在必选参数前面 关于python带默认值的参数只能放在后面的问题曾经不信一见钟情,遇见了你遗失了心:曾经不信爱有多真,遇见了你迷失自己. Python函数里的默认参数 ...

  8. python数据类型哪些是无序的_Python自学知识-Python中的数据类型有哪些?

    今天小编要跟大家分享的文章是关于Python自学知识-Python中的数据类型有哪些?正在自学Python知识的小伙伴们来和小编一起看一看吧,希望能够对大家有所帮助!Python中主要有8种数据类型: ...

  9. python调用c函数传字符串参数_Python使用ctypes模块调用DLL函数之传递数值、指针与字符串参数...

    在Python语言中,可以使用ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数,在提高软件运行效率的同时,也可以充分利用目前市面上各种第三方的DLL库函数,以扩充Python软件 ...

最新文章

  1. Vue中的基础过渡动画原理解析
  2. 搭建SpringMVC+Hibernate4+Spring3+Ajax+Maven项目(二)
  3. 一文读懂深度学习:从神经元到BERT
  4. 界面设计方法(2)— 6.功能按钮设计(删除,保存,提交)
  5. 【操作系统】同步和互斥
  6. SAP License:SAP S/4HANA Cloud [ERP 云]
  7. ORA-00018-超出最大连接数
  8. [转载] python中*args 和 **kwargs区别
  9. win7自定义html为桌面,Win7系统如何自定义个性桌面?
  10. 用火箭送快递?淘宝宣布联合蓝箭航天起启动“宝箭”计划...
  11. 艾里斑大小与像元尺寸的匹配问题
  12. Egret 骨骼动画
  13. mysql group 查询的替代_mysql group_concat替代或多行作为列
  14. Leetcode 跳跃游戏
  15. 外包程序猿的漫漫人生路
  16. 怎么在oracle里执行sql语句,在Oracle中执行动态SQL的几种方法
  17. 关于HPV疫苗的所有问题,答案都在这里 | 健康科普
  18. 一文教你快速学习搭建属于自己的数据指标体系
  19. General information (1)
  20. Python异步 asyncio 异步文件下载

热门文章

  1. 【白皮书分享】2022年新品营销白皮书-阿里妈妈.pdf(附下载链接)
  2. 最强战队出炉,2020腾讯广告算法大赛圆满落幕
  3. 文本匹配开山之作--双塔模型及实战
  4. 聊聊互联网秋招总结 经验分享
  5. 腾讯 WXG | 技术研究-NLP算法三面复盘
  6. 【论文复现】Hierarchical Attention Networks for Document Classification
  7. KMP算法模板与解析
  8. CCCC/PTA 2019模拟赛 L3-3 至多删三个字符
  9. Leetcode每日一题:136.single-number(只出现一次的数字)
  10. 容器转换类型,列表,集合,字典推导式