• Python基础--函数的定义和调用


    一、函数的作用:

    提高代码的可读性,减少代码的冗余,方便调用和修改,组织结构清晰
    

    二、函数的定义:函数遵循先定义后调用的原则

    1、无参函数

    def funcname():   #def 是关键字,后跟函数名():
            子代码    #函数要执行的代码  
            return    #return返回值,没有时默认为none
    

    2、有参函数

    def funcname(参数1,参数2):  #参数个数可以为一个和多个
        函数体
        return
    

    三、函数参数分类

    def func(x,y):
        res=x+y
        return  res
    
    f=func(1,2)
    print(f)
    

    形式参数:定义函数时的参数,本质就是变量名,上例中的x,y就是形式参数

    实际参数:执行函数时的参数,本质就是变量的值,实参必须有一个明确的值,上例中的1,2就是实际参数

    一)、实际参数:

    1、按照位置传递给相应的参数
    
    def func(x,y):
        res=x+y
        return  res
    
    f=func(1,2)
    print(f)
    
    2、按照关键字传值,将不再受位置的限制
    
    def func(x,y):
        res = x+y
        return res
    
    func(y=2,x=1)
    
    3、按位置传值和按照关键字传值混用
        1)按位置传值必须在关键字传值的前面
        2)对于一个形参只能赋值一次
    

    二)、形式参数:

    1、位置参数:必须传值的参数
    2、默认参数:定义时赋值的参数就是默认参数,默认参数必须放在位置参数的后面,有默认参数时,可以不传递参数
    3、*args:动态参数,一个*时可以随意传递位置参数,打印结果是把参数作为一个元组输出
    
    def f1(*a):
        print(a, type(a))
    
    
    f1(123, 456, 789, [1, 2, 43])
    
    
    打印结果
    (123, 456, 789, [1, 2, 43]) <class 'tuple'>
    
    
    4、动态参数**,传参时必须key,value的形式传递,最后会生成一个字典的形式
    
    def f2(**a):
        print(a, type(a))
    f2(k1=123, k2=456)
    
    打印结果为
    {'k1': 123, 'k2': 456} <class 'dict'>
    
    5、可以同时接受单个参数和key/value参数
    
    def f3(*a, **aa):   #会把所有的位置参数作为一个元组,key/value参数作为一个字典
        print(a, type(a))
        print(aa, type(aa))
    f3(11, 22, 33, k1=123, k2=456)
    
    打印结果为
    (11, 22, 33) <class 'tuple'>
    {'k2': 456, 'k1': 123} <class 'dict'>   
    
    6、把列表,元组,字典传入函数
    
    def f4(*args):
        print(args, type(args))
    li = [11, 22, 33, 44]
    f4(li, 123)  # 直接列表的名字,会把列表当做一整个元素当做函数生成后的元组的一个元素
    f4(*li)  # 使用*列表,会把列表内的每个元素当做函数生成后的元组的每个元素,类似于循环生成元组,元组列表类似
    
    打印结果为
    ([11, 22, 33, 44], 123) <class 'tuple'>
    (11, 22, 33, 44) <class 'tuple'>
    
    7、把字典传入函数
    
    def f5(**kwargs):
        print(kwargs, type(kwargs))
    dic = {"k1": 123}
    f5(**dic)  # 将字典传入到函数,需要使用双星号(**)
    
    打印结果为
    {'k1': 123} <class 'dict'>
    
    8、混合使用
    
    def f6(x, *args, **kwargs):
        print(x)
        print(args)
        print(kwargs)
    f6(1, 2, 3, 4, 5, k="a", v="z")
    
    打印结果为
    1
    (2, 3, 4, 5)
    {'v': 'z', 'k': 'a'}
    

    总结:形式参数的传入顺序: 位置参数-----*args-----**kwargs----默认参数

    四、函数的调用和返回值

    函数的返回值是return,函数不加return时默认的返回值是None,return可以返回任意值,也可以多个值,return后不跟参数默认返回的是None
    
    def func(x,y):
        print(x,y)
        res=x+y
        return res
    
    f=func(1,2)    #函数遵循先定义后调用原则,函数的调用就是func(1,2) 函数名加(),函数的执行结果,需要在调用时赋值给变量,然后print
    print(f)
    
    执行结果为
    1 2  #函数执行时内部代码的执行结果
    3   #3即为函数的执行结果,函数的执行结果是返回给函数本身的
    
  • 相关阅读:
    【经典】仙岛求药(一)
    6月份学习记录
    YZM的全排列
    最长公共子序列的长度
    20612统计八连块
    积木城堡
    不同组合数求和
    50136142WXY的百度地图
    50095106扔核弹
    【其他】关于海岛帝国互测系列赛总结
  • 原文地址:https://www.cnblogs.com/baomanji/p/6700326.html
Copyright © 2020-2023  润新知