版本:一般用python2.7.6

python3.4.3会标注

1、不可变对象(整数、字符串)通过对象引用进行传递,在函数内部不可改变。

 >>> def f(a):
... a=100
...
>>> b=88
>>> f(b)
>>> b
88

2、可变对象(列表、字典)也是通过对象引用进行传递,在函数内部可以改变。(原对象本地改变,但是重新赋值不会改变)

 >>> def F(a):
... a=[1,2,3]
...
>>> b=[]
>>> F(b)
>>> b
[]
 >>> def F(a):
... a.append(3)
...
>>> F(b)
>>> b
[3]

3、参数匹配

默认参数和关键字参数

 >>> def F(a):
... a.append(3)
...
>>> F(b)
>>> b
[3]
>>>
KeyboardInterrupt
>>> def F(a,b,c):
... print(a,b,c)
...
>>> F(1,2,3)
(1, 2, 3)
>>> F(c=3,a=1,b=2)
(1, 2, 3)
>>> def F(a,b=2,c=3):
... print(a,b,c)
...
>>> F(1,4)
(1, 4, 3)

4、任意参数匹配

*和**支持任意数目的参数

*把参数收集到一个元组。

 >>> def F(*arges):
... print (arges)
...
>>> F(1,'a',['',3],{'a':1,'b':2})
(1, 'a', ['', 3], {'a': 1, 'b': 2})

**只对关键字参数有效,将关键字参数传递给一个字典,之后可以用字典进行处理。

 >>> def F(**arges):
... print(arges)
...
>>> F()
{}
>>> F(a:1)
File "<stdin>", line 1
F(a:1)
^
SyntaxError: invalid syntax
>>> F(a=1,b=2)
{'a': 1, 'b': 2}
>>> F(1=a,2=b)
File "<stdin>", line 1
SyntaxError: keyword can't be an expression
>>> F(''=a,''=b)
File "<stdin>", line 1
SyntaxError: keyword can't be an expression
>>> F(1='a',2='b')
File "<stdin>", line 1
SyntaxError: keyword can't be an expression
>>> F('a'=1,'b'=2)
File "<stdin>", line 1
SyntaxError: keyword can't be an expression
>>> F(a=1,b=2)
{'a': 1, 'b': 2}
>>> F(a=[1],b=2)
{'a': [1], 'b': 2}
>>>

可以传递多个参数的形式

 >>> def F(*a,**b):
... print (a,b)
...
>>> F(1,'a',[3,3],x=1,y='e')
((1, 'a', [3, 3]), {'y': 'e', 'x': 1})
 >>> def F(a,*b,**c):
... print(a,b,c)
...
>>> F('s','s','s',s='s')
('s', ('s', 's'), {'s': 's'})
>>>

上面第二个和第三个‘s'被收集到一个元组

只能用关键字的参数(python3以上)

 >>> def F(a,*b,c):
... print (a,b,c)
...
>>> F(1,2,'a',c=3)
1 (2, 'a') 3
 >>> def F(a,*,b,c):
... print (a,b,c)
...
>>> F(1,b='a',c=3)
1 a 3

第一个例子*b后的关键字c必须使用c=3等式方式赋值

第二个例子*后的b和c必须使用等式赋值的方式

python函数的参数匹配的更多相关文章

  1. Python函数可变参数*args及**kwargs详解

    初学Python的同学们看到代码中类似func(*args, **kwargs)这样的函数参数定义时,经常感到一头雾水. 下面通过一个简单的例子来详细解释下Python函数可变参数*args及**kw ...

  2. 【转】Python函数默认参数陷阱

    [转]Python函数默认参数陷阱 阅读目录 可变对象与不可变对象 函数默认参数陷阱 默认参数原理 避免 修饰器方法 扩展 参考 请看如下一段程序: def extend_list(v, li=[]) ...

  3. 详解python函数的参数

    详解python函数的参数 一.参数的定义 1.函数的参数在哪里定义 在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号, 隔开 案列: ...

  4. 可变数据类型不能作为python函数的参数

    可变数据类型:列表.字典 不可变数据类型:整型.浮点型.字符串.元组 为什么可变数据类型不能作为python函数的参数?请看以下例子: def foo(a=[]): a.append(1) retur ...

  5. python 函数、参数及参数解构

    函数 数学定义 y=f(x), y是x函数,x是自变量.y=f(x0,x1...xn) Python函数 由若干语句组成的语句块,函数名称,参数列表构成,它是组织代码的最小单位 完成一定的功能 函数作 ...

  6. python 函数传递参数的多种方法

    python中函数根据是否有返回值可以分为四种:无参数无返回值,无参数有返回值,有参数无返回值,有参数有返回值. Python中函数传递参数的形式主要有以下五种,分别为位置传递,关键字传递,默认值传递 ...

  7. python函数动态参数详解

    Python的动态参数: 1,参数前一个"*":在函数中会把传的参数转成一个元组. def func (*args): print(args) func(123,1,2,'a') ...

  8. Python 函数的参数知识汇总

    函数搞不熟,后边就晕头转向了,在此重新归纳一下廖大神的函数教程,加深记忆 一.函数的参数分为: 位置参数 def power(x): # x 就是power(x)的一个位置参数,我们调用power(x ...

  9. Python学习笔记(四)Python函数的参数

    Python的函数除了正常使用的必选参数外,还可以使用默认参数.可变参数和关键字参数. 默认参数 基本使用 默认参数就是可以给特定的参数设置一个默认值,调用函数时,有默认值得参数可以不进行赋值,如: ...

随机推荐

  1. 《TomCat与Java Web开发技术详解》(第二版) 第六章节对应CD附带的helloapp无法启动的问题解决

    首先记录一下如何解决此章节CD中附带的helloapp无法启动的问题 我用的tomcat版本是:7.0.47:为了便于控制,针对此章节的helloapp,我在tomcat/conf/Catalina/ ...

  2. dede 文章列表页如何倒序排列

    {dede:arclist row='6' typeid='18' orderway='asc'} <li>;<a href="[field:arcurl/]"& ...

  3. jenkins和gitlab版本

  4. yum 无法安装mysql

    昨晚帮盆友搭建服务器时,一直出现yum mysql 无法安装.报错信息如下: Transaction Check Error:  file /etc/my.cnf from install of my ...

  5. 使用JMeter测试Java项目

    一. Apache JMeter工具 1)简介 JMeter——一个100%的纯Java桌面应用,它是Apache组织的开放源代码项目,它是功能和性能测试的工具.JMeter可以用于测试静态或者动态资 ...

  6. 由浅到深理解ROS(3)-命名空间

    全局命名空间: /rosout前面的反斜杠“/”表明该节点名称属于全局命名空间.之所以叫做全局名称因为它们在任何地方(包括代码.命令行工具.图形界面工具等的任何地方)都可以使用.无论这些名称用作众多命 ...

  7. PHP面试题总结

    2017年5月15日19:20:26 1.请用最简单的语言告诉我PHP是什么? PHP全称:Hypertext Preprocessor,是一种用来开发动态网站的服务器脚本语言. 2. 面试题地址:h ...

  8. python 微信跳一跳和源码解读

    刚好周末,想研究一下前阵子很火的微信跳一跳 下面进入正文. 本文适用对象为WIN10系统,安卓用户.目的在于让丝毫没有接触过Python的小伙伴都能成功运行,如果你恰好是这样的对象,那么跟着我开始操作 ...

  9. Linux下的目录操作

    . 此层目录 .. 上层目录 - 前一个工作目录 ~ 当前用户的工作目录 ~account 表示account的家目录 1.cd:改变目录,change Directory的缩写. 2.pwd:显示当 ...

  10. Jmeter 04 JMeter 负载与监听

    1. 场景设计 2. 场景设置 3. JMeter性能参数配置 4. 测试监听