zoukankan      html  css  js  c++  java
  • day9 函数的形参和实参

    什么是形参?

    什么是实参

    注意点

    实参值(变量值)与形参(变量名)的绑定关系只在函数调用的时才会生效绑定,当函数调用结束后,立刻解除绑定

    什么是位置参数

    1位置形参(定义时)调用时必须为其传值,不能多不能少

    2位置实参(调用时)实参和形参要一一对应

    def foo(x,y,z)

    foo(1,2,3)

    什么是关键字参数

    调用时,按key=value 形式定义的实参

    注意点

    指名道姓地为形参传值,意味着即使不按顺序定义,仍能为指定的参数传值

    def foo(1,a=2)

    foo(1,a=2)

    调用函数时,位置实参和关键字实参可以混合使用但必须

    例子:

    def foo(x,y,z):

      print(x,y,z)

    1.遵循形参的规则

    foo (1,z=3,y=2) #正确

    foo(1,z=3) #报错

    2.不能为同一个形参重复传值

    foo(1.x=1,y=1,z=2)  #报错

    3.位置实参必须放到关键字实参的前面

    foo(y=3,z=2,1)  #报错

    什么是默认参数

    定义阶段,已为某个形参赋值

    注意点

    1.定义阶段已有值,调用阶段可以不传值

    def foo(x,y,z=1)

      print(x,y)

    2.位置形参必须在默认参数的前面

    def foo(y=1,x) #报错

    3.默认参数的值只在定义阶段的赋值一次,也就是说默认参数的值在定义阶段就被固定死了

    m=10

    def foo(x,y=m)

      print(x,y)

    m='abc'

    foo(1) ==>1  10

    foo(1,11) ==>1  11

    4记住:默认参数的值该设置为不可变类型

    应用:

    对于经常需要变化的值,需要将对于的形参对于成位置形参

    对于大多数情况值都一样的情况,需要将对应的形参定义成默认参数

    可变长度参数

    def foo(x,y,z,*args,**kwargs)

      foo(x,y,z,*args,**kwargs)

    foo(1,2,3,4,5,6,a=1,b=2,c=3)

    其中4,5,6被*接收,赋值给zrgs,返回的类型是元组

    其中a=1,b=2,c=3被**接收,赋值给kwargs,返回的类型是字典

    打散

    *能用在形参里也能用在实参里

    foo(*(4,5,6),**{'a'=1,'b'=2,'c'=3})==>foo(4,5,6,a=1,b=2,c=3)

  • 相关阅读:
    qt install (1)
    learning rewind func
    learning strrchr func
    learning memchr func
    git lfs setpu(4)
    大端与小端
    git branch/meger step(3)
    git log/show/HEAD step(2)
    调用外部EXE文件
    获取计算机上的所有进程
  • 原文地址:https://www.cnblogs.com/shanjinghao/p/8657441.html
Copyright © 2011-2022 走看看