python 形参_python中参数总结
一、形参和实参
函数参数的作用是传递数据给函数使用。
在使用的过程中,参数有两种形式:形式参数和实际参数
形参:定义函数时的参数
实参:调用函数时的参数
根据实际参数类型不同,将实际参数传递给形参的方式有两种:值传递和引用传递
值传递:实参为不可变对象,传递给形参后,形参的值改变,实参值不变。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
引用传递:实参为可变对象,传递给形参后,形参的值改变,实参值改变。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响
#值传递与引用传递
defdemo(obj):printobj
obj+=obj
obj1="123456"demo(obj1)print "函数调用后obj1:"+obj1
obj2=[1,2,3]
demo(obj2)print "函数调用后obj2:"+str(obj2)#结果
123456函数调用后obj1:123456[1, 2, 3]
函数调用后obj2:[1, 2, 3, 1, 2, 3]
二、位置参数、关键字参数、默认参数、可变参数
1.位置参数(必备参数)
函数调用时的数量,位置,参数类型必须和定义时的一致。
2.关键字参数
函数调用时,使用形参的名字=输入的参数值,此时位置可与定义时不一致。
3.默认参数
函数定义时,为参数设置一个默认值,当函数调用时,没有传入这个参数值,直接使用这个默认值。注意:
定义函数时,默认参数必须指向不可变对象;如果指向可变对象,多次调用,可能得到的不是意料之内的结果。
#默认参数必须指向不可变对象,如果指向可变对象,结果不对
def demo1(obj=[]):printobj
obj.append(1)def demo2(obj=None):if obj==None:
obj=[]printobj
obj.append(1)
demo1()
demo1()
demo1()
demo2()
demo2()
demo2()#结果
[]
[1]
[1, 1]
[]
[]
[]
4.可变参数(不定长参数)
可变参数有两种形式:一种是*args,另一种是**kwargs
*args:这种形式表示接受任意多个实际参数将其放到一个元组中。
**kwargs:这种形式表示接受任意多个实际参数将其放到一个字典中,类似关键字参数
#可变参数#*args形式
def demo3(*args):print "\n I like coffee:"
for i inargs:printi,#调用形式:可直接传一个tuple
demo3('巴西','土耳其')#也可以通过list或者tuple的变量传
obj1=['蓝山','摩卡','卡布奇诺']
demo3(*obj1)#**kwargs形式
def person(name, age, **kw):print'\n name:', name, 'age:', age, 'other:', kwdef demo4(**kwargs):print "\n name:age"
for i,j inkwargs.items():print i,':',j#调用:可直接传一个字典
person("Paul",77,sex="male",job="teacher")#也可以通过字典变量传
obj2={'Mary':23,'HanMeiMei':34,'Lily':12}
demo4(**obj2)#结果
I like coffee:
巴西 土耳其
I like coffee:
蓝山 摩卡 卡布奇诺
name: Paul age:77 other: {'job': 'teacher', 'sex': 'male'}
name:age
Lily :12Mary :23HanMeiMei :34
三、参数组合
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数组合使用。但是注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、关键字参数。
python 形参_python中参数总结相关推荐
- python 函数参数前面两个星号_Python中参数前面一个星号两个星号(*参数,**参数)起什么作用呢?...
摘要: 下文讲述Python中参数前面一个星号两个星号的功能分享,如下所示: 在Python语言中,我们经常看见参数前面 加上一个星号或两个星号 那么这些写法到底起什么作用呢? 下文将一一道来,如下所 ...
- python函数定义中参数列表里的参数是_python-函数(def)参数 及参数解构 变量 知识整理...
函数 python 函数 由若干语句组成的语句块.函数名称.参数列表构成,他是组织代码的最小单元 完成一定的功能 函数的作用: 结构化编程对代码的最基本的封装,一般按照功能组织一段代码 封装的目的是为 ...
- python参数化_Python 中如何实现参数化测试的方法示例
之前,我曾转过一个单元测试框架系列的文章,里面介绍了 unittest.nose/nose2 与 pytest 这三个最受人欢迎的 Python 测试框架. 本文想针对测试中一种很常见的测试场景,即参 ...
- python字符集_PYTHON 中的字符集
Python中的字符编码是个老生常谈的话题,今天来梳理一下相关知识,希望给其他人些许帮助. Python2的 默认编码 是ASCII,不能识别中文字符,需要显式指定字符编码:Python3的 默认编码 ...
- kafka python框架_Python中如何使用Apache Avro——Apache的数据序列化系统
了解如何创建和使用基于Apache Avro的数据,以实现更好,更有效的传输. 在这篇文章中,我将讨论Apache Avro,这是一种开源数据序列化系统,Spark,Kafka等工具正在使用该工具进行 ...
- python标准化_python中标准化
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! sdk 3.0 实现了统一化,各个语言版本的 sdk具备使用方法相同.接口调用方 ...
- python函数定义中参数列表里的参数是_python函数参数中的/和*是什么意思?
在python3.8之后函数参数中允许出现/和*号,/用来指明某些函数形参必须使用位置参数而非关键字参数的形式,*出现在函数参数中第一种含义可以表示为可变参数,一般写作*args:对于单独出现在参数中 ...
- python中的参数_python中参数解析
取得命令行参数 在使用之前,首先要取得命令行参数.使用sys模块可以得到命令行参数. import sys print sys.argv 然后在命令行下敲入任意的参数,如: python get.py ...
- python函数定义中参数列表里的参数是_python函数定义中的参数说明
原博文 2020-05-23 07:50 − > 描述函数定义时 涉及到的 位置参数,默认参数,关键字参数,可变参数等的概念及用法 ## 1 示例代码 ``` #! /usr/bin/env p ...
最新文章
- Lighttpd1.4.20源代码分析 笔记 状态机之错误处理和连接关闭
- 发现错误(Core Data 应用程序实践指南)
- Python中的那些“坑”
- c语言,如何产生随机数
- 2.1.4 进程之间的通信(共享通信、消息传递、管道通信)
- HDU 1248 寒冰王座(完全背包问题另类解法)
- Spring Boot之基于Dubbo和Seata的分布式事务解决方案
- android tcp socket框架_花了一个星期,我终于把RPC框架整明白了
- 从数据到代码——通过代码生成机制实现强类型编程[上篇]
- django缓存优化(二)
- SpringBoot中级篇-事务@Transactional注解无效
- Crack内网通积分规则(基于版本3.4.3035)
- 在串口调试助手上使用AT命名控制GPRS模块发送短信
- python 京东签到_Python实战—京东用户行为分析
- CKEditor5系列二:创建简单插件
- 网易云音乐歌单生成外链播放器
- config配置中文解释
- 多设备monkey测试工具_基于Tkinter GUI操作
- python之json扩展
- java获取天气的方法
热门文章
- netbeans6.8_NetBeans IDE 8.0和Java 8的新功能
- jax-ws cxf_Apache CXF – JAX-WS –简单教程
- Lombok,自动值和不可变项
- java 编写代码_Java 7:如何编写非常快速的Java代码
- appengine_Google Appengine登台服务器操作方法
- Java无处不在:使用DukeScript在任何地方运行一次编写
- 如何以及为什么序列化Lambda
- 领域驱动设计模式设计与实践_在域驱动设计中使用状态模式
- java桌面版_长大了Java! 提出Java桌面版
- 零垃圾创建数百万个对象