zoukankan      html  css  js  c++  java
  • 函数的参数

    函数的参数分为形参与实参

    参数介绍:
    # 函数为什么要有参数:因为内部的函数体需要外部的数据
    # 怎么定义函数的参数:在定义函数阶段,函数名后面()中来定义函数的参数
    # 怎么使用函数的参数:在函数体中用定义的参数名直接使用
    
    形参:在函数的定义阶段 括号内写的变量名 叫做该函数的形式参数 简称 形参
    实参:在函数的调用阶段 括号内实际传入的值 叫做实际参数 简称 实参
    
    形参与实参的关系
            形参就相当于变量名,而实参就相当于变量的值
            函数调用传参的过程 就是给形参变量名赋值的过程
    
    #形参本身没有意义,有实参赋予形参值后,该形参就具备了意义
    #       补充:有默认值的形参,在没有被实参赋值,具备的是自身意义,但一旦被实参赋值,意义同实参
    # 实参是有实际意义的参数
    注意:
        # 形参与实参可以重名,但是代表的是两个不同的变量
        # 形参是对实参的值拷贝
        # 形参实参为不可变类型,形参发生重指向,实参不变
        # 形参实参可变类型,形参发生值的内部变化,实参变,两个指向的是同一个地址
        # 形参和实参的绑定关系只在函数的调用阶段有效,函数运行结束关系自动解除,只在函数内部有效 函数外部无任何影响

    实参的分类

    # 实参分为:1.位置实参  2.关键字实参
    
    # 位置实参:传参一定按照位置,形参实参个数要一一对应进行传参
     # 关键字实参:指名道姓进行传参,形参实参个数一致且位置可以改变进行传参 # 实参组合传参规则:必须先传位置实参,再传关键字实参

    *与**的打散机制

    # *单列容器 会打散单列容器
    # **双列容器 会打散双列容器
    
    在实参传参中使用*字符串,列表,元组,集合可以让多个值进行位置传参
    *的内部可以看for循环将各字符或者元素传参
    
    **可以将字典中各键值按关键字实参进行传参

    形参的分类

    # 六大分类:
    # 1.无值位置形参(位置形参):可以被位置与关键字实参进行传参,必须传值
    
    # 2.有值位置形参(默认形参):可以被位置与关键字实参进行传参,可以不用传参采用默认值
    
    # 3.可变长位置形参 *agrs:会接受所有没有接收完的位置实参,接收的个数可以为0~n个,0个是就是空元组
    
    # 4.无值关键字形参:只能由关键字实参进行传参,必须传值
    
    # 5.有值关键字形参:只能由关键字实参进行传参,可以不用传参采用默认值
    
    # 6.可变长关键字形参 **kwargs :会接收所有没有接收完的关键字实参,接收的个数可以为0~n个,0个是就是空字典
    
    # 接收实参值顺序:
    # 位置形参 > 默认形参 > 可变长位置形参 *agrs  > 有无默认值关键字形参  > 可变长关键字形参  **kwargs
    
    # 注意点:
    # 1.可变长位置形参只能接受位置实参,要想被附上值,前面的有值位置形参的默认值没有多大意义
    # 2.args与kwargs是可变长形参的变量名,所以可以自定义,但约定俗成就用它俩
    
    # 使用法则:
    # 1.所有位置形参全部采用位置实参进行传值
    # 2.所有关键字形参全部采用关键字实参进行传值
    # 3.不管位置还是关键字形参,全部按照顺序进行传参

    补充知识点

    # 命名关键字参数:在函数定义阶段 写在*与**可变长参数之间的形参
    # 在给命名关键字参数传值的时候 只能用关键字为其传值
    def func(x,y=1,*args,z=3,m,**kwargs):
        print(x,y)
        print(args)
        print(z,m)
        print(kwargs)
    func(1,2,3,4,5,6,7,8,9,0,z=69,m=999,o=666999,l = 999666)
    # 在定义阶段 给你感觉好像是z是默认值参数 放在了m这个位置参数的前面了 应该报错
    # 其实z和m都是命名关键字参数 不是默认值参数和位置参数
  • 相关阅读:
    Java中使用Oracle的客户端 load data和sqlldr命令执行数据导入到数据库中
    迁移mysql数据到oracle上
    SQL Developer 警告--无法安装某些模块
    Oracle SQLDeveloper ORA-01017 invalid username/password;logon denied (密码丢失解决方案)
    解决Java连接MySQL存储过程返回参数值为乱码问题
    Tensorflow BatchNormalization详解:2_使用tf.layers高级函数来构建神经网络
    Tensorflow BatchNormalization详解:1_原理及细节
    随机切分csv训练集和测试集
    tf.session.run()单函数运行和多函数运行区别
    tf.train.batch的偶尔乱序问题
  • 原文地址:https://www.cnblogs.com/george-007/p/11164244.html
Copyright © 2011-2022 走看看