美文网首页
函数之参数类型

函数之参数类型

作者: endmoon | 来源:发表于2018-11-04 21:15 被阅读0次

    1.位置参数

    #定义函数,并给函数设置三个参数
    def func(a,b,c):
        return a,b+c   #调用函数后的返回值
    f=func('ok',[1,2,3],1)  #给函数的参数给定具体的值,并调用函数,把变量f赋值给该函数的返回值
    print(f) #以元组的形式把多个返回值结果进行保存
    

    2.默认参数

    #默认参数必须在位置参数后面
    #定义一个位置参数和默认参数
    def func(a,b=1):
        return a*b
    f=func(2)      #这里只需要给位置参数指定值就可以了,要设置也可以重新指定值,会覆盖默认参数给定的值
    print(f)
    
    默认参数设置为可变参数
    def func(a=[]):
        a.append("A")
        return a
    print(func())    #第一次调用函数时,默认参数为a=[]
    print(func())   #第二次调用函数时,默认参数已经变成了["A"],因为第一次调用时修改了a变量对应的内存对象
    print(func())   #第二次调用函数时,默认参数已经变成了["A","A"],因为第一次调用时修改了a变量对应的内存对象
    
    默认参数设置为不可变参数
    def func(a=None):
        if not a:
            a=[]
        a.append("A")
        return a
    print(func())    #第一次调用函数时,默认参数为a=None,判断a为空时,会重新创建一块内存空间给空列表,然后键A元素添加至新的内存空间的空列表中,此时的a变量指向的是新的内存对象,默认的a变量还是指向原来的None值内存对象
    print(func())   #第二次调用函数时,默认参数还是a=None,这个是不可变对象,所以值一直没变,第三次也一样
    print(func())   
    
    

    3.指定参数名赋值传递参数

    def func(name,sex,tel):     
        return name,sex,tel
    f=func(sex="女",name='lucy',tel='888888')    #这里指定参数赋值,顺序可以随意
    print(f)
    

    4.动态函数

    #优先级顺序是这样的
    顺序参数>*args>默认参数>**kwargs
    def func(name,*args,age=20,**kwargs):
        return name,age,args,kwargs
    
    f=func('tom',20,1,smaillname='dog')
    print(f)
    
    
    #*args(把实际参数打包为元组传入形式参数,列表则以一个参数传入)
    def func(*args):
        for arg in args:
            print(arg)
    func(1,2,3)
    
    #**args(接受键值对的动态参数,把实际参数打包成字典)
    
    
    

    相关文章

      网友评论

          本文标题:函数之参数类型

          本文链接:https://www.haomeiwen.com/subject/bwmdxqtx.html