一、形参和实参

函数参数的作用是传递数据给函数使用

在使用的过程中,参数有两种形式:形式参数和实际参数

形参:

定义函数的参数

实参:

调用函数时的参数

根据实际参数类型不同,将实际参数传递给形参的方式有两种:值传递和引用传递

值传递:

实参为不可变对象,传递给形参后,形参的值改变,实参值不变。(如 fun(a),传递的只是 a 的值,没有影响 a 对象本身,比如在 fun(a) 内部修改 a 的值,只是修改另外一个赋值的对象,不会影响 a 本身)

引用传递:

实参为可变对象,传递给形参后,形参的值改变,实参值也会改变(如( fun(la),则是将 la 真正的传过去,修改后 fun 外部的 la 也会收影响)

# 值传递和引用传递

def fun(obj):

print(obj)

obj+= 1obj1= "123456"demo(obj1)

print("函数调用后 obj1:" +obj1)

obj2= [1 ,2,3]

demo(obj2)

print("函数调用后:"+obj2)

# 结果123456函数调用后obj1:123456[1, 2, 3]

函数调用后obj2:[1, 2, 3, 1, 2, 3]

二、位置参数、关键字参数、默认参数、可变参数

1、位置参数(必备参数)

函数调用时的数量,位置,参数类型必须和定义的一样

2、关键字参数

函数调用时,使用形参的名字 = 输入的参数值,此时位置可与定义时不一致

3、默认参数

函数定义时,为参数设置一个默认的值,当函数调用时,没有传入这个参数值,直接使用这个默认值,

注意:定义函数时,默认参数必须指向不可变参数,如果指向可变对象,多次调用,可能时得到的不是意料之内的结果。

# 默认参数必须值相不可变对象,如果指向可变对象,结果不对

def demo1(obj=[]):

print( obj )

obj.append(1)

def demo2(obj=None):if obj ==None:

obj=[]

print(obj)

obj,append(1)

demo1()

demo1()

demo1()

demo2()

demo2()

demo2()

#结果

[]

[1]

[1, 1]

[]

[]

[]

4、可变参数(不定长参数)

可变参数有两种形式:一种时 *arg, 一种时 ** kwargs

*args :

这种形式表示接受任意多个实际参数将其放到一个与那组中

**kwargs:

这种形式表示接受任意多个实际参数将其放到一个字典中,类似关键字参数

#可变参数

#*args形式

def demo3(*args):

print"\n I like coffee:"

for i inargs:

print i,

#调用形式:可直接传一个tuple

demo3('巴西','土耳其')

#也可以通过list或者tuple的变量传

obj1=['蓝山','摩卡','卡布奇诺']

demo3(*obj1)

#**kwargs形式

def person(name, age,**kw):

print'\n name:', name, 'age:', age, 'other:', kw

def 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 的参数总结相关推荐

  1. python动态参数_python动态参数

    Python的动态参数有两种,分别是*args和**kwargs,这里面的关键是一个和两个星号的区别,而不是args和kwargs在名字上的区别,实际上你可以使用*any或**whatever的方式. ...

  2. python查看函数参数_python函数参数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 最简单的无参数def functionname(): pass function ...

  3. Python数据可视化——图型参数介绍

    前言         利用Python绘制常见的统计图形,例如条形 图.饼图.直方图.折线图.散点图等,通过这些常用图形的展现,将 复杂的数据简单化.这些图形的绘制可以通过matplotlib模块.p ...

  4. python中的sep参数_Python sep参数使用方法详解

    Python sep参数使用方法详解 这篇文章主要介绍了Python sep参数使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Pyth ...

  5. python 启动参数_python启动参数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 开发准备cas 的 python sdk 包含了用于访问和操作 cas 的所有 ...

  6. python函数参数值_python 函数参数

    # 函数的参数分为两种: # 形参:在定义阶段括号内指定的参数,在定义阶段不暂用内存空间,相当于变量名 # 实参:在调用阶段括号内传入的值,相当于值 # 在调用阶段,实参的值会绑定给形参,在调用结束后 ...

  7. python 默认参数后接可变参数_Python可变参数会自动填充前面的默认同名参数实例...

    Python可变参数会自动填充前面的默认同名参数实例 最近在学习Python的时候遇到一个知识点,在此记录下来 可变参数会自动填充前面的同名默认参数 比如下面这个函数 def add_student( ...

  8. python收集参数_python收集参数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python参数传递时,主要有位置参数和关键字参数. 1. 位置参数:顾名思义, ...

  9. python如果否则_Python传递参数(如果已定义),否则使用defau

    我试图用字典的值进行函数调用.在 该函数接受多个参数,大多数参数具有默认值.在def foo(name, a=None, b='', c=12): print(name,a,b,12) 如果字典被完全 ...

最新文章

  1. R语言t分布函数Student t distribution(dt, pt, qt rt )实战
  2. Docker 建立镜像流程
  3. 5首页加载慢_UIViewController 预加载方案浅谈
  4. NIO详解(一):java网络编程IO总结(BIO、NIO、AIO)
  5. python爬虫实战:利用scrapy,短短50行代码下载整站短视频
  6. 机器视觉:makefile编译调用Caffe框架的C++程序
  7. 《Python Cookbook 3rd》笔记(1.5):实现一个优先级队列
  8. ionic3 cordova ionic-native插件
  9. angular 权限 php,PHP,Angular,HTACCESS-仅允许来自源域的请求
  10. android代码删除sd卡文件在哪里,android - 如何从SD卡中删除文件?
  11. Microsoft Visual Studio Tools for AI
  12. webstorm简单介绍,webstrom基本使用
  13. java for循环死循环_Java for循环进化
  14. “21天好习惯”第一期-6
  15. git remote: Permission to denied
  16. 张家口地区某一级公路设计--河北建筑工程学院
  17. java解析数组_Java解析Json数组对象
  18. 中标麒麟NeoKylin系统使用--使用UFEI安装中标麒麟系统过程中/dev/disk/by-label/NeoKylin does not exit问题的解决
  19. 一键下载优美图库图片(附源码了哦)
  20. Sai 2 打开文件显示没有注册类的解决方法

热门文章

  1. shell 编程-Expect
  2. linux 虚拟一个40段ip,linux – 接口上的Multiples ip地址.我想指定其中一个输出
  3. 注意,Fastjson 最新高危漏洞来袭!
  4. 剑指offer48-最长不含重复字符的子字符串(双指针经典)
  5. luogu3413 萌数
  6. Java学习关于集合框架的基础接口--Collection接口
  7. layout文件夹中activity_main.xml与fragment_main.xml文件的处理记录
  8. Windows Store App 图像
  9. ASP.NET MVC的JavaScriptResult
  10. java maven 读取配置文件_Java项目和maven项目中如何获取设置配置文件中的属性