# 函数的参数分为两种:

# 形参:在定义阶段括号内指定的参数,在定义阶段不暂用内存空间,相当于变量名

# 实参:在调用阶段括号内传入的值,相当于值

# 在调用阶段,实参的值会绑定给形参,在调用结束后解除绑定

def foo(x, y):

print(x, y)

foo(1, 2)

####################################################

# 在python中参数的分类:

# 1、位置参数:按照从左到右的顺序依次定义的参数

# 通常用于经常变化的参数

# 位置形参:定义完之后,必须被传值,多一个少一个都不行

# 位置实参:与形参一一对应传值

def foo1(x, y):

print(x, y)

foo1(1 ,2)

##############################################################################

# 关键字参数:在函数调用时,按照key=value的形式定义的实参

# 特点:指名道姓的给形参传值,不再依赖于位置

# 注意:关键字实参必须在位置实参的后面

# 不能为用一个参数赋值多次

def foo2(x, y):

print(x, y)

foo1(y=1 ,x=2)

############################################################################

# 3、默认参数:在函数定义阶段,就已经为形参赋值了

# 通常用于不变化的情况

# 默认参数必须放到位置形参后面

# 默认参数的值只在定义时被赋值一次,定义之后的修改都不会影响默认参数的值

# 默认参数的值通常应该是不可变类型

def foo3(x, y=1):

print(x,y)

foo3(1, 6) # 输出结果:1 6

foo3(5) # 输出结果:5 1

#############################################################

# 默认参数的值只在定义时被赋值一次,定义之后的修改都不会影响默认参数的值

res = 1

def foo5(x, y=res):

print(x, y)

res = 10

foo5('aaaaa') # 输出结果:aaaaa 1

###############################################################

4、可变长参数:在调用函数时,实参值的个数不固定

# 实参的形式:位置实参、关键字实参

对于实参个数不确定的情况,形参的解决方案:

1)、*(按照位置实参传值的情况)

输出结果中,*部分为元祖类型

def foo6(x, y, *z):

print(x, y, z)

foo6(1, 2, 3, 4, 5, 6)

输出结果:1 2 (3, 4, 5, 6)

def foo6(x, y, *z):

print(x, y, z)

foo6(1, 2, *[3, 4, 5, 6]) 等同于 foo6(1, 2, 3, 4, 5, 6)

输出结果:1 2 (3, 4, 5, 6)

def foo6(x, y, *z):

print(x, y, z)

foo6(*[1, 2, 3, 4, 5, 6]) 等同于 foo6(1, 2, 3, 4, 5, 6)

输出结果:1 2 (3, 4, 5, 6)

def foo6(x, y, *z):

print(x, y, z)

foo6(*{'a':5, 'b':7, 'c':8, 'd':0})

输出结果:a b ('c', 'd')

def foo6(x, y, *z):

print(x, y, z)

foo6(*(1, 2, 3, 4, 5))

输出结果:1 2 (3, 4, 5)

def foo6(name, age):

print(name, age)

foo6(*{'name':'keke', 'age':7})

输出结果:name age

2)、 **(按照关键字实参传值的情况)

**部分,实参类型为字典类型

输出结果中,**部分为字典类型

def foo6(x, y, **z):

print(x, y, z)

foo6(y=1, x=2, a=3, b=4, c=5)

输出结果:2 1 {'a': 3, 'b': 4, 'c': 5}

def foo6(x, y, **z):

print(x, y, z)

foo6(y=1, x=2, **{'a':5, 'b':7, 'c':8})

输出结果:2 1 {'a': 3, 'b': 4, 'c': 5}

def foo6(x, y, **z):

print(x, y, z)

foo6(y=1, **{'a':5, 'b':7, 'c':8})

输出结果:TypeError: foo6() missing 1 required positional argument: 'x'

def foo6(name, age):

print(name, age)

foo6(**{'name':'keke', 'age':7})

输出结果:keke 7

def bar(x, y, z):

print(x, y, z)

def foo6(*args, **kwargs):

bar(*args, **kwargs)

foo6(1, y=2, z=3)

输出结果:1 2 3

############################################################################

命名关键字参数:指的是定义在*后的参数,该参数必须被传值(除非它有默认值),

而且必须按照key=value的形式传值

def bar(x, y, *, m, n):

print(x, y, m, n)

bar(1, 2, m=3, n=5)

输出结果:1 2 3 5

python函数参数值_python 函数参数相关推荐

  1. python函数调用位置_python函数定义,调用,传参,位置参数及关键字参数,返回值

    使用函数是真正开始编程的第一步,函数y=f(x)我们并不陌生,对x进行一顿操作得到一个值y.给不同的x,进行相同的操作,得到相应的y值. 程序层面函数是执行特定任务的一段代码,将一段代码定义成函数并为 ...

  2. python怎么画参数函数图像_python函数 图

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 例如:myfunc(1,2,3)myfunc(abc,2,def)myfunc( ...

  3. 用python画竹子_python函数

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这 ...

  4. python采用函数式_python -- 函数以及函数式编程

    函数以及函数式编程 到目前为止,我们的Python 代码已经实现了小的分块.它们都适合处理微小任务, 但是我们想复用这些代码,所以需要把大型代码织成可管理的代码段.代码复用的第一步是 使用函数,它是命 ...

  5. python中mod函数用法_Python 函数的介绍和用法

    最近要回学校开始做毕设了,准备做个有关算法的,听说python运算好一些,特地来学一学. 先从基础开始啊---------- 函数 可以直接从Python的官方网站查看文档: http://docs. ...

  6. python中def fun 定义函数列表_python函数

    # -*- coding:utf-8 -*- #yys #python 3.7.2 # 1.定义函数.调用函数 # 函数:组织好的.可重复使用的.用户实现单一或者关联功能的代码段. # 函数能够提高应 ...

  7. python函数结构_Python函数基础

    Python中使用def关键字来声明函数,声明函数的格式为: 有3个需要注意的地方:函数名后面必须加冒号 如果函数体和def不在同一行,则必须缩进 return指定函数返回值,用来结束函数但retur ...

  8. python所有函数用法_python函数用法总结

    空函数 如果想定义一个什么事也不做的空函数,可以用pass语句: def nop(): pass pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码 ...

  9. python所有函数用法_Python函数使用方法(高级用法)

    前面章节,已经介绍了 Python 函数的所有基本用法和使用注意事项.但是,Python 函数的用法还远不止此,Python 函数还支持赋值.作为其他函数的参数以及作为其他函数的返回值. 首先,Pyt ...

最新文章

  1. 计蒜客 三值排序 (模拟)
  2. 阅读架构漫谈(三)笔记
  3. java basic认证_Basic认证
  4. Markdown中数学公式整理
  5. ubuntu和linux服务器,Linux服务器系统CentOS和Ubuntu Server如何选择? | 偶乃秋辰
  6. 【完整版-斯坦福-密码学】全13讲(绪论)【笔记】
  7. (12)Node.js核心模块fs—实现文件复制和压缩
  8. 面向对象的设计原则-类设计原则
  9. 双目标定,匹配的笔记
  10. 国内的优秀HTML5前端开发框架
  11. 【Q】CentOS-部署后,只有本机可以访问的问题
  12. dell服务器分区表修复,完美恢复原产Dell Recovery软件、修复环境(添加教程)
  13. Boost电路硬件设计实例
  14. imx6 Android gpu 内存,Use vivante GPU on IMX6 with 4.14 kernel
  15. [html5游戏开发]数独游戏-完整算法-开源讲座
  16. ajax跨域数据不完整,Ajax交互,浏览器接收不到服务器的Json数据(跨域问题)
  17. 在CAD里怎么测量面积?
  18. 对random.seed()的理解
  19. 由酷6员工猝死想到的:IT民工 我该拿什么拯救你
  20. python中如何创建一个txt文件

热门文章

  1. Android Studio 字体大小设置
  2. Java将excel文件转成json文件(有错误)
  3. Linux操作系统基本命令
  4. LaTex使用Excel实现快速插入表格
  5. matlab矩阵的LU分解
  6. 洛谷 1485 火枪打怪
  7. JVM-class文件完全解析-字段表集合
  8. 自适应共振理论网络 ART
  9. ajax图片上传,基于firefox
  10. 最新实战讲解.htaccess文件rewrite规则