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

    函数之参数

    参数:实参和形参

    实参:位置实参、关键字实参

    形参:位置形参、默认形参、可变长形参、关键字形参、可变长关键字形参

    定义:实参:就是传值给形参的,是在函数被调用阶段()内的参数,有常量、变量、表达式三种组合

    fn(10,20,23,34)    fn(a,b,c,d,e)       fn(a=10,b=20,c=30)

    形参:就是函数用来接收外界传值,是在函数被定义阶段()内的参数,通常为变量

    #形参随着函数的调用而产生,也随着函数的结束而销毁

    def fn(a,b):

      print(a)

      print(b)

    fn(a,b)

    在执行函数的时候,a和b的值随着函数被调用而产生,传出来一个形式上的值,随着函数的结束,a和b的值也被销毁。

    实参:位置实参和关键字实参

    位置实参:使用位置来对形参进行传值,从左到右依次传值

    def fn(a,b,c):

      print(a)

      print(b)

      print(c)

    fn(10,20,30)

    结果就是(10,20,30)

    关键字实参:使用关键字实参来对形参传值,可以不按照顺利来,形参按照名字取值

    def fn(a,b,c):

      print(a)

      print(b)

      print(c)

    fn(a=20,c=40,b=29)

    结果就是(20,29,40)

    #位置实参和关键字实参两者的混用

    位置实参:位

    关键字实参:位,关键字

    ***1.位置实参必须在关键字实参的前面2.多个位置实参还是按照位置进行传值3.关键字实参是给没有从位置实参拿到值给形参传值,可以不按照顺序

    总结:位置实参不用明确实参名的传值方式,一定是按照位置对形参进行传值

       关键字实参要明确名字与值,为形参传值,可以不按照顺利

    形参:位置形参、默认形参、可变长形参、关键字形参、可变长关键字形参

    位置形参:是按照位置来接受实参的传值,可以接受位置实参和关键字实参的传值。

    默认形参:使用‘=’来对形参进行赋值,可接受位置实参和关键字实参的传值,还可以不用传值

    #位置形参和默认形参同时存在的时候,默认形参必须在位置形参之后

    依据:位置形参必须传值,默认形参可以不用传值

    可变长位置形参:只能由位置实参来传值

    可变长位置形参用来接收没有被位置形参和默认形参接受的值,会以元组的方式接受传入的位置实参

    def fn(*args):

      print(args)

    fn()        #不传值的时候就是个空元组

    fn()       #传值的时候按照位置接受没有被位置形参和默认形参接受的值,已元组的方式存储

    ###小细节:三者混用的时候1.可变长位置形参只能由位置实参进行传值2.位置实参必须在关键字实参前3.关键字实参只能已位置进行传值

    ###总结:位置形参:位置实参、关键字实参

         默认形参:位置实参、关键字实参、不用传值

        可变长位置形参:位置形参

    ***小技巧:

    def fn(*args):

      print(args)

    fn(1,2,3,4,5)        结果:(1,2,3,4,5)

    x='abcde'            fn(x)      ('abcde',)

    y=['egon',18]       fn(y)      (['egon',18],)

    z={'a':1,'b':2}       fn(z)       ({'a':1,'b':2},)

    如果要打印出一个列表里面的多个值的话,可以在实参的位置加一个分隔符*,就会将列表,字符串,字典打散传入

    fn(*x)                ('a','b','c','d','e')

    fn(*y)               ('egon',18)

    fn(*z)               ('a','b')

    关键字形参:只能由关键字实参来传值

    *为分割线,可以用*args来接受值,也可以只用来分割,不用来接收值

    *之后的所有值都是关键字形参

    def fn(a,b=10,*,c,d=30,e):

    a:位置形参

    b:默认形参

    c,d,e都是关键字形参,可以不按照顺序来,但是必须由关键字实参进行传值

    可变长关键字形参:**kwargs,使用字典来进行存储

    用来接收没有被关键字形参接受完的关键字实参的传值,也只能由关键字实参来传值

    def fn(*,a,b=20,c,**kwargs):

      print(a,b)                          (20,10)

      print(kwargs)                     {30,10,45}

    fn(a=20,c=30,d=10,e=45)     

    整体赋值

    dic={'name':'egon','age':18}

    def fn(**kwargs):

      print(kwargs)

    fn(**dic)                                        #{'name':'egon','age':18}

    总结:出现在*之后的参数都是关键字形参,必须由关键字实参进行传值,没有顺序要求

    可变长关键字形参使用字典来存放数据

    8888

    整体总结:

    def fn(a,b=10,*args,d,f=20,**kwargs):

    print(a)                  

    print(b)

    print(args)

    print(d)

    print(f)

    print(kwargs)

    #1有位置实参的传值,a必须传值,*args和**kwargs如果都要能接收到值,则默认参数必须使用位置实参来传值,f可以不用传值

    #2全部为关键字传值

    fn(ax=100,y=10,z=20,b=29,a=200)

    #位置形参和默认形参:位置实参和关键字实参

    #可变长位置形参:只能用位置实参传值

    #所有关键字形参:必须使用关键字实参传值

  • 相关阅读:
    告别单身淘宝小店
    微信机器人 细腻化
    # 导入模块 from wxpy import * # 初始化机器人,扫码登陆 bot = Bot()
    减小文件大小 减少 帧
    无有效图视频
    生成一张白色图片的算法--逻辑
    加logo
    字幕 3系数
    音频分析 字幕同步
    尊重百度的api语音合成规则
  • 原文地址:https://www.cnblogs.com/mcc61/p/10760307.html
Copyright © 2011-2022 走看看