版本:一般用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. 自己定义popupwindow二三事

    效果图: 代码: public class ViewActivity extends Activity implements View.OnClickListener { PopupWindow po ...

  2. hadoop partitioner个数与reducer个数的试验

    job.setPartitionerClass(myPartitioner.class);//设置了5个 job.setNumReduceTasks(2); 1.当分区数等于rducer数量时,正常运 ...

  3. Auto Layout之创建布局约束

    上篇文章给大家介绍了AutoLayout 的由来及OC中关于AutoLayout 的类.这篇文章将向大家介绍,在iOS 编程中怎样使用Auto Layout 构建布局约束. 创建布局约束 创建布局约束 ...

  4. Mysql 复制表数据(表结构相同)

    [1]Mysql 复制表数据(表结构相同) -- 方式一: create table table_name_dest as select * from table_name_src; -- 方式二: ...

  5. STM32 Option Bytes位 重置为出厂设置

    STM32 Option Bytes位 重置为出厂设置 JLINK 按照说明,在IAR安装目录下找到指定的运行程序JLinkSTM32.exe(D:\Program Files (x86)\IAR S ...

  6. Java线程面试题:设计四个线程,其中两个线程每次对 j 加 1,另外两个每次对 j 减 1,程序如下。

    package thread; /** * Java线程面试题 * @author zhongfg * @date 2015-06-16 */ public class ThreadInterview ...

  7. centos7.0 tomcat9.0 ip访问 manager

    版本:Tomcat 9.0 问题:新安装的tomcat,用其他机器访问tomcat的Server Status.Manager App.Host Manager三个页面均显示403(本机访问没有问题) ...

  8. iOS 3DES加密

    本文转载至 http://www.cocoachina.com/bbs/read.php?tid=177167 -(NSString *)TripleDES:(NSString *)plainText ...

  9. 【python】-- MySQL简介、安装、操作

    MySQL简介.安装.操作 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数据存储 ...

  10. Virtualbox报错------> VirtualBox虚拟机下鼠标不正常的解决方法

    在Virtualbox虚拟机下,突然发现鼠标使用不正常.出现2个鼠标,一个是Ubuntu主机下面的鼠标,一个是Window7下的鼠标,但是Win7下的鼠标不可以看得到,但是点击鼠标左右键可以看到有反应 ...