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","123"
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("33[32;1m HI boy 33[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()
原文地址:https://www.cnblogs.com/cc123nice/p/10468446.html