美文网首页程序员
Python函数,妈妈再也不会担心我不会Python了(十一)

Python函数,妈妈再也不会担心我不会Python了(十一)

作者: 小_源 | 来源:发表于2018-08-23 21:32 被阅读34次

    函数

    • 在开发过程中,某部分代码被使用多次,我们就需要把这部分代码封装成一个小模块,这个模块就是函数。
    • 函数用于简化程序结构,增加阅读行,实现代码复用,
    • 函数分为声明函数和调用函数。
    def print_hello():#声明函数
        print("你好世界")#函数内容
    
    print_hello()#调用函数 
    

    上述代码执行结果:


    上述代码执行结果

    函数参数

    位置参数

    • 形参有几个,实参必须传几个
    • 实参和形参一一对应
    def calcu(x, y):#x,y叫形参
        print("x的值是%d"%x)
        print("y的值是%d"%y)
        z = x + y
        print(z)
    
    calcu(1,2)#1,2叫实参
    

    上述代码执行结果:


    上述代码执行结果

    关键字参数

    • 可以实现传的参数和定义的形参顺序不一样
    • 位置参数必须在关键字参数的前面,关键字参数之间不存在先后顺序
    def calcu(x,y):#x,y叫形参
        print("x的值是%d"%x)
        print("y的值是%d"%y)
        z = x + y
        print(z)
    
    calcu(1,2)#1,2叫实参
    calcu(x=1,y=2)
    calcu(y=2,x=1)
    calcu(1,y=2)
    #calcu(x=1,2)#不正确
    #calcu(y=2,1)#不正确
    #calcu(2,x=1)#不正确
    

    上述代码执行结果:


    上述代码执行结果

    默认参数

    • 调用函数时,如果没有传参数,就会使用默认参数。如果传了参数,就会使用传的参数。
    • 默认参数一定要放在位置参数后面。切记
    def introduce(age,name="老王"):
        print("我叫%s,我%d岁"%(name,age))
    
    introduce(23)#不传name,会默认使用老王
    introduce(23,"小明")#传name,会使用传的值
    
    '''
    下面定义函数是错误的
    默认参数必须放在位置参数后面~切记!
    def introduce(name="老王",age):
        print("我叫%s,我%d岁"%(name,age))
    '''
    

    上述代码执行结果:


    上述代码执行结果

    可变参数

    • 需要函数能处理多个参数的时候,这些参数就叫可变参数。
    def introduce(age,name,*args):#*args表示可变参数,或者叫不定长参数
        print("我叫%s,我%d岁"%(name,age))
        print(args)#可变参数,是一个元组
        for arg in args:
            print(arg)#遍历可变参数
    
    introduce(23,"小明","男","小学课本上的人物")
    

    上述代码执行结果:


    上述代码执行结果
    • 可变参数之字典类型的参数
    def introduce(age,name,*args,**kwargs):
        '''
        *args表示可变参数,或者叫不定长参数
        **kwargs表示字典类型的可变参数。
        '''
        print("我叫%s,我%d岁"%(name,age))
        print(args)#可变参数,是一个元组
        print(kwargs)#可变参数,是一个字典
        for arg in args:
            print(arg)#遍历可变参数
    
        for k,v in kwargs.items():#遍历字典
            print(k)
            print(v)
    introduce(23,"小明","男","小学课本上的人物",address="北京市",phone="123456")
    

    上述代码执行结果:


    上述代码执行结果:
    • 拆包
    def introduce(age,name,*args,**kwargs):
        '''
        *args表示可变参数,或者叫不定长参数
        **kwargs表示字典类型的可变参数。
        '''
        print("我叫%s,我%d岁"%(name,age))
        print(args)#可变参数,是一个元组
        print(kwargs)#可变参数,是一个字典
        for arg in args:
            print(arg)#遍历可变参数
    
        for k,v in kwargs.items():#遍历字典
            print(k)
            print(v)
    #introduce(23,"小明","男","小学课本上的人物",address="北京市",phone="123456")
    desc = ("男","小学课本上的人物")
    other = {"address":"北京市","phone":"123456"}
    introduce(23,"小明",*desc,**other)#这种方式叫拆包
    

    上述代码执行结果:


    上述代码执行结果

    组合参数

    def introduce(name,age,*args,sex="男",**kwargs):
        print(name)
        print(age)
        print(sex)
        print(args)
        print(kwargs)
    
    introduce("小明",12,"课本上的人物","女",phone="123")
    #introduce("小明",12,"课本上的人物",phone="123")
    #introduce("小明",12,"课本上的人物")
    #introduce("小明",12)
    

    上述代码执行结果:


    上述代码执行结果
    欢迎关注

    相关文章

      网友评论

        本文标题:Python函数,妈妈再也不会担心我不会Python了(十一)

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