zoukankan      html  css  js  c++  java
  • 函数参数详解

    1.概述

    编程方式:面向对象&面向过程   函数式编程 面向过程一般没有返回值   例如:c 面向过程 就是执行上下文 没有返回值

    函数定义:就是封装好的功能  关键字 def

    函数的优点: 优化代码  避免重复,方便修改  通用功能的调用    可重用  一致性  可扩展

    2. 函数参数详解(形参,实参),(有参函数,无参函数,空函数),(位置参数,关键字参数,默认参数)  (  可变长参数)

    1.(形参,实参)   

    形参:是在函数定义阶段就规定的参数,它就相当于定义变量时的变量名

    实参:是在函数调用阶段传入的参数,它相当于定义变量时的变量值

    2.(有参函数,无参函数,空函数)

        1、无参函数:
            def index():
                print('ok')
        2、空函数:
            def login():
                pass
        3、有参函数:
            def login(username):
                print(username)

    3. 关键子参数,位置参数,默认参数

    4、参数的详细描述
    
                    1、位置参数
                        在函数定义阶段按照顺序从左到右书写的变量名就叫位置形参
    
                        在函数调用阶段按照顺序从左到右书写的具体的值就叫位置实参
    
                        位置参数定义之后一定要传递参数
    
                    2、关键字参数
    
                        在函数调用阶段,以key=value形式进行,关键子参数
    
                    3、默认值参数
    
                        在函数定义阶段提前给形参赋值的操作就叫默认值参数
    
                    4、可变长参数
                        *
                        **
    
                        * 在函数定义阶段:接收所有溢出的位置参数,将接受的值以元组的形式传入* 后面的变量中
                        * 在函数调用阶段:将列表、元组、字符串、集合等可以使用的for循环的容器类型打散成位位置参数
    
                        ** 在函数定义阶段:接收所有溢出的关键字参数,将接受的值以字典的形式传入** 后面的变量中
                        ** 在函数调用阶段:将字典打散成关键字参数传入形参
    def t01(x,y,z):
        print(x)
        print(y)
        print(z)
    t01(1,2,3) # 位置参数和参数一一对应
    t01(4,y=1,z=2)  # 形式参数不能放在位置参数前面
    #  默认参数
    def connect(x,port=3306):    默认参数不能不能放在位置参数前面
        print(x)
        print(port)
    
    connect('127.0.0.1')
    #  传参方式:位置参数     注意:位置参数必须放在关键字参数前面
    def check_bigger(a,b):
        if a > b:
            return a
        else:
            return b
    s = check_bigger(1,3)   #位置参数
    print(s)
    s1 = check_bigger(b=1,a=3) # 关键字参数
    print(s1)
    s2 = check_bigger(1,b=3)  # 位置参数必须放在关键字参数前面
    print(s2)
    #  默认参数
    def check_bigger1(a,b=3):
        if a > b:
            return a
        else:
            return b
    s3 = check_bigger1(4)
    print(s3)

    4.可变长参数  

    # *args: 接收所有溢出的位置参数,接收的值都被存入一个元组
    # **kwargs:接收所有溢出的关键字参数,接收的值都被存入一个字典
    # *:打散传入容器类型
    
    # ###*args:接收所有溢出的位置参数,接收的值都被存入一个元组
    def func(a,b,*args):
        print(a,b,args[0],args)  #args为元组
    func(1,2,3,4,5,6)
    
    ###**kwargs: 接收所有溢出的关键字,接收的值被存入字典
    def func(a,b,*args,**kwargs):
        print(a,b,args[0],kwargs)  #kwargs为字典
    func(1,2,3,4,5,6,c=6)
    
    ### *: 将实参打散传入函数   注意 * 与 *args **kwargs 没有关系
    def func(a,b,c,d,e):
        print(a,b,c,d,e)
    func(1,2,3,*(4,5))


                                

       

  • 相关阅读:
    BZOJ3105-新Nim游戏
    POJ2947-Widget Factory
    POJ2248-Addition Chains
    POJ1964-City Game
    POJ2823-Sliding Window
    关于upx壳的一点认知,以及upx壳的特征识别
    易语言人脸识别算法源码
    易语言websocket客户端纯源码(无模块)
    易语言雷电模拟器批量虚拟定位源码
    易语言修改外部任意窗口标题图标源码
  • 原文地址:https://www.cnblogs.com/bigbox/p/11831159.html
Copyright © 2011-2022 走看看