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] 是 ...
随机推荐
- processing学习整理---Structure
1.语法介绍:与java很相近,可以认为就是java. 2.运行命令(linux): processing-java --output=/tmp/processing-xx --run --force ...
- HBase学习2(HBase shell)
HBase 常用命令 查看当前用户:whoami 创建表:create '表名', '列族名1','列族名2','列族名N' 查看所有表:list 描述表: describe '表名' 判断表存在: ...
- jQuery颜色面板插件
/** * jQuery颜色面板插件 * * 使用方法:input框的id默认为inputObj,button框的id默认为btnObj,也可以自定义aaa,bbb * 1.初始化颜色面板:$.col ...
- Vue v-on v-model 组合使用
v-on vue可以使用v-on指令来监听事件,方便与用户进行交互.我们不需要修改DOM中的数据,所有的操作都由Vue来实现,你编写的代码只需要关注底层逻辑.这也是Vue强大的地方之一 <!DO ...
- Memcached的特点和使用
特点: Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度 Memcached的缓存是一种分布式的,可以让 ...
- 20个PHP面试题及答案
php学了那么久了,先来小试牛刀,看下这些PHP程序员面试题都会不会?初级题目1.问题:请用最简单的语言描述PHP是什么?答:PHP全称:Hypertext Preprocessor,是一种用来开发动 ...
- poj2112 最大流+floyd+二分
题意:给一堆点,一部分是牛,一部分是机器,每头牛必须要走到一个机器,每个点之间有距离,要求每头牛都能找得到一台机器(机器有最大容量)的情况下,走的最远的牛距离最小 题解:二分答案,小于该距离的边才能加 ...
- zoj2314 无源汇上下界可行流
题意:看是否有无源汇上下界可行流,如果有输出流量 题解:对于每一条边u->v,上界high,下界low,来说,我们可以建立每条边流量为high-low,那么这样得到的流量可能会不守恒(流入量!= ...
- java常用封装方法
public Map<String,String> getDateByStr(String str,String startDate,String endTime){ Map<Str ...
- Spring_总结_02_依赖注入
一.前言 本文承接上一节:Spring_总结_01_Spring概述 在上一节中,我们了解了Spring的最根本使命.四大原则.六大模块以及Spring的生态. 这一节我们开始了解Spring的第二大 ...