实参和形参「建议收藏」

实参和形参「建议收藏」今日内容实参和形参:实参:位置形参的范畴:位置形参位置形参默认形参的deffn(a=10,b=20):print(a,b)#默认形参可以由位置实参与关键字实参来传值,还


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

今日内容

实参和形参:

''' 实参:调用函数,在括号内传入的实际值,值可以为常量、变量、表达式或三者的组合 ***** 形参:定义函数,在括号内声明的变量名,用来接受外界传来的值,外部提前产生了的变量,内部可以使用 '''''' 注:形参随着函数的调用而产生,随着调用结束而销毁 '''

 

实参:

'''
位置实参:不用明确形参名的传参方式,一定按照位置给形参传值
关键字实参:必须明确形参名字与值为形参传值,可以不用按照位置


*****
注:混用
1.关键字实参必须出现在位置实参后
2.多个位置实参还是按照位置传参
3.关键字实参为没有从位置实参拿到值的形参传值,可以不用按照指定顺序
'''
def fn2(a, b, c, d, e, f):
    print(a, b, c, d, e, f)

fn2(10, 20, 30, e=100, f=500, d=200)

位置形参的范畴:

    • 位置形参
# positional argument
def fn(a, b, c):
    print(a, b, c)
    
# 位置形参可以由 位置实参 与 关键字实参 来传值
fn(10, 20, 30)
fn(a=10, b=20, c=30)
  • 默认形参的
    def fn(a=10,b=20):
        print(a, b)
        
    # 默认形参可以由 位置实参 与 关键字实参 来传值,还可以不用传值(采用自身默认值)
    fn()
    fn(20, 30)
    fn(a=200, b=300)
    fn(100)  # 就给a传
    fn(b=100)  # 就给b传
    
    
    # 混用
    # 位置形参与默认形参同时存在,默认形参必须在后
    def fn1(a,b,c=10,d=20):
        print(a, b, c, d)
    
    # 位置形参必须传值,默认形参分情况传值
    fn1(100, 200, d=1000)

  • 可变长形参
    # 可变长形参会以 元组 形式接受 位置形参与默认形参未接受完的 所有传入的位置实参,用索引来取第几个
    # 可变长形参只能由 位置实参 来传值  *****
    def fn(a, b=10, *args):
        print(a, b)
        print(args)
        
        
    # 小细节:可变长形参只能接受位置实参的值,位置实参还必须在关键字实参前,
    #       导致默认形参只能由位置实参来传值
    fn(1, 20, 100, 200) # 1给a  20给b,不能用b=20传  100,200给args

关键字形参范畴:

# 前提:出现在 * 之后的形参
def fn(a, b=10, *, c, d=20, e):
    pass
# c,d,e都是出现在*之后,都是关键字形参,由于必须由 关键字实参 来传值,没有顺序的强行要求


# 可变长关键字形参:用来接收没有被关键字形参接收完的关键字形参,也只能由关键字实参来传值
# 用字典来存放数据
def fn(**kwargs):
    print(kwargs)
fn(a=10,b=20)  # {'a': 10, 'b': 20}

dic = {'x': 100, 'y': 200}
fn(**dic)  # {'x': 100, 'y': 200}

参数总结:

def fn(a, b, c=10, *args, d, e=20, f, **kwargs):
    pass
# 位置形参:a、b
# 默认形参:c
# 可变长位置形参:args
# 无初值关键字形参:d、f
# 有初值关键字形参:e
# 可变长关键字参数:kwargs


# 1.位置形参与默认形参: 能用 位置实参 关键字实参 传值
# 2.可变长位置形参:只能 位置实参 传值
# 3.所以关键字形参:只能 关键字实参 传值
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/166840.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • vue遍历数组中的数组_vue数组转json

    vue遍历数组中的数组_vue数组转jsonchange(event,day){//day是days数组里的//错误写法:this.clickorigindate=day相当于传地址给clickorigindate//newDate(ms);参数ms表示的是时间戳//时间戳,getTime()方法,是北京时间1970年01月01日08时00分00秒起至现在的总秒数。//正确写法如下,传值给clickorigindate,…

    2022年10月19日
  • Java课程设计——学生成绩管理系统

    Java课程设计——学生成绩管理系统Java课程设计题目:学生成绩管理系统摘要在现今信息时代,生活速度的加快,使得人们越来越向信息化、数字化发展。随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长,尤其是学生的考试成绩数据。面对庞大的学生的成绩,需要有学生成绩管理系统来提高学生管理工作的效率。介于此提出了学生成绩管理系统,学生管理系统是计算机对学生档案信息进行管理,具有手工管理无可比拟的优点,如索检迅速、查找方便、可靠性高、存储量大等有点。现在我国的大中专院校的学生成绩管理水平正在不断提高,停留在纸介质

    2022年7月17日
  • [Java Web – 3A] – Spring MVC开发注意事项

    [Java Web – 3A] – Spring MVC开发注意事项

    2021年9月15日
  • TS文件解码TS文件解密TS流批量下载和解码工具

    TS文件解码TS文件解密TS流批量下载和解码工具TS的全称则是TransportStream,即传输流,DVD节目中的MPEG2格式,是MPEG2-PS,MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。现主流视频网站都采用这种模式。m3u8是一个TS切片列表文件,它记录视频的每个切片的时长与顺序,下面通过图片了解一下:怎么得到视频网站中的m3u8文件呢?…

    2022年7月18日
  • NVIC的使用[通俗易懂]

    NVIC的使用[通俗易懂]NVIC相关内容中断编程的四个部分——1.使能中断请求;2.配置中断优先级分组(一个项目中只需要配置一次)3.配置NVIC寄存器,初始化NVIC_InitTypeDef;4.编写中断服务函数。中断过程的三个部分——1.配置NVIC_Config()函数:NVIC是嵌套向量中断控制器,控制着整个芯片中断相关的功能,它跟内核紧密耦合,是内核里面的一个外设。因此控制中断的进行与NVIC_Config函数的配置密切相关。2.配置EXTI_Config()函数:3.编写中断服务函数:…

    2022年5月27日
  • Odin Inspector 系列教程 — Inline Property Attribute[通俗易懂]

    Odin Inspector 系列教程 — Inline Property Attribute[通俗易懂]InlinePropertyAttribute:用于将类型的内容放置在标签旁边,而不是呈现在折叠中。usingSirenix.OdinInspector;usingSystem;usingUnityEngine;publicclassInlinePropertyAttributeExample:MonoBehaviour{p…

    2022年7月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号