1.函数

函数就是执行特定功能的一段代码.

函数的一些作用:

  • 复用代码
  • 隐藏实现细节
  • 提高可维护性
  • 提高可读性便于调试

函数的格式:




如何用python自定义函数计算资料数据的平均值_c fun函数求n个整数的平均值


def calc(a,b):
    c = a + b
    return  c
result = calc(10,20)
print(result) # 30


1).函数的参数传递

形式参数:简称形参,出现在函数的定义中.

实际参数:简称实参,主函数中的出现.

位置实参:


如何用python自定义函数计算资料数据的平均值_递归函数_02


def calc(a,b): # a和b为形参
    c = a + b
    return  
result = calc(10,20) # 10为a的实参,20为b的实参
print(result) # 30


关键字实参:


如何用python自定义函数计算资料数据的平均值_递归函数_03


def calc(a,b):
    c = a + b
    return  c
result = calc(b=10,a=20)
print(result)


2).函数的返回值

  • 如果函数没有返回值,函数执行完毕后,不需要给调用处提供返回值,此时,return可以不写
  • 函数的返回值,如果是1个,直接返回原值
  • 函数的返回值,如果多个,返回结果为元组
def fun1():
    print("hello!")

def fun2():
    return "hello"

def fun(num):
    odd = [] #存储奇数
    even = [] #存储偶数
    for i in num:
        if i%2:
            odd.append(i)
        else:
            even.append(i)
    return odd,even
lst1 = [10,29,34,23,44,53,55]
print(fun(lst1))


结果:


如何用python自定义函数计算资料数据的平均值_递归函数_04


3).函数的参数定义

默认值参数:


def fun(a,b=10):
    print(a,b)
fun(100)
fun(20,30)


结果:


如何用python自定义函数计算资料数据的平均值_函数定义_05


个数可变的位置参数:


def fun(*args):
    print(args)
fun(10)
fun(10,30)
fun(30,405,50)


结果:


如何用python自定义函数计算资料数据的平均值_递归函数_06


注:结果返回元组.

个数可变的关键字参数:


def fun(**kwargs):
    print(kwargs)

fun(a=10)
fun(a=10,b=50)
fun(a=10,b=30,c=80)


结果:


如何用python自定义函数计算资料数据的平均值_c fun函数求n个整数的平均值_07


注:结果返回字典,个数不定的位置参数只能是一个,个数不定的关键字参数也只能是一个.总之,字啊一个函数定义的过程中,既有个数可变的位置参数和个数可变的关键字参数时候,需要将个数可变的位置参数放在前面.


def fun(*args,**kwargs):
    pass


通过列表和字典传递参数:


def fun(a,b,c):
    print(a,b,c)

lst1 = [10,20,30]
fun(*lst1)

dict1 = {"a":100,"b":200,"c":300}
fun(**dict1)


结果:


如何用python自定义函数计算资料数据的平均值_c fun函数求n个整数的平均值_08


函数定义参数位置问题:


如何用python自定义函数计算资料数据的平均值_递归函数_09


4).变量的作用域


如何用python自定义函数计算资料数据的平均值_全局变量_10


def fun(a,b):
    c = a + b  # c为局部变量
    print(c)

name = "杨老师"  #全局变量
print(name)
def fun1():
    print(name)
fun1()

def fun2():
    global age #使得局部变量age变为全局变量
    age = 300
    print(age)
fun2()
print(age)


结果:


如何用python自定义函数计算资料数据的平均值_函数定义_11


5).递归函数

如果在一个函数的函数体内调用该函数本身,这个函数称为递归函数.

练习:斐波拉契数列


def fib(n):
    if n==1:
        return 1
    elif n==2:
        return 1
    else:
        return fib(n-1)+fib(n-2)

print(fib(6))
for i in range(1,7):
    print(fib(i),end=" ")


结果:


如何用python自定义函数计算资料数据的平均值_c fun函数求n个整数的平均值_12


函数知识点总结:


如何用python自定义函数计算资料数据的平均值_函数定义_13


2.异常处理


try:
    a = int(input("请输入一个数"))
    b = int(input("请输入一个数"))
    result = a/b
    print(result)
except ZeroDivisionError:
    print("除数不能为0")
print("程序结束!")


结果:


如何用python自定义函数计算资料数据的平均值_函数定义_14


try……except……else


如何用python自定义函数计算资料数据的平均值_c fun函数求n个整数的平均值_15


try:
    a = int(input("请输入一个数"))
    b = int(input("请输入一个数"))
    result = a/b
except BaseException as e:
    print("出错了",e)
else:
    print("计算结果为:",result)


结果为:


如何用python自定义函数计算资料数据的平均值_函数定义_16


如何用python自定义函数计算资料数据的平均值_递归函数_17


try:
    a = int(input("请输入一个数"))
    b = int(input("请输入一个数"))
    result = a/b
except BaseException as e:
    print("出错了",e)
else:
    print("计算结果为:",result)
finally:
    print("谢谢你的使用!")


结果:


如何用python自定义函数计算资料数据的平均值_c fun函数求n个整数的平均值_18


常见的异常类型:


如何用python自定义函数计算资料数据的平均值_递归函数_19


使用traceback可以打印异常信息


import  traceback
try:
    print(1/0)
except:
    traceback.print_exc()


附:使用Pycharm调试程序


如何用python自定义函数计算资料数据的平均值_c fun函数求n个整数的平均值_20