zoukankan      html  css  js  c++  java
  • 函数形参与实参

    实参

    实参传递方式argument

    位置传参

    定义:实参与形参的位置依次对应。

    序列传参

    定义:实参用*将序列拆解后与形参的位置依次对应。

    关键字传参

    定义:实参根据形参的名字进行对应。

    字典关键字传参
    1. 定义:实参用**将字典拆解后与形参的名字进行对应。

    2. 作用:配合形参的缺省参数,可以使调用者随意传参。

    def fun01(a, b, c):
        print(a)
        print(b)
        print(c)
    
    # 1. 位置实参:实参根据位置与形参进行对应
    # positional argument
    fun01(1, 2, 3)
    
    # 2. 序列实参:使用星号将序列中的元素拆开,与形参进行对应.
    # 序列:字符串  列表  元组
    list01 = ["aaa", "bb", "cc"]
    fun01(*list01)
    
    # 3. 关键字实参:实参根据名称与形参进行对应
    # 备注:作用明天讲。
    fun01(b=2, a=1, c=3)
    
    # 4. 字典实参:使用双星号将字典中的元素拆开,根据键形参进行对应,传递值..
    dict01 = {"c": 33, "a": 11, "b": 22}
    fun01(**dict01)

    形参

    形参定义方式parameter

    缺省参数

    1. 语法:

    def 函数名(形参名1=默认实参1, 形参名2=默认实参2, ...):

    函数体

    1. 说明:

    缺省参数必须自右至左依次存在,如果一个参数有缺省参数,则其右侧的所有参数都必须有缺省参数。

    缺省参数可以有0个或多个,甚至全部都有缺省参数。

    位置形参

    语法:

    def 函数名(形参名1, 形参名2, ...):

    函数体

    星号元组形参
    1. 语法:

    def 函数名(*元组形参名):

      函数体

    1. 作用:

    收集多余的位置传参。

    1. 说明:

    一般命名为'args'

    形参列表中最多只能有一个

    命名关键字形参

    1. 语法:

    def 函数名(*, 命名关键字形参1, 命名关键字形参2, ...):

    函数体

    def 函数名(*args, 命名关键字形参1, 命名关键字形参2, ...):
      函数体

    1. 作用:

    强制实参使用关键字传参

    双星号字典形参
    1. 语法:

    def 函数名(**字典形参名):

    函数体

    1. 作用:

    收集多余的关键字传参

    1. 说明:

    一般命名为'kwargs'

    形参列表中最多只能有一个

    参数自左至右的顺序

    位置形参 --> 星号元组形参 --> 命名关键字形参 --> 双星号字典形参

    # 1. 默认形参:实参可以不传递数据(从右向左依次存在)
    def fun01(a=0, b="bb", c=1.5):
        print(a)
        print(b)
        print(c)
    
    #
    fun01()
    fun01(1, "b")
    # 关键实参 + 默认形参:调用者可以随意指定参数进行传递
    fun01(b="bbbbb")
    
    # 2. 星号元组形参:让位置实参的数量无限
    def fun02(p1, p2, *args):
        print(args)
    
    fun02(1, 2)
    fun02(1, 2, 3)
    fun02(1, 2, 3, 4, 5)
    
    # 3. 命名关键字形参:传递的实参必须是关键字实参。
    # 写法1:星号元组形参以后的参数是命名关键字形参
    #   p1  p2
    def fun03(*args, p1="", p2):
        print(args)
        print(p1)
        print(p2)
    
    fun03(2, 2, p1=111, p2=222)
    fun03(p1=111, p2=222)
    fun03(p2=222)
    # 案例:
    # def print(*args, sep=' ', end='
    ', file=None):
    # 1---fff---3.5---4---55---6---67 ok
    print(1, "fff", 3.5, 4, 55, 6, 67, sep="---", end=" ")
    print("ok")
    
    # 写法2:星号以后的位置形参是命名关键字形参
    def fun04(*, p1=0, p2):
        print(p1, p2)
    
    fun04(p1=1, p2=2)
    fun04(p2=2)
    
    # 4. 双星号字典形参:让关键字实参的数量无限
    def fun05(**kwargs):
        print(kwargs)
    
    fun05(a=1)  # {'a': 1}
    fun05(a=1, b=2)
    fun05(a=1, b=2, qtx=3)  # {'a': 1, 'b': 2, 'qtx': 3}
  • 相关阅读:
    JDBC基础篇(MYSQL)——使用statement执行DML语句(insert/update/delete)
    JDBC基础篇(MYSQL)——自定义JDBCUtil工具类
    JS原生方法实现jQuery的ready()
    windows.onload和body的onload属性的区别
    JS中对象与数组(大括号{}与中括号[])
    javascript面向对象编程
    深入理解JS闭包
    一行神奇的javascript代码
    Object.keys方法之详解
    JavaScript运算符
  • 原文地址:https://www.cnblogs.com/NeverYa/p/11225081.html
Copyright © 2011-2022 走看看