• 函数参数的魅力


    函数参数:

    函数分为形参和实参。
    对于函数的定义:
              def func(name):
                print(name)
              func(name)
      定义的来说,在函数中定义的name就是形参,在函数调用中的name就是实参。
      
    形参的定义:形参就是在函数定义时候的变量,需要从外部进行传值。
    def fn(a,b,c): # 形参要拷贝实参的值,随着函数的调用产生,随着函数调用结束销毁了
    # a,b,c必须从外界进行获取,才有意义
    print(a)
    print(b)
    print(c)
    # 内部使用外部变量,外部要提前产生
    print(x)
    print(y)
    print(z)

    # x,y,z是实际存在的值
    x = 10
    y = 20
    z = 30

    fn(10,20,30)
    fn(x,y,z)
    fn(x+10,y*2,z/5)

    实参:实参是函数括号中传入的实际值,可以是常量、变量、表达式进行的组合。
    # 位置实参:一定要按位置传值
    def fn(a,b,c):
    print(a,b,c)

    fn(10,20,66)

    # 关键字实参
    # 每有必要按照顺利传递

    fn(a=55,b=64,c=89)
    fn(b=55,a=64,c=89)


    # 两者混用(*********非常常用**********)
    # 关键字实参必须出现在位置实参之后哦

    fn(77,88,9)
    fn(10,b=55,c=99)
    fn(10,c=55,b=99)


    def fun(a,b,c,d,e,f):
    print(a,b,c,d,e,f)


    fun(10,20,30,40,50,60)
    fun(10,c=20,d=30,e=50,f=60,b=40)

    形参的种类

    1.位置参数:从左到右按照顺序定义参数
          位置形参:必须选参数
          位置实参:按照位置给形参传值
    2.关键字参数:按照a=10的形式来定义参数
          无需按照位置为形参传值
                注意的问题:
                        1. 关键字实参必须在位置实参右面
                        2. 对同一个形参不能重复传值
    3.默认参数:形参在定义时就已经为其赋值 可以传值也可以不传值,经常需要变得参数定义成位置形参,变化较小的参数定义成默认参数(形参)
            注意的问题:
                    1. 只在定义时赋值一次
                    2. 默认参数的定义应该在位置形参右面
                    3. 默认参数通常应该定义成不可变类型
    4.可变长度参数:指的是实参的长度不固定
           
    # 变长位置形参# 可变长形参只能由位置实参来传值# 它会以元组的形式接受所有传入的位置实参
             但是实参分为位置和关键字两种:所以针对这两种提供了*args和**kwargs两种。*为分界线,可以有变量名*args,也可以进行分割.

      ===================================*args=============================================
            def fn(*args):
            print(args)
            fn(1,2,3,4,5)

            a = 'abcdef'
            b = [1,2,3,4,5]
            c =(1,2,3,4,5)
            d = {1,2,3,4,5}

            fn(a)
            fn(b)
            fn(c)
            fn(d)

            # 把变量进行打散传值(本质就是传的地址)
            fn(*a)
            fn(*b)
            fn(*c)
            fn(*d)
      ==================================**kwargs=============================================
          def foo(x,y,**kwargs):
                    print(x,y)
                    print(kwargs)
              foo(1,y=2,a=1,b=2,c=3)
    
              def foo(x,y,**kwargs):
                print(x,y)
                print(kwargs)
              foo(1,y=2,**{'a':1,'b':2,'c':3})
    
    
              def foo(x,y,z):
                  print(x,y,z)
              foo(**{'z':1,'x':2,'y':3})
    (***********)总体函数的定义:
              def func(a,b=10,*args,c,d=10,**kwargs):
                print(a,b)
                print(args)
                print(c,d)
                print(kwargs)

              func(10,5,3,4,5,c=3,e=7,f=14)
      ==============print======================================
              10,5
              (3,4,5)
              3,10
              {'e':7,'f':14}

          


        
  • 相关阅读:
    XSS挑战之旅平台通关练习
    Vulnhub:view2akill 靶机练习
    Vulnhub:Five86-2-靶机练习
    Vulnhub:Sumo靶机练习
    vulnhub_DMV:1 靶机练习
    vulnhub:Geisha:1 靶机练习
    VulnHub之Aiweb1练习过程
    Linux学习笔记之二
    Linux sudo(CVE-2019-14287)漏洞复现过程
    DoraBox漏洞测试环境搭建和测试过程
  • 原文地址:https://www.cnblogs.com/wanglei957/p/10621734.html
Copyright © 2020-2023  润新知