zoukankan      html  css  js  c++  java
  • python之路_函数参数相关介绍

    一、定义函数时为位置参数情况

    #定义函数
    def name(a,b):
        if len(a)>len(b):
            return a
        elif len(a)<len(b):
            return b
    #调用函数
    i=[1,2,3,4,5,6]
    j=[1,2,3,4]
    print(name(i,j))                          #按照位置传参
    print(name(a=i,b=j))                      #按照关键字传参,name(b=j,a=i)也可以,位置不限
    print(name(i,b=j))                        #混合传参:必须先按照位置传参,再按照关键字传参,不可以出现name(a=i,j)

    二、定义函数时为默认参数情况

    1.正常调用情况

      例1:

    #定义函数
    def welcome(name,sex='male'):             #sex默认参数
        print('welcome,%s,sex: %s'%(name,sex))
    #调用函数
    welcome('黄中山')                         #输出结果:welcome,黄中山,sex: male
    welcome('曹海娇')                         #输出结果:welcome,曹海娇,sex: male
    welcome('鲁旭彤','female')                 #输出结果:welcome,鲁旭彤,sex: female

      例2:

    def age(a1,a2=18):
        print(a1,a2)
    a2 = 20
    age(10)                                   #输出结果:10,18  默认值在定义阶段已经被确定,外部无法更改,除非重新传参

    2.默认值陷阱情况(可变数据类型情况)

    #定义函数
    def func(l = []):
        l.append(123)
        print(l) 
    func()                                   #输出结果:[123]
    func([])                                  #输出结果:[123]
    func()                                    #输出结果:[123,123]

    三、定义时为动态参数情况

    1、*args情况

      情况1:实际参数为逐个元素

    #定义函数
    def my_sum(*args):
        count_sum = 0
        for i in args:                       #被*args转为元组args = (1,2,3,4,5)
            count_sum += i
        return count_sum
    #调用函数
    print(my_sum(1,2,3,4))                   #实际参数个数不定,以位置参数形式传入

      情况2:实际参数为元组或者列表

    #定义函数
    def my_sum(*args):
        count_sum = 0
        for i in args:                        #被*args转为元组args = (1,2,3,4,5)
            count_sum += i
        return count_sum
    #调用函数
    l = [1,2,3,4,5]
    print(my_sum(*l))                         #等价my_sum(1,2,3,4,5),*的作用是将列表打散

    2、**kwargs情况

      情况1:实际参数为关键字参数

    #定义函数
    def demo4(**kwargs):                      # **kwargs将传入的关键字参数转为字典形式
        print(kwargs)
    #调用函数
    demo4(a = 1,b = 2,c = 3)                  #输出结果为:{'a': 1, 'b': 2, 'c': 3}

      情况2:实际参数为字典

    #定义函数
    def demo4(**kwargs):                     # **kwargs将关键字参数转换为字典
        print(kwargs)
    #调用函数
    d = {'a': 1, 'b': 2, 'c': 3}
    demo4(**d)                                #等价于demo4(a = 1,b = 2,c = 3),**kwargs将字典打散成关键字参数

    四、定义函数时参数顺序

      参数顺序需按照如下顺序定义:def 函数名(位置参数,*args,默认参数,**kwargs)

    #定义函数
    def func(位置参数1,位置参数2,*args,默认参数=10,**kwargs):
        print(位置参数1,位置参数2)
        print(args)
        print(默认参数)
        print(kwargs)
    #调用函数
    func(1,2,3,4,5,默认参数='hahaha',a=10,b=20)
  • 相关阅读:
    JSON.parse()和JSON.stringify()
    对于火狐浏览器中title不能换行自动变成...怎么解决的?
    Python中文编码过程中遇到的一些问题
    【Java并发编程实战】—–“J.U.C”:ReentrantLock之二lock方法分析
    PHP CURL 中文说明
    Windows系统下正确安装MongoDB
    js笔试题
    记录真实想法,在路上不断前行——关于工作,学习,职场
    Ansible@一个高效的配置管理工具--Ansible configure management--翻译(十一)
    Java第四次作业
  • 原文地址:https://www.cnblogs.com/seven-007/p/7449668.html
Copyright © 2011-2022 走看看