python函数
函数的简介
函数:程序中,将需要多次使用的代码块组成一个小模块,叫做函数。可以提高编写效率以及代码的重用。
- python内建函数
- 用户自定义问题
函数的定义和调用
函数必须先定义再调用
定义函数的格式
def 函数名():
    代码
调用函数的格式:函数名()
函数名()
- 调用函数时,函数从头执行,代码执行完毕,调用结束。
- 若函数中有return语句,执行到return语句时,调用结束。
函数的文档说明
- help(函数名)        #能够看到函数的相关说明,可以输出函数名以及注释
- 函数名._doc_        #直接查看文档说明,只能输出多行注释
函数的参数
定义函数时,为形式参数。调用函数时为实际参数。
- 位置参数:也叫做必选参数
如:power(x,n)中x,n都是位置参数
调用时,传入的两个值一次赋给参数x,n
- 默认参数:将某个未知参数值设定,降低函数调用的难度
如:power(x,n=2)
必选参数在前,默认参数在后,否则会报错
当有多个参数时,变化小的参数放在后面作为默认参数
默认参数不能时空值或者可变
- 
可变参数:传入的参数个数是可变的,在参数前面加一个*号 如:def calc(*numbers) 
- 
参数组合:顺序:必须参数、默认参数、可变参数 
函数的返回值
函数返回值:即程序中函数完成一件事情后,最后给调用者的结果
带有返回值的函数:若要将函数结果返回,需要使用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
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号