python函数

函数的简介

函数:程序中,将需要多次使用的代码块组成一个小模块,叫做函数。可以提高编写效率以及代码的重用。

  • python内建函数
  • 用户自定义问题

函数的定义和调用

函数必须先定义再调用

定义函数的格式

def 函数名():
    代码

调用函数的格式:函数名()

函数名()
  • 调用函数时,函数从头执行,代码执行完毕,调用结束。
  • 若函数中有return语句,执行到return语句时,调用结束。

函数的文档说明

- help(函数名)        #能够看到函数的相关说明,可以输出函数名以及注释

- 函数名._doc_        #直接查看文档说明,只能输出多行注释

函数的参数

定义函数时,为形式参数。调用函数时为实际参数。

  1. 位置参数:也叫做必选参数

如:power(x,n)中x,n都是位置参数

调用时,传入的两个值一次赋给参数x,n

  1. 默认参数:将某个未知参数值设定,降低函数调用的难度

如:power(x,n=2)

必选参数在前,默认参数在后,否则会报错

当有多个参数时,变化小的参数放在后面作为默认参数

默认参数不能时空值或者可变

  1. 可变参数:传入的参数个数是可变的,在参数前面加一个*号

    如:def calc(*numbers)

  2. 参数组合:顺序:必须参数、默认参数、可变参数

函数的返回值

函数返回值:即程序中函数完成一件事情后,最后给调用者的结果

带有返回值的函数:若要将函数结果返回,需要使用return

函数中多个return语句,只要有一个被执行,函数就会结束

return 后面可跟元组、列表、字典等,一次性返回多个数据。

递归函数

递归函数:函数在内部调用函数本身

优点:定义简单,逻辑清楚

缺点: 过深的调用会导致栈溢出

注意:

  • 可通过尾递归防止栈溢出。尾递归事实上和循环时等价的,没有循环语句的编程语言只能通过尾递归实现循环。
  • python标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的问题。

# 阶乘,递归

def fact(n):
    if n == 1:
        return 1
    else:
        return n*fact(n-1)

# 尾递归

def fact(n):
    return fact_iter(n,1)

def fact_iter(num,pro):
    if num == 1:
        return pro
     return fact_iter(num - 1,num*pro)


局部变量和全局变量

全局变量:在函数外边定义的变量,能够在所有的函数中进行访问。

局部变量:在函数内部定义的变量,只能在该函数中进行访问。

当全局变量与局部变量重名,函数内部依旧使用局部变量。可以在函数内部用global 变量将局部变量声明为全局变量。

捕获异常

捕获异常语句:try ... except ... finally

try:
    print('try')
    r = 10/0
    print('result',r)
except ZeroDivisionError as e:
    print('except',e)
finally:
    print('finally')

>>> try
    except division by zero
    finally

posted @ 2021-09-01 17:04  突然跳舞的咸鱼  阅读(51)  评论(0)    收藏  举报