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] 是 ...
随机推荐
- 关于tcp的知识记录
1. 概念 TCP(Transmission Control Protocol,传输控制协议),是一种面向连接的,可靠地,基于字节流的传输层通信协议.当应用层向TCP层发送用于网络间传输的用8位字节表 ...
- JavaWeb中的中文编码问题
一.为什么要编码? 1.在计算机中存储信息的最小单元是1字节,即8个bit,所以能表示的字符范围是0~255个. 2.人类要表示的符号太多,无法用1个字节来完全表示. 这就是矛盾,要解决这个矛盾,就出 ...
- DEDE整站动态化或整站静态化设置方法
简单说下的是,网站空间小而数据库还可以的话,使用动态浏览也是不错的,但是官方的程序默认的生成静态浏览的,只要一发布文章,就会自动生成静态页面,难道做发布文章还要一个一个去更改其他的设置吗?麻烦.对于采 ...
- 使用PHP+Swoole实现的网页即时聊天工具:PHPWebIM
使用PHP+Swoole实现的网页即时聊天工具 全异步非阻塞Server,可以同时支持数百万TCP连接在线 同时支持websocket+comet2种兼容协议,可用于所有种类的浏览器包括IE 拥有完整 ...
- docker安装---CentOS_7
操作系统要求 要安装Docker,您需要64位版本的CentOS 7.步骤: 卸载旧版本 Docker的旧版本被称为docker或docker-engine . 如果这些已安装,请卸载它们以及关联 ...
- 终端命令对字符串进行sha1、md5、base64、urlencode/urldecode
sha1.md5.base64 mac $ echo -n foo|shasum 0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33 - $ 2c26b46b68ffc6 ...
- Ceph中Bufferlist的设计与使用
转自:https://www.ustack.com/blog/bufferlist/ 如果非要在整个Ceph中,找出一个类最重要,我觉得非Bufferlist莫属了,原因很简单,因为Bufferlis ...
- mongodb数据文件结构——record是内嵌BSON的双向链表,多个record或索引组成extent
数据文件结构 Extent 在每一个数据文件内,MongoDB把所存储的BSON文档的数据和B树索引组织到逻辑容器“Extent”里面.如下图所示(my-db.1和my-db.2 是数据库的两个数据文 ...
- android中shape的属性
<shape> <!– 实心 –> <solid android:color=”#ff9d77″/> <!– 渐变 –> <gradient an ...
- java关键字---final和transient
首先,说说final. final关键字可以修饰变量,方法,类. final变量: 需求: 1 需要一个永不改变的编译时常量 2 ...