day5学python 基础+装饰器内容
基础+装饰器内容
递归特性
# 1.必须有一个明确的结束条件
# 2.每次进入更深一层递归时,问题规模相比上次递归应有所减少
# 3.递归效率不高
def run(n):
print(n)
if int(n/2)>0:
return run(n / 2)
print("-->",n)
run(10)
=============================================================
局部变量与全局变量知识
1.全局变量中 数字/字符串不能在函数中修改 列表和字典可以修改
names=["xiao","mibg","ming"]
def change():
names[0]="cf"
print(names)
change()
print(names)
==============================================================
函数即”变量“! (函数名-代表函数地址 || 函数名()-代表调用函数)
高阶函数
1 把一个函数名当作实参传给另一个函数(在不修改被装饰函数源代码的情况下为其添加功能)
2 返回值中包含函数名(不修改函数的调用方式)
==============================================================
装饰器
高级函数+嵌套函数==>装饰器 #嵌套函数-函数套着函数 # 定义:本质是函数,(装饰其他函数)为其他函数添加附加功能
# 原则: 1.不能修改被装饰的函数的源代码
# 2.不能修改被装饰的函数的调用方式
import time user,word="cf",""
def auth(auth_type):
print("auth_type",auth_type)
def out_wrapper(func):
def wrapper(*args,**kwargs):
if(auth_type=="local"):
usename=input("usename:").strip()
psword= input("psword:").strip()
if(user==usename and psword==word):
print("\033[32;1m HI boy \033[0m")
func(*args,**kwargs)
else:
exit("failed")
elif(auth_type=="ldap"):
func()
return wrapper
return out_wrapper
def index():
print("index") @auth(auth_type="local") #home=auth(local)==>wrapper()
def home():
print("home")
@auth(auth_type="ldap")
def bbs():
print("bbs") index()
home()
bbs()
day5学python 基础+装饰器内容的更多相关文章
- python基础——装饰器
python基础——装饰器 由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数. >>> def now(): ... print('2015-3-25 ...
- python基础—装饰器
python基础-装饰器 定义:一个函数,可以接受一个函数作为参数,对该函数进行一些包装,不改变函数的本身. def foo(): return 123 a=foo(); b=foo; print(a ...
- python 基础——装饰器
python 的装饰器,其实用到了以下几个语言特点: 1. 一切皆对象 2. 函数可以嵌套定义 3. 闭包,可以延长变量作用域 4. *args 和 **kwargs 可变参数 第1点,一切皆对象,包 ...
- Python 基础 装饰器
今天把学过的装饰器的知识进行回顾一下,说到装饰器,第一反应就是这个东西呢就是用来装逼的,为啥这样说呢,是应为没有这个东西照样可以干活,大部分工作都是可以做的,不管咋样还是把学过的装逼器梳理一下吧. 一 ...
- python基础-装饰器,生成器和迭代器
学习内容 1.装饰器 2.生成器 3.迭代器 4.软件目录结构规范 一:装饰器(decorator) 1.装饰器定义:本质就是函数,用来装饰其他函数,即为其他函数添加附加功能. 2.装饰器原则:1)不 ...
- Python自动化 【第四篇】:Python基础-装饰器 生成器 迭代器 Json & pickle
目录: 装饰器 生成器 迭代器 Json & pickle 数据序列化 软件目录结构规范 1. Python装饰器 装饰器:本质是函数,(功能是装饰其它函数)就是为其他函数添加附加功能 原则: ...
- python基础 (装饰器,内置函数)
https://docs.python.org/zh-cn/3.7/library/functions.html 1.闭包回顾 在学习装饰器之前,可以先复习一下什么是闭包? 在嵌套函数内部的函数可以使 ...
- python基础===装饰器@property 的扩展
以下来自Python 3.6.0 Document: class property(fget=None, fset=None, fdel=None, doc=None) Return a proper ...
- <Python基础>装饰器的基本原理
1.装饰器 所谓装饰器一般是对已经使用(上线)的函数增加功能. 但是因为一般的大公司的严格按照开放封闭原则(对扩展是开放的,对修改是封闭的),不会让你修改原本的函数. 装饰器就是在不改变原本的函数且不 ...
随机推荐
- python开发函数进阶:递归函数
一,什么叫递归 #递归#在一个函数里调用自己#python递归最大层数限制 997#最大层数限制是python默认的,可以做修改#但是我们不建议你修改 例子和尚讲故事 #!/usr/bin/env p ...
- 众包高效实用的.NET开源项目
1.Akka.NET: 概述:更轻松地构建强大的并发和分布式应用. 简介:Akka.NET是一个用于在.NET和Mono上构建高度并发,分布式和容错的事件驱动应用程序的工具包和运行时. 开源地址:ht ...
- 「小程序JAVA实战」 小程序私有页面的生命周期以及导航(10)
转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-10/ 之前讲了小程序全局的生命周期,今天咱们说说单个页面的生命周期!源码:https://gith ...
- c++builder Active Form
新增的属性.方法刷新一下才可以生成方法的实现.保存按钮不生成,刷新就好了. Refresh Implemention
- Apache Derby数据库系统使用方法
Apache Derby数据库系统使用方法 最近由于项目要求,试用了一下Apache Derby数据库,这里对了解到的内容做一个记录. Apache Derby是一个开源的关系型数据库管理系统,用Ja ...
- HttpRuntime自定义定时更新缓存
缓存更新类如下: /// <summary> /// 缓存更新类 /// </summary> /// <typeparam name="T"> ...
- Redis搭建(四):Sharding集群模式
一. 方案 1. 介绍redis集群分为服务端集群(Cluster)和客户端分片(Sharding)服务端集群:redis3.0以上版本实现,使用哈希槽,计算key的CRC16结果再模16834.此处 ...
- json_encode和json_decode和isset和array_key_exists
1.json_decode() json_decode — 对 JSON 格式的字符串进行编码 说明 mixed json_decode ( string $json [, bool ...
- mysql免安装版1067错误终极解决办法|在windows平台下MySql启动时的1067错误的解决方法及反思
[windows事件查看] 我的电脑--此电脑--右键管理--计算机管理--系统工具--事件查看器--Windows日志--应用程序--找错误标志,如下图 [提示] 按部就班,可能并不能解决你的问题, ...
- memcache 随笔
第一次用可能有很多不足的地方 以后慢慢改进. memcache 是一个简单的键/值对 是通过键和值储存信息到memcache中 ,通过特定的键请求来返回信息. 信息会无限期的保留在内存中 : ...