• 位置参数

根据位置顺序来传递参数

# -*- 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函数(二)-参数传递的更多相关文章

  1. python:函数的参数传递方法演示

    """ 函数的参数传递方法演示 """ #1.位置传参 def normal(a, b, c): print("1.位置传参:&q ...

  2. python函数的参数传递问题---传值还是传引用?

    摘要:在python中,strings, tuples, 和numbers是不可更改的对象,而list,dict等则是可以修改的对象.不可更改对象的传递属于传值,可更改对象属于传引用.想要在函数中传递 ...

  3. Python 函数的参数传递

    C/C++中,传递参数的类型是可以指定的.一般来说,传递参数可以分为两种:值传递和引用传递.对于值传递,参数传递的过程中进行了复制操作,也就是说,在函数中对参数的任何改动都不会影响到传入的变量:对于引 ...

  4. Python—函数的参数传递

    形参和实参 形参即形式参数,函数完成其工作时所需的信息.形参不占用内存空间,只有在被调用时才会占用内存空间,调用完了即被释放. 实参即实际参数,调用函数时传给函数的信息. # -*- coding: ...

  5. python初步学习-python函数 (二)

    几个特殊的函数(待补充) python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数: filter.map.reduce.lambda.yield lambda >& ...

  6. python学习【第五篇】python函数 (二)

    一.装饰器 装饰器:本质就是函数,功能是为其它函数添加附加功能 装饰器的原则: 不修改被修饰函数的源代码 不修改被修饰函数的调用方式 装饰器的知识储备: 装饰器 = 高阶函数 + 函数嵌套 + 闭包 ...

  7. Python 函数(二)

    参数 以下是调用函数时可使用的正式参数类型: 必备参数 关键字参数 默认参数 不定长参数 必备参数 必备参数须以正确的顺序传入函数.调用时的数量必须和声明时的一样. 调用printme()函数,你必须 ...

  8. Python函数二(函数名,闭包,迭代器)之杵臼之交

    函数名的使用: 函数名可以作为值,赋值给变量. 函数名可以作为参数传参给函数. 函数名可以作为返回值. 函数名可以作为元素存储在容器里. 闭包:在嵌套函数内,使用外层局部变量(非全局变量)就是一个闭包 ...

  9. Python 函数 参数传递

    参数传递    在 python 中,类型属于对象,变量是没有类型的:        a=[1,2,3]        a="Runoob"    以上代码中,[1,2,3] 是 ...

随机推荐

  1. R语言笔记004——R批量读取txt文件

    R批量读取txt文件 本文数据,代码都是参考的是大音如霜公众号,只是自己跟着做了一遍. path<-'C:\\Users\\Administrator\\Desktop\\docs' docs& ...

  2. BZOJ 1941 kd-tree

    模板题 题意说的可能有点不清楚 一开始的点必须在给定的n个点里面 所以枚举点 然后ask最大和最小值 估价函数中 最大值的写法和最小值不同 全部取max 而最小值在估价时 如果在某个点管辖的空间里 就 ...

  3. MySQL数据库的安装以及配置过程

    首先,下载 MySQL 数据库的安装包:mysql-5.7.17.msi.(百度一下自己下吧) 然后点击这里,啊哈哈哈哈哈哈哈. ----------------------------------- ...

  4. JavaWeb -- http-equiv=refresh跳转的时候出现Session 丢失, 解决办法。。

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  5. Tair分布式缓存

    淘宝缓存架构         redis很好用,提供缓存服务.相比memcached多了新数据结构和主从模式增加可用性.不过redis有一点不能满足一些互联网公司开发者需求.           re ...

  6. git将代码上传到coding分支

    分支 我理解的分支 分支,简单地讲就是一个项目的不同分支存放不同的代码,这样的话一个项目就有了几分代码,但是最终的代码一般放在主分支里面,即master分支里,分支在实际中可以方便的隔离开发. 假设你 ...

  7. Generator函数介绍

    Generator函数 基本概念 英文意思为 "生成器". generator函数是es6提供的一种异步编程解决方案,语法行为与传统函数完全不同.从状态上,首先我们把他理解成一种状 ...

  8. 51nod 1255 贪心/构造

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1255 1255 字典序最小的子序列 题目来源: 天津大学OJ 基准时间限 ...

  9. App自动化测试探索(一)借助Appium实现APP的自动化测试

    移动应用测试十大要领: 选择系统平台 选择测试设备的品牌 注意行业和设备区分 关注Android的更新 不要忘记老设备 灵活使用Web分析工具 注意区分地区.运营商和网络技术 掌握智能手机的屏幕分辨率 ...

  10. svn默认地址老发生改变,记下默认路径

    C:\Users\Administrator\AppData\Roaming\Subversion