Python函数(二)-参数传递
位置参数
根据位置顺序来传递参数
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" def test(a,b): #a和b为形参
print(a)
print(b)
return 0 test(1,2) #1和2为实参
运行结果
按照位置顺序,1赋值给了a,2赋值给了b
关键字参数
根据形参的值来传递参数
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" def test(a,b):
print(a)
print(b)
return 0 test(b=1,a=2)
运行结果
把1直接赋值给了形参b,把2直接赋值给了形参a
同时使用位置参数和关键字参数
同时使用位置参数和关键字参数进行传参的话,位置参数优先于关键字参数
位置参数只能在关键字参数前面
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" def test(a,b,c):
print(a)
print(b)
print(c)
return 0 test(3,c=1,b=2)
运行结果
位置参数3传给形参a,关键字参数c和b位置顺序没多大关系
默认参数
默认参数可以对其传参数,也可以不传
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" def test(a,b=3):
print(a)
print(b)
return 0 test(1)
运行结果
没有给b传参数,b的值为默认参数
如果给b传参数的话,b的值为该参数值
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" def test(a,b=3):
print(a)
print(b)
return 0 test(1,2)
运行结果
参数组(不定参数)
如果实参和形参的个数没有对上的话,程序会报错,不定参数可以解决这个问题
不定参数有两种,一个是*args,还有一个是**kwargs(这两个是通过*和**定义的,后面的只是变量名)
不定参数要放在形参的最后
*args
把任意个位置参数转换成元组形式
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" def test(*args):
print(args) test(1,2,3,4,5,6,7)
test(*(1,2,3,4,5,6,7)) #结果是一样的
运行结果
也设置一个形参
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" def test(a,*args):
print(a)
print(args) test(1,2,3,4,5,6,7)
test(*(1,2,3,4,5,6,7)) #结果是一样的
运行结果
把第一个实参赋值给了第一个形参,其他多余的实参被赋给了*args
所以,*args要在形参的最后,除了**kwargs
**kwargs
把任意个关键字参数转换成字典形式
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" def test(**kwargs):
print(kwargs) test(name='John',age=22,sex='Man')
运行结果
获取**kwargs中值的方式
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" def test(**kwargs):
print(kwargs)
print(kwargs['name'])
print(kwargs['age'])
print(kwargs['sex']) test(name='John',age=22,sex='Man')
运行结果
给函数也传入位置参数和关键字参数
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" def test(a,b,**kwargs):
print(kwargs)
print(a)
print(b) test(1,name='John',age=22,sex='Man',b='abc')
运行结果
第一个位置参数被赋值给了第一个形参,如果关键字参数中有与形参对应的,就会把这个关键字参数赋值给这个形式参数,其他形参赋值给**kwargs字典
*args和**kwargs
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" def test(*args,**kwargs):
print(args)
print(kwargs) test(1,2,3,name='John',age=22)
运行结果
Python函数(二)-参数传递的更多相关文章
- python:函数的参数传递方法演示
""" 函数的参数传递方法演示 """ #1.位置传参 def normal(a, b, c): print("1.位置传参:&q ...
- python函数的参数传递问题---传值还是传引用?
摘要:在python中,strings, tuples, 和numbers是不可更改的对象,而list,dict等则是可以修改的对象.不可更改对象的传递属于传值,可更改对象属于传引用.想要在函数中传递 ...
- Python 函数的参数传递
C/C++中,传递参数的类型是可以指定的.一般来说,传递参数可以分为两种:值传递和引用传递.对于值传递,参数传递的过程中进行了复制操作,也就是说,在函数中对参数的任何改动都不会影响到传入的变量:对于引 ...
- Python—函数的参数传递
形参和实参 形参即形式参数,函数完成其工作时所需的信息.形参不占用内存空间,只有在被调用时才会占用内存空间,调用完了即被释放. 实参即实际参数,调用函数时传给函数的信息. # -*- coding: ...
- python初步学习-python函数 (二)
几个特殊的函数(待补充) python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数: filter.map.reduce.lambda.yield lambda >& ...
- python学习【第五篇】python函数 (二)
一.装饰器 装饰器:本质就是函数,功能是为其它函数添加附加功能 装饰器的原则: 不修改被修饰函数的源代码 不修改被修饰函数的调用方式 装饰器的知识储备: 装饰器 = 高阶函数 + 函数嵌套 + 闭包 ...
- Python 函数(二)
参数 以下是调用函数时可使用的正式参数类型: 必备参数 关键字参数 默认参数 不定长参数 必备参数 必备参数须以正确的顺序传入函数.调用时的数量必须和声明时的一样. 调用printme()函数,你必须 ...
- Python函数二(函数名,闭包,迭代器)之杵臼之交
函数名的使用: 函数名可以作为值,赋值给变量. 函数名可以作为参数传参给函数. 函数名可以作为返回值. 函数名可以作为元素存储在容器里. 闭包:在嵌套函数内,使用外层局部变量(非全局变量)就是一个闭包 ...
- Python 函数 参数传递
参数传递 在 python 中,类型属于对象,变量是没有类型的: a=[1,2,3] a="Runoob" 以上代码中,[1,2,3] 是 ...
随机推荐
- 关于Json如何转换成对象及获值问题!
var result = eval('('+result+')'); result为Json 转换成var result对象,可以 if(result.success){ window.locatio ...
- 执行Oracle存储过程报权限不足的解决方法
当前Oracle用户sofa拥有connect.dba.resource的角色权限,但奇怪的是却没有执行Oracle Procedure的权限.后来通过查找资料发现:如果sofa用户需要执行Proce ...
- Spring初学之使用JdbcTemplate
Spring中使用JdbcTemplate.JdbcDaoSupport和NamedParameterJdbcTemplate来操作数据库,但是JdbcTemplate最常用,最易用. jdbc.pr ...
- 在python3.x上安装suds 并访问webservice
suds...py3很乱.. 一开始直接使用命令行:pip install suds安装,结果报错ImportError: No module named client,然后就自然的pip insta ...
- IOS开发--解析复杂json数据
json的自我介绍:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人阅 ...
- spring boot: java @interface注解
@interface是用来自定义JAVA Annotation的语法,@interface是用来自定义注释类型的 注释类型的定义跟定义一个接口相似,我们需要在 interface这个关键字前面加上一个 ...
- ICollectionView
引自:http://www.cnblogs.com/Joetao/articles/2168577.html ICollectionView让MVVM更简单 (一)ICollectionView的 ...
- Python列表:元素的修改、添加、删除和排序
本文参考自<Python编程:从入门到实践>,作者:Eric Matthes,译者:袁国忠 操作 语法 举例 结果 修改元素 motocycles = ['honda', 'yamah ...
- zoj3229 有源汇上下界最大流
题意:有一个人每天给妹子拍照,每个妹子有最少拍照数,每天有最大拍照数,每天只能给某些特定的妹子拍照,求最大拍照数 题解:很容易看出来的有源汇上下界最大流,对于有源汇 的上下界最大流,我们按照无源汇的操 ...
- SVN中如何为文件夹中的所有文件加锁
经过一段时间的试用,发现不加锁的共享式开发还是不太方便.还是全部设置为独占式加锁,如有共享式修改需求再设置为不加锁比较好. 经过一番摸索,总结出如下的加锁方式是可行的: 注:第一步是必须的,必须完成第 ...