Python中函数的参数有五种:位置参数(必选参数)、默认参数、可变参数、关键字参数、命名关键字参数。

#位置参数

//定义位置参数函数
def sayHello(name):print('hello',name)//调用函数
sayHello('Tom')
复制代码

调用结果: ('hello', 'Tom')

此时的sayHello(name)函数,参数name是一个位置参数。

当调用函数的时候,必须传入一个参数。其他方式调用都会报错:

//无参数调用
sayHello()
TypeError: sayHello() takes exactly 1 argument (0 given)
//多参数调用
sayHello('Tom','Jarry')
TypeError: sayHello() takes exactly 1 argument (2 given)
复制代码

#默认参数

//定义具有默认参数的函数
def sayHello(name,greet='Hello'):print(greet,name)
//调用函数
sayHello('Tom')
sayHello('Jarry','Hai')
复制代码

调用结果: ('Hello', 'Tom') ('Hai', 'Jarry')

默认参数的好处不言自明,它能够简化函数的调用。设置默认参数的时候,需要注意的是:必选参数在前,默认参数在后,否则会报错。

但函数有多个默认参数时,调用的时候,既可以按顺序提供默认参数,也可以不按顺序;当不按顺序提供参数的时候,要把参数名写上。举个栗子:

def sayHello(name,greet='hello',word='how are you?'):print(greet,name,word)sayHello('Tom',word = 'how do you do?')
复制代码

调用结果: ('hello', 'Tom', 'how do you do?')

#可变参数 可变参数的函数允许传入任意个参数,这些可变参数在函数调用的时候会自动组装成一个tuple。

//定义可变参数的函数
def sayHello(*saySomething):for tmp in saySomething:print(tmp)
//调用函数 以下方式调用都没问题
sayHello('Sawadika','Jarry')
sayHello('nihao','BOBO','how do you do ?')
sayHello('hello','Tom','how are you ?')
复制代码

如果已经有一个list或者tuple,要调用可变参数的函数怎么办?可以这样:

//已有的list
somethings = ['nihao','Zhangye','how do you do ?']
//加*即可
sayHello(*somethings)
复制代码

调用结果: nihao Zhangye how do you do ?

#关键字参数 关键字参数的函数允许传入任意个含参数名的参数,这些关键字参数在函数内部自动组装成一个dict

//定义一个关键字参数
def sayHello(**saySomething):print(saySomething)//调用关键字参数的函数
sayHello(name='TOM',greet='hello',word='How do you do')
sayHello(name='BOBO',word='how are you')
sayHello(name='JHON')复制代码

调用结果: {'word': 'How do you do', 'name': 'TOM', 'greet': 'hello'} {'word': 'how are you', 'name': 'BOBO'} {'name': 'JHON'}

与可变参数类似,如果已经有一个dict,允许把dict当做参数直接传进去:

//已有的dict
para = {'name':'BOBO','greet':'nihao'}
//定义关键字参数
def sayHello(**parameters):if 'name' in parameters:print('name is',parameters['name'])if 'greet' in parameters:print('greet is',parameters['greet'])if 'word' in parameters:print('word is',parameters['word'])
//调用
sayHello(**para)
复制代码

调用结果: ('name is', 'BOBO') ('greet is', 'nihao')

#命名关键字参数 使用关键字参数的函数,允许传入任意不受限制的关键字参数,我们只能在函数内部进行检查参数;如果要限制关键字参数的名字,就可以用命名关键字参数

//定义一个命名关键字参数函数
def sayHello(name, *, greet='nihao', word):print(greet,name, word)
//调用
sayHello('TOM',greet='hello',word='how are you')
sayHello('TOM',word='how do you do')
复制代码

调用结果: hello TOM how are you nihao TOM how do you do

特别注意:命名关键字参数是python3的语法,python2.7不兼容。

#最后 以上介绍的函数的五种参数都可以组合使用,除了可变参数无法和命名关键字参数混合。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数/命名关键字参数和关键字参数。

本文整理资料来自:参考廖雪峰的Python教程

Python之函数的参数相关推荐

  1. python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递

    python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...

  2. Python中函数的参数传递方式

    Python中函数的参数传递方式 .普通的参数传递 >>> def add(a,b):return a+b >>> print add(1,2) 3 >> ...

  3. python数据参数_零基础学习python数据分析——函数的参数

    原标题:零基础学习python数据分析--函数的参数 上一节课中我们讲了python的函数定义,Python的函数定义非常简单,但灵活度却非常大.除了正常定义的必选参数外,还可以使用默认参数.可变参数 ...

  4. python中可变参数args传入函数时储存的类型是_[转载]Python中函数的参数定义和可变参数*args与**args...

    Python中函数的参数定义和可变参数 *args与**args区别 刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函数定义,这个*和** ...

  5. python怎么理解函数的参数_理解Python中函数的参数

    定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解 ...

  6. PYTHON的函数对参数解析分析

    以下转自其它博客.觉得总结得太好了,所以拿来自己参考一下. python中函数参数的传递是通过赋值来传递的. 函数参数的使用又有俩个方面值得注意: 1.函数参数是如何定义的 2.在调用函数的过程中参数 ...

  7. 零基础学Python:函数的参数详解

    必备参数 关键字参数 默认参数 不定长参数 1 必需的参数: 必须参数须以正确的顺序传入函数,调用的数量必须和声明时的一样 def f(name,age):print('I am %s,I am %d ...

  8. Python 自定义函数和参数类型

    目录 1. 自定义函数 2. 参数 (1)必备参数 (2)关键字参数 (3)默认参数 (4)不定长参数 1. 自定义函数 Python 提供了很多内置函数如 set(),  print() 等,用户也 ...

  9. 深入解析Python中函数的参数与作用域

    传递参数 函数传递参数时的一些简要的关键点: 参数的传递是通过自动将对象赋值给本地变量名来实现的.所有的参数实际上都是通过指针进行传递的,作为参数被传递的对象从来不自动拷贝. 对于numbers,St ...

最新文章

  1. AI时代!我选Python因为Python是人工智能的未来
  2. Cache相关基本概念理解
  3. 有益的CountDownLatch和棘手的Java死锁
  4. java 实现压缩zip的几种方案
  5. 计算机中的字,双字以及存储
  6. python 点_Python中的方括号和点符号有什么区别?
  7. django 1.8 官方文档翻译:6-5-1 Django中的测试
  8. 经常看到一种说法,说未来普通人翻身,将会越来越难
  9. 【IDEA】关于 IDEA 中新建 web 项目的 webapp 文件夹没有小蓝点 ,启动服务,访问不到解决方案
  10. java 例子一对小兔子,Java解决标题:有一对兔子,从出生第三个月起每个月都生一对兔子,小兔子长到第三个月后,每个月又生一对兔子。...
  11. java 动态生成表格_js中动态生成表格
  12. 系统架构设计师-考试大纲
  13. 微信小程序 服务通知之订阅消息授权公共方法
  14. 高等数学笔记:两个重要极限
  15. java 单位圆_巧用蒙特卡洛算法求单位圆面积
  16. 苹果发布新召回计划,这款iPhone两年内免费维修
  17. U-boot下编写代码对SPI flash进行操作
  18. jQuery实现平年闰年判断
  19. 程序员今年必看!!拖更了三年带回了一个抖音,虎牙,哔哩哔哩都在用的库|墙裂推荐
  20. dellr服务器性能测试软件,戴尔Poweredge R740服务器使用感受 | 小迪的生产力工具室...

热门文章

  1. 表单-图片浏览上传-单选框(二)
  2. 我写的不只是小说更是程序人生
  3. python3 time datetime相关操作
  4. 贪婪算法在求解最短路径中的应用(JAVA)--Dijkstra算法
  5. 关于ajax请求后台获取下拉列表用的数据
  6. jQuery教程05-层级选择器
  7. Ribbon中的负载均衡算法实现
  8. python运行命令_Python中执行外部命令
  9. java获取本周的开始时间和结束时间_创业板注册制开始时间/股票开户流程结束后,怎么炒股?...
  10. linux隐藏tomcat版本_Ubuntu 14.04隐藏Tomcat-7.0.52的版本号与操作系统类型