摘要: wraps 其实之前我们看到过,打印被修饰的函数名的时候发现已经不是自己了就是因为,@wrapper 其实就相当于func=wrapper(func) 在全局命名空间中,func已经不是原来定义的func函数了,而是装饰器函数内部的一个闭包函数inner 因为func是wrapper函数的返回值了, 阅读全文
posted @ 2018-09-01 22:11 写的BUG代码少 阅读(152) 评论(0) 推荐(0)
摘要: 1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件) 要求成功登陆一次,后续的函数都无需输入用户名和密码 运行结果: 版本二(EVa-J): 版本三(在上面基础上完善了一下,登陆失败后可以重新输入用户名密码,进行尝试) 2.编写装饰器,为多个函数加上记录调用功能,要求每次调用函数都将 阅读全文
posted @ 2018-08-31 21:20 写的BUG代码少 阅读(190) 评论(0) 推荐(0)
摘要: 装饰器的原则: 开放封闭原则:对扩展是开放的,对修改是封闭的; 装饰器的作用: 在不改变原函数调用的情况下,扩展被装饰函数的功能(可以在装饰器函数内部,在被装饰函数的前后分别添加相应的功能); 装饰器函数的本质: 装饰器函数本质上就是一个闭包函数; 装饰器函数固定模式: wraps 先介绍一个函数的 阅读全文
posted @ 2018-08-31 20:38 写的BUG代码少 阅读(239) 评论(0) 推荐(0)
摘要: 带有yield关键字的函数都是生成器函数; yield 关键字和return 一样都是必须要出现在函数内部; 并且yield 关键字不能和return 同时出现在一个函数内部; 生成器函数被调用时,生成器函数内部的代码并不会执行,生成器也有__next__()方法和__iter__()方法,所以生成 阅读全文
posted @ 2018-08-31 20:03 写的BUG代码少 阅读(195) 评论(0) 推荐(0)
摘要: 语法糖 之前我们使用装饰器时,是为了增加func()函数的功能,有保证func()函数不改变,代码独立性,但是对外还是调用func()函数,然而实现的功能是扩展了之后的,我们是这样做的: 上面的那句func=wrapper(func)其实可以不用写,而是在被装饰函数func()的上面加上@装饰器函数 阅读全文
posted @ 2018-08-30 22:40 写的BUG代码少 阅读(122) 评论(0) 推荐(0)
摘要: 现在有一个需求,我们想计算一段程序运行的时间,可以采用time模块的time函数: 我们可以这样做: 但是我们可以发现,我们原来的func()函数就夹杂了time函数这些乱七八糟的东西,我们现在想让func()函数的代码独立,应该怎么做: 但是我们发现,func()函数的代码是独立了,但是如果我们想 阅读全文
posted @ 2018-08-30 21:16 写的BUG代码少 阅读(130) 评论(0) 推荐(0)
摘要: 使用函数分别实现用户三次登录功能,新用户注册功能,购物功能 写函数,计算传入字符串中数字,字幕,空格以及其他字符的个数,并返回结果: 写函数,返回比较大的数字: 主要是为了因为三元运算: 条件为True的结果 if 条件 else 条件为False的结果 运行结果: 写函数,用户传入要修改的文件名, 阅读全文
posted @ 2018-08-30 18:59 写的BUG代码少 阅读(184) 评论(0) 推荐(0)
摘要: 函数嵌套定义 外层函数func1中嵌套定义了内层函数func2,并且在外层函数中定义的变量a,在内层函数func2中也可以使用; 外层函数中的变量a是int 类型不可变数据类型,内层函数中只可以查看不可以修改; 如果需要修改,可以使用nonlocal声明局部变量:(类似于在函数体中使用global 阅读全文
posted @ 2018-08-30 15:16 写的BUG代码少 阅读(130) 评论(0) 推荐(0)
摘要: 函数命名空间: 内置命名空间;全局命名空间;局部命名空间 内置命名空间--在python解释器启动时将名字加载到内存中,比如print len str等; 全局命名空间:程序从上往下一行一行执行时把变量名和函数名加载到内存; 局部命名空间:调用函数时,函数内部的变量加载到内存,程序执行结束后,该局部 阅读全文
posted @ 2018-08-29 22:21 写的BUG代码少 阅读(124) 评论(0) 推荐(0)
摘要: 函数: 函数的定义和函数的调用不是一回事,程序执行时,遇到定义函数,只会执行定义函数名处,里面的函数体这个时候是不会执行的; 只有到调用函数处才会执行里面的函数体; 返回值: 没有返回值: 无 return; 返回None 只有 return; 返回None return None 返回None 有 阅读全文
posted @ 2018-08-26 21:32 写的BUG代码少 阅读(179) 评论(0) 推荐(0)