python 主函数传参_Python函数传参详解
Python 中使用 def 来定义函数。依次是 def 函数名、括号、括号中的参数及结尾的冒号,另起一行缩进写函数体,函数的返回值用 return 语句返回。
如:
def func(参数):
函数体
return
调用函数时会对传入的参数进行自动检查,包括参数的类型及参数的数量,如果不符合要求会抛出 TypeError 异常。
参数的类型可分为:
1、必选参数
2、默认参数
3、可变参数
4、关键字参数
函数中的参数顺序一定要按以上顺序排列。
下面通过示例来更好的理解函数的各类参数:
定义函数:
>>> def func(hostname,os='CentOS',*role,**other):
... print('Hostname : %s\nOS : %s\nRole : %s\nOther : %s'%(hostname,os,role,other))
...
>>>
其中 hostname 为必选参数,os为默认参数,role为可变参数,other为关键字参数。
*和**分别为可变参数和关键字参数前缀,可变参数类型为列表或元组,关键字参数类型为字典。
演示:
1、
>>> func('web1')
Hostname : web1
OS : CentOS
Role : ()
Other : {}
>>>
调用之前定义的 func 函数,并传入'web1'必选参数。在输出的结构中 OS 显示为默认的 CentOS。
2、
>>> func('web2','ubuntu')
Hostname : web2
OS : ubuntu
Role : ()
Other : {}
>>>
调用之前定义的 func 函数,并传入'web2'必选参数,默认参数用 'ubuntu' 替换。
3、
>>> func('db-1','redhat','MySQL','Redis')
Hostname : db-1
OS : redhat
Role : ('MySQL', 'Redis')
Other : {}
>>>
调用之前定义的 func 函数,并传入必选参数,默认参数,以及两个可变参数。可变参数类型可以为列表或元组,如下:
>>> func('db-1','redhat',*['MySQL','Redis'])
Hostname : db-1
OS : redhat
Role : ('MySQL', 'Redis')
Other : {}
>>>
>>> func('db-1', 'redhat',*('MySQL', 'Redis'))
Hostname : db-1
OS : redhat
Role : ('MySQL', 'Redis')
Other : {}
>>>
当传入的可变参数是列表或元组时要在前加上*,对应的结果输出为元组。
4、
>>> func('db-3', 'redhat','MySQL', 'Redis', ip='172.16.100.3')
Hostname : db-3
OS : redhat
Role : ('MySQL', 'Redis')
Other : {'ip': '172.16.100.3'}
>>>
>>> func('db-3', 'redhat','MySQL', 'Redis', ip='172.16.100.3', m_port=3307)
Hostname : db-3
OS : redhat
Role : ('MySQL', 'Redis')
Other : {'ip': '172.16.100.3', 'm_port': 3307}
>>>
>>> func('db-3', 'redhat','MySQL', 'Redis', **{'ip' : '172.16.100.3', 'm_port' : 3307})
Hostname : db-3
OS : redhat
Role : ('MySQL', 'Redis')
Other : {'ip': '172.16.100.3', 'm_port': 3307}
>>>
调用之前定义的 func 函数,并传入必选参数,默认参数,两个可变参数及关键字参数。
当传入的关键字参数是字典时要在前加上**,对应的结果输出为字典。
当然以上测试中的列表、元组及字典可以先定义再引用:
>>> db_3_o={'ip' : '172.16.100.3', 'm_port' : 3307}
>>> db_3_r=['MySQL', 'Redis']
>>> func('db-3', 'redhat',*db_3_r, **db_3_o)
Hostname : db-3
OS : redhat
Role : ('MySQL', 'Redis')
Other : {'ip': '172.16.100.3', 'm_port': 3307}
>>>
python 主函数传参_Python函数传参详解相关推荐
- python字符串处理编程实例_Python字符串处理实例详解
干货大礼包!21天带你轻松学Python(文末领取更多福利) 点击查看课程视频地址 本课程来自于千锋教育在阿里云开发者社区学习中心上线课程<Python入门2020最新大课>,主讲人姜伟. ...
- python成员变量和全局变量_python 全局变量和局部变量详解笔记
python,数据分析,有相关问题欢迎留言交流. 一.问题引入 在写爬虫进行批量命名时,比如说常用的解析网页时 url这个变量就是跨函数的.涉及到全局变量和局部变量的设置. 二.全局变量与局部变量的区 ...
- python定时任务每月1号_Python 定时任务框架 APScheduler 详解
APScheduler 最近想写个任务调度程序,于是研究了下 Python 中的任务调度工具,比较有名的是:Celery,RQ,APScheduler. Celery:非常强大的分布式任务调度框架 R ...
- 以python程序调用的系统_python 系统调用的实例详解
python 系统调用的实例详解 本文将通过两种方法对python 系统调用进行讲解,包括python使用CreateProcess函数运行其他程序和ctypes模块的实例, 一 python使用Cr ...
- python全栈之巅_Python 迭代器、生成器详解 - Python全栈之巅
迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退. 使用迭代器的优点 对于 ...
- python代码缩进和冒号_Python缩进和冒号详解
对于Python而言代码缩进是一种语法,Python没有像其他语言一样采用{}或者begin...end分隔代码块,而是采用代码缩进和冒号来区分代码之间的层次. 缩进的空白数量是可变的,但是所有代码块 ...
- python数据科学课后答案_Python数据科学-技术详解与商业实践-第五讲作业
作者:Ben,著有<Python数据科学:技术详解与商业实践>.<用商业案例学R语言数据挖掘>.<胸有成竹-数据分析的SAS EG进阶>作者.2005年进入数据科学 ...
- python处理excel实例编程_python读取Excel实例详解
本文实例为大家分享了python读取Excel实例的具体代码,供大家参考,具体内容如下 1.操作步骤: (1)安装python官方Excel库-->xlrd (2)获取Excel文件位置并读取 ...
- python语言案例教程 单元测试_python单元测试unittest实例详解
本文实例讲述了python单元测试unittest用法.分享给大家供大家参考.具体分析如下: 单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也是很崩溃的事情 ...
- python外部库是什么_Python 常用外部模块详解
RabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统,他遵循Mozilla Public License开源协议,MQ全称为Message Queue,消息队列(MQ) ...
最新文章
- (已解决)AttributeError: ‘PrecisionRecallDisplay‘ has no attribute ‘from_predictions‘以及查看sklearn版本
- Gulp 自动化的项目构建工具
- [分享]极富挑战性的大公司面试的智力题
- MongoDB学习笔记~地图坐标的支持与附近点的查找
- 核心期刊 CA JST CSCD 含金量_期刊评介|《仪表技术与传感器》科技期刊的阿玛尼,只管投就对了!...
- iOS----------The app's Info.plist must contain an NSPhotoLibraryUsageDescription key
- hive 语句总结_Hive常用命令总结
- Python 学习笔记 - 作用域小知识
- android列表项点击事件,Android 开发 tips(2):监听 Listview 列表项点击事件
- eclipse 添加jar (servlet api)
- [20150228]Delayed Block Cleanout 2.txt
- SWFUpload批量上传插件
- 百度地图绘制自定义区域
- CSS3 filter滤镜详解
- Java地位无可动摇的12个原因
- 【编程题】构造两两相邻数之和为奇数的矩阵
- For 循环优化,提升效率
- 高清视频文件丢了怎么恢复丨电脑下载好的缓存数据
- LeetCode 1278. 分割回文串 III
- CSS+DIV-设置图片效果