python 位置参数、默认参数、可变参数位置关系_python的位置参数、默认参数、关键字参数、可变参数区别...

一、位置参数

调用函数时根据函数定义的参数位置来传递参数

#!/usr/bin/env python#coding=utf-8

defprint_hello(name, sex):

sex_dict= {1: u'先生', 2: u'女士'}print 'hello %s %s, welcome to python world!' %(name, sex_dict.get(sex, u'先生'))#两个参数的顺序必须一一对应,且少一个参数都不可以#print_hello('tanggu', 1)

二、关键字参数

用于函数调用,通过“键-值”形式加以指定。可以让函数更加清晰、容易使用,同时也清除了参数的顺序要求

#以下是用关键字参数正确调用函数的实例#print_hello('tanggu', sex=1)#print_hello(1, name='tanggu')#print_hello(name='tanggu', sex=1)#print_hello(sex=1, name='tanggu')

#以下是错误的调用方式#print_hello(name='tanggu', 1)#print_hello(sex=1, 'tanggu')

有关键字参数,一定要放到参数的最后,否则在执行代码时,会报错。

有位置参数时,即普通参数,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序的

三、默认参数

用于定义函数,为参数提供默认值,调用函数时可传可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)

#正确的默认参数定义方式--> 位置参数在前,默认参数在后

def print_hello(name, sex=1):

....#错误的定义方式

def print_hello(sex=1, name):

....#调用时不传sex的值,则使用默认值1#print_hello('tanggu')

#调用时传入sex的值,并指定为2#print_hello('tanggu', 2)

四、可变参数

定义函数时,有时候我们不确定调用的时候会传递多少个参数(不传递也可以)。此时,可用包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递,会显得非常方便。

1、包裹位置传递

def func(*args):

....#func()#func(a)#func(a, b, c)

我们传进的所有参数都会被args变量收集,它会根据传递进参数的位置合并为一个元组(tuple),args是元组类型,这就是包裹位置传递

2、包裹关键字传递

def func(**kargs):

....#func(a=1)#func(a=1, b=2, c=3)

kargs是一个字典(dict),收集所有关键字参数

五、解包裹参数

*和**,也可以在函数调用的时候使用,称为解包裹(unpacking)

1、在传递元组时,让元组的每一个元素对应的一个位置参数

defprint_hello(name, sex):printname, sex#args = ('tanggu', '男')#print_hello(*args)#tanggu 男

2、在传递词典字典时,让词典的每个键值对作为一个关键字参数传递给函数

defprint_hello(kargs):printkargs#kargs = {'name': 'tanggu', 'sex', u'男'}#print_hello(**kargs)#{'name': 'tanggu', 'sex', u'男'}

六、位置参数、默认参数、可变参数的混合使用

基本原则是:先位置参数,默认参数,包裹位置,包裹关键字(定义和调用都应遵循)

def func(name,age,sex=1,*args,**kargs):

pirnt name,age,sex,args,kargs#func('tanggu'.23,2,'music','sprot',class=2)#tanggu 23 2 ('music','sport') {'class'=2}

Python中的*args和**kwsrgs的区别

先来看个例子

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2015年终总结

2019独角兽企业重金招聘Python工程师标准>>> 2015年终总结 用勇气改变可以改变的事情,用胸怀接受不可以改变的事情,然后用智慧分辨两者的不同! 短信平台sms 影像系统fastfile 统一信任中心uts(单点登录) 简历增加 总结…

笔记本本地连接显示电缆拔出_没有安全电缆槽的笔记本电脑如何固定?

笔记本本地连接显示电缆拔出Historically laptops included a slot in the side for attaching security cables–as seen in the photo here–but increasingly more slender laptops like ultrabooks are omitting the lock-slot from their case design. How do you properl…

JMeter中添加dubbo相关插件异常问题解决

从网上下载了一个dubbo的插件,然后放到JMeter的/lib/ext目录下: 然后启动直接异常 发现启动不了,然后下载了一个全新的JMeter3.2将dubbo插件放到同样的目录,启动,没有问题: 那应该不是JMeter本身的问题 通过…

向量空间余弦相似度

设向量a和向量b 则a•b|a||b|cos,|a|和|b|分别为两向量的模 cos即为两向量的余弦值,所以cosa•b/|a||b| 距离和相似性度量: http://blog.sina.com.cn/s/blog_6045a9da01011nk7.html 转载于:https://www.cnblogs.com/lsai/p/3715948.html

linux提升文件夹权限命令_Linux常用命令_(文件权限)

Linux权限管理:二、权限管理1、3种基本权限在Linux中,将使用系统资源的人员分为4类:超级用户、文件或目录的属主、属主的同组人和其他人员。超级用户拥有对Linux系统一切操作权限,对 于其他3类用户都要指定对文件和目录的访问权限…

Servlet异常

一、http status 404 解决办法:检查web.xml中的配置文件,发现jsp页面的提交路径action和web.xml中的路径不匹配,将其修改过来。转载于:https://www.cnblogs.com/ltfxy/p/9671256.html

disk genius_如何预约Apple Store商店或Genius Bar

disk geniusMaybe you have a cracked iPhone screen or your MacBook Pro isn’t charging properly. Whatever your issue, there’s an app for that! If you need tech support or repairs for your Apple device, it’s easy to set up a service appointment right from …

[置顶] C#中通过调用webService获取上网IP地址的区域的方法

最近在开发项目的过程中需要获取用户查询时的IP地址的区域,以用来做统计分析用。经过一番查阅资料,然后写了个测试程序,很快就搞定了这个功能。 现在分享下我的实现方法,大家如果有更好的实现,欢迎提出哦。 首先我找到…

hashmap 存取原理图_HashMap底层实现原理

HashMap底层原理总结,几个Hash集合之间的对比。HashMap底层存储结构HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做一个Entry。这些Entry分散存储在一个数组当中,这个数组就是HashMap的主干。1234567* The table, initializ…

LVM逻辑卷创建管理

在虚拟机中再次添加三张硬盘 1、查看添加的硬盘 [rootrhel-02 ~]# fdisk -l 2、添加分区 [rootrhel-02 ~]# fdisk /dev/sdb 查看分区并保存 3、将物理硬盘分区初始化为物理卷,以便LVM使用 如果没安装LVM的话先去安装 [rootrhel-02 ~]# yum install lvm2 安装完成…

Start DWM manually on Windows 7 and vista

方法一: 1. 检查两处注册表项及键值是否与下列数值一致 HKEY-Current-User\Software\Microsoft\Windows\DWM\Composition 键值改为 1 HKEY-Current-User\Software\Microsoft\Windows\DWM\CompositionPolicy 键值改为2 2. 打开运行(可能要用到管理员模式启…

java启动mysq服务_Java Web开发——MySQL数据库的安装与配置

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系…

小程序如何获得手机号码_获得小型企业电话号码的最佳方法

小程序如何获得手机号码Lots of small businesses use their personal cellphones when making work related phone calls. Some may even be using old landlines for their calling needs. While it makes sense to use your cellphone, and it can be scary to make a chang…

空间数据索引RTree完全解析及Java实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MongChia1993/article/details/69941783第一部分 空间数据的背景介绍 空间数据的建模 基于实体的模型(基于对象)Entity-based models (or object base…

Android 中的ORM框架

在android 中,内置了sqlite数据库,java web 中,用惯了Hibernate ,想找找android中是否也有类似的orm框架,后来在开源中国看到了orman,这是一个很不错的框架。 这个可以帮我们快捷方便的实现数据库的CURD操作…

android页面布局 如何让中间的listview填充剩余部分_谷歌驾驶设计—界面设计布局...

本节提供了可在不同屏幕尺寸范围内缩放的屏幕布局的设计指南。此处定义的padding和keyline值用于Components,Media规范、Notification Center规范和Dialer规范中。指南概览(TL:DR):基于适当的屏幕尺寸类别的基本布局使…

ios 禁用滑动手势_如何禁用笔记本电脑上的Windows 8滑动手势?

ios 禁用滑动手势If you’re not a fan of the touchpad-based swipe gestures in Windows 8 there is a way to completely disable them and reclaim your touchpad. 如果您不喜欢Windows 8中基于触摸板的滑动手势,可以使用一种方法来完全禁用它们并收回您的触摸板…

Java快速入门-01-基础篇

Java快速入门-01-基础篇 如果基础不好或者想学的很细,请参看:菜鸟教程-JAVA本笔记适合快速学习,文章后面也会包含一些常见面试问题,记住快捷键操作,一些内容我就不转载了,直接附上链接,嘻嘻开发…

Excel导入MS SQL SERVER 操作

关于Excel导入到sql操作的相关问题总结: 一、大批量数据导入 方法1、从Excel大批量数据导入时我们可以使用sql里面有一个batch copy的功能 方法2、在sql中建一个table type结构,在前端将excel读到datatable中,把整个datatable作为存储过程参数…

苹果mac闪退_自从Mac有了WPS,从此和双系统说再见!

薛岗13,712本文共计2266个字,预计阅读时长需要6分钟。大部分使用Macbook的用户都有一个痛点,就是编辑好的office文件,在朋友或同事的windows电脑上展示效果与自己的会有差异。除此外,卡顿、闪退、数据丢失等也是Windows版office在…