摘自:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738449338c8a122a7f2e047899fc162f4a7205ea3000

默认参数是一个固定的值

比如说

>>> def Foo(age,name='zhangsan'):
...   print name,age
...
>>> Foo(25)
zhangsan 25

这里的name,就是一个固定参数,虽然它是固定的,但是当你的业务有需求的时候,不想用这个值,而是想自己传入一个值的时候,可以这么做

>>> Foo(25,'wanger')
wanger 25

还有一点要注意的是, 形参的位置排放,当我们把形参放在前面的时候会报错

可变参数(*arg):

顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。

定义可变参数和定义list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数:

比如说

def show2(*arg):
for item in arg:
print item show2('a','b','1',2,3) 可变参数就是说:可以随意的传入参数,调用的时候,python会自动的给传入的参数包装成列表或者元祖的形式传给实参

关键字参数:(**arg)

关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict,然后。

关键字参数的作用就是我们可以扩展函数的功能

比如我我们现在定义一个学生信息函数

def person(name,age,**args):
print 'name: ',name,'age: ',age,'other: ',args
#person('baoxy',25)
person('baoxy\n','25\n',city = 'anhui',sex = 'Man')

输出的结果分别是

C:\Python27\python.exe X:/708/lambda.py
name:  baoxy age:  25 other:  {}

name:  baoxy
age:  25
other:  {'city': 'anhui', 'sex': 'Man'}

注:我们在使用参数组合的时候,我们要注意定义参数的顺序必须是:必选参数、默认参数、可变参数和关键字参数。

还有一点要注意的是,我们在传可变参数的时候,直接传入参数就行,比如说函数名为Foo,那么我们可以使用Foo('a1','a2','a3')

我们传关键字参数的时候也是这样Foo(name='bao',age =25)

但是当我们传入一个列表或者是字典的时候要加上   *   和   **

比如说:

L=【1,2,3,4】

调用的时候就的   Foo(*L)

D = {'name':'bao','age':25}

调用的时候就的   Foo(**D)

现在我们看一下具体的实例

def Foo(*arg):
for item in arg:
print item L = [1,2,3,4,5]
Foo(L) 得出的记过是:[1, 2, 3, 4, 5] Foo(*L)
得出的结果是:
1
2
3
4
5
所以第二个才是我们想要的结果
def Foo(**args):
print args
D = {'name':'bao','age':25,'city':'anhui'}
#Foo(D) 这个执行后得出的结果是格式错误
Foo(**D) 这个才是我们想要的结果

python 参数的更多相关文章

  1. Python参数笔记

    Python参数 1. 普通参数 必须要传入和定义时个数相同的参数 def miao(acfun, bilibili): print(acfun, bilibili) miao(11, 22) > ...

  2. Python参数基础

    Python参数基础 位置参数 ​ 通过位置进行匹配,把参数值传递给函数头部的参数名称,顺序从左到右 关键字参数 ​ 调用的时候使用参数的变量名,采用name=value的形式 默认参数 ​ 为没有传 ...

  3. Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数

    Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数 一.Python参数类型 形参:定义函数时的参数变量. 实参:调用函数时使用的参数变量. 参数传递的过程 ...

  4. python 参数定义库argparse

    python 参数定义库argparse 这一块的官方文档在这里 注意到这个库是因为argparse在IDE中和在ipython notebook中使用是有差异的,习惯了再IDE里面用,转到ipyth ...

  5. python 参数类型理解

    简介 大家都知道,在java中,函数或者方法的参数在调用时必须对其进行传参操作,也就是所谓的必选参数,也可以称为位置参数,除此之外,python还拥有其他语言不具有的一些参数类型,以下将进行一一介绍. ...

  6. python 参数的组合

    现在我们知道python定义函数的参数类型有:必选参数 默认参数 可变参数 关键字参数 但是在我们日常中我们是可以组合使用这些参数的:但是使用的时候,参数定义是有顺序的 定义的顺序必须是:必选参数,默 ...

  7. <转>Python 参数知识(变量前加星号的意义)

    csdn上的牛人就是多,加油 —————————————————————————— 过量的参数 在运行时知道一个函数有什么参数,通常是不可能的.另一个情况是一个函数能操作很多对象.更有甚者,调用自身的 ...

  8. python参数

    1.形参变量和实参 形参变量:只有在被调用时才分配内存单元,在调用结束时,即释放所分配的内存单元,因此,形参只在函数内有效,函数调用结束返回主调用函数后则不能再使用该形参变量. 实参:可以是常量,变量 ...

  9. python参数传递方式

    原文地址:http://www.cnblogs.com/zhaopengcheng/p/5492183.html python中一切皆对象,函数中参数传递的是对象的引用. 1在函数中改变变量指向的对象 ...

随机推荐

  1. Cinder 调试 - cinder service 状态为 down

    1. 问题 我们经常会发现某个cinder service 的状态为 down.比如下面例子中 controller 上的 cinder-scheduler 和 block1 节点上 cinder-v ...

  2. (转)u3d设计模式

    Unity3d中UI开发的MVC模式 ,和游戏开发的其他模块类似,UI一般需要通过多次迭代开发,直到用户体验近似OK.另外至关重要的是, 我们想尽快加速迭代的过程.使用MVC模式来进行设计,已经被业界 ...

  3. runv containerd 流程分析

    当runv需要启动一个容器的时候,首先需要启动containrd,作为该容器的daemon.因此,启动containerd的相关代码也是从runv/start.go开始.最终,启动containerd ...

  4. 合工大OJ 1331 回文数

    Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数. 任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其和不是回文数, ...

  5. codeforces 709D D. Recover the String(构造)

    题目链接: D. Recover the String time limit per test 1 second memory limit per test 256 megabytes input s ...

  6. POJ 1703 Find them,Catch them ----种类并查集(经典)

    http://blog.csdn.net/freezhanacmore/article/details/8774033?reload  这篇讲解非常好,我也是受这篇文章的启发才做出来的. 代码: #i ...

  7. 18种CSS3loading效果完整版,兼容各大主流浏览器,提供在线小工具使用

    今天把之前分享的两篇博客<CSS3实现10种Loading效果>和 <CSS3实现8种Loading效果[二]>整理了一下.因为之前所分享的各种loading效果都只是做了we ...

  8. WPF好看的进度条实现浅谈(效果有点类似VS2012安装界面)

    为了界面友好,一般的操作时间较长时,都需要增加进度条提示.由于WPF自带的进度条其实不怎么好看,而且没啥视觉效果.后来,装VS2012时,发现安装过程中进度条效果不错,于是上网查了资料.学习了Mode ...

  9. PHP通用函数 - 日期生成时间轴

    /** * 时间轴函数, Unix 时间戳 * @param int $time 时间 */ function TranTime($time) { //$time = strtotime($time) ...

  10. 微信公众平台开发之微信access_token如何有效长期保存

    随着微信使用越来越广泛,微信公众平台开放了许多接口以提供更多个性化的服务,包括自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等,开发者在调用这些接口时,都需要传入一个相同的参数ac ...