Python学习之函数,嵌套函数,递归函数,高阶函数,装饰器实例 您所在的位置:网站首页 python嵌套函数怎么调用 Python学习之函数,嵌套函数,递归函数,高阶函数,装饰器实例

Python学习之函数,嵌套函数,递归函数,高阶函数,装饰器实例

#Python学习之函数,嵌套函数,递归函数,高阶函数,装饰器实例| 来源: 网络整理| 查看: 265

今天的学习任务:

1.函数;

#!/usr/bin/env python #Author By Puppeteer_777 global x x=9 #定义全局变量x = 9; def func1(): #定义函数名为func1的函数 '''描述函数功能''' x=3 #定义局部变量x = 3 print(x) #输出局部变量x return '返回值'#返回值 y=func1() #调用函数func1,并且将函数func1的返回值赋予变量 y print('The return of func1 is:',y)#输出变量 y print('After func1 x is:',x) #输出全局变量 x

执行结果:

小结:全局变量在全局起作用,而局部变量只在局部起作用;

2.嵌套函数

#!/usr/bin/env python #Author By Puppeteer_777 def grandpa(): x=1 def father(): x=2 def son(): x=3 print(x) son() #调用son()函数 father() #必须要调用father函数 grandpa() #调用father函数必须调用grandpa函数

执行结果截图:

3.递归函数

#!/usr/bin/env python #Author By Puppeteer4_777 answer_list = [] #定义一个空列表 number = int(input('number:')) #输入一个int整数 def recursivefunc(x): #定义一个函数 '''递归函数实现十进制与二进制的转换''' if x!=0: #确定边界条件 if x%2==1: answer_list.append(1)#在列表结尾追加 1 if x%2==0: answer_list.append(0)#在列表结尾追加 0 return (recursivefunc(int(x/2))) answer_list.reverse() #翻转列表 result = '' for i in answer_list: #输出列表 result = result + str(i) print(result) recursivefunc(number) #调用函数

执行结果:

小结:递归函数的特性:(1)必须要有一个明确的结束条件;(2)每次进入更深一次递归时,问题的规模相对与上一次的问题规模应该有所减少;(3)执行效率不高,递归次数过多会导致栈溢出【在计算机中,函数结构的调用时通过栈stack这种数据结构实现的,每当进入一个函数调用,栈就会增加一个栈帧,每当函数返回,栈就会减少一层栈帧。由于栈的大小是有限的,所以递归次数过多会导致栈溢出】

4.高阶函数

#!/usr/bin/env python #Author By Puppeteer_777 def add(x,y,z): return z(x)+z(y) res = add(3,-5,abs) #abs是内置函数;其作用是取绝对值. print(res)

执行结果:

小结:高阶函数:(1)把一个函数名当做实参传递给另外一个函数【在不修改被装饰函数源码的情况下为其添加功能】

(2)返回值中包含函数名

5.装饰器

高阶函数 + 嵌套函数 ====>装饰器

#!/usr/bin/env python #Author By Puppeteer_777 import time def timer(func1): '''3定义一个函数,作用是统计函数运行时间''' def wrapper(*args,**kwargs): #参数个数不确定(*args,**kwargs) start_time=time.time()#开始时间 func1(*args,**kwargs) #函数运行 end_time=time.time() #函数结束时间 print('The program run time is ', end_time-start_time ) return wrapper @timer #语法糖,相当于 test1 = timer(test1) = wrapper def test1(x): '''1定义一个函数''' time.sleep(3) print(x) test1('hello') #2调用函数

执行结果:

小结:装饰器:(1)定义【本质是函数,装饰其他函数,就是为其他函数添加新的功能】

(2)原则【1.不修改被装饰函数的源代码;2.不修改被装饰函数的调用方式】



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有