一.多层语法糖本质

""" 语法糖会将紧挨着的被装饰对象名字当参数自动传入装饰器函数中"""

def outter(func_name):
print('加载outter')
def wrapper(*args, **kwargs):
print('执行了wrapper')
res = func_name(*args, **kwargs)
return res
return wrapper def outter1(fun_name1):
print('加载了outter1')
def wrapper1(*args, **kwargs):
print('执行了wrapper1')
res1 = fun_name1(*args, **kwargs)
return res1
return wrapper1 def outter2(fun_name2):
print('执行了outter2')
def wrapper2(*args, **kwargs):
print('执行了wrapper2')
res2 = fun_name2(*args, **kwargs)
return res2
return wrapper2
@outter
@outter1
@outter2
def index():
print('from index')
index()
结果:
执行了outter2
加载了outter1
加载outter
执行了wrapper
执行了wrapper1
执行了wrapper2
from index

二.有参装饰器

一个模板
def outer(source_data):
def login_autn(func_name):
def inner(*args, **kwargs):
username = input('username>>:').strip()
password = input('password>>:').strip()
if source_data == '1':
print('使用字典方式处理')
elif source_data == '2':
print('使用其他方式处理')
elif source_data == '3':
print('使用某些方式处理')
else:
print('使用更多方式处理都行')
res = func_name(*args, **kwargs)
return res
return inner
return login_autn
@outer('3') #函数名+括号执行优先级别最高
def user():
print('我随便写的')
user()
结果:
username>>:thn #加密无判断
password>>:123 #加密无判断
使用某些方式处理
我随便写的

三.递归函数

递归函数的本质:自己直接或者简介的调用了自己本身
"""直接调用本身"""

def index():
print('我自己')
index()
index()
结果是997~1000个‘我自己’加报错
997~1000就是python中最大递归深度
"""可以调"""

"""间接调用本身"""

def index():
print('你好')
func()
def func():
print('我不好')
index()
func()
结果同理:我调用的是func所以‘我不好’开头交叉出现1000个左右的 ‘我不好’and‘你好’等

3.1正确编写方式

几排保龄球的数量
第一排 = 第二排+3
第二排 = 第三排+3
第三排 = 第四排+3
第四排 = 10
函数形式
line_up(4) = list_up(2)+3
line_up(3) = line_up(3)+3
line_up(2) = line_up(4)+3
line_up(1) = 10
def line_up(a):
if a == 1:
return 10
return line_up((a-1))+3
print(line_up(4))
结果:19
结果是由内而外

四.算法之二分法

算法:有效解决办法的各种方法
二分法 : 一定要有先后顺序排列
简单来说就是一大串串数字从中间要某一个值,进行一大串数字的一分为2,然后进行判断左侧还是右侧大小,如果若没有就在重复的切割直到找到你那个值为止

l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
"""我需要后边还可以继续延伸"""
我需要17
def get_target(l1,target_num):
# 找不到的情况下是不会一直重复下去的
if len(l1) == 0:
print('没有')
return
# 获取中间的索引值(只能为整数)
middle_index = len(l1) // 2
# 判断中间索引值对应数据的大小
if target_num > l1[middle_index]:
# 保留数据的右边
l1_left = l1[middle_index+1:]
# 对右侧进行切割 重复代码 复杂度降低
print(l1_left)
get_target(l1_left, target_num)
elif target_num < l1[middle_index]:
# 保留左侧数据
l1_right = l1[:middle_index]
print(l1_right)
# 重复右侧切割 重复代码 再次降低复杂
get_target(l1_right, target_num)
else:
print('找到了', target_num)
get_target(l1,17)
结果是:
[12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
找到了 17

python函数基础算法简介的更多相关文章

  1. 《转》Python学习(17)-python函数基础部分

    http://www.cnblogs.com/BeginMan/p/3171977.html 一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/arch ...

  2. python函数基础学习

    函数的定义与调用: def 函数名(参数1,参数2): ‘’’函数注释’’’ print(‘函数体’) return 返回值 定  义:def关键字开关,空格之后接函数名和圆括号,最后冒号结尾 def ...

  3. Python 函数基础、有序集合、文件操作(三)

    一.set 特点: set是一个无序且不重复的元素集合访问速度快:天生解决元素重复问题 方法: 初始化 >>> s1 = set()>>> print(type(s ...

  4. 10分钟学会Python函数基础知识

    看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了.最好还是把代码敲一下. 一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运 ...

  5. Python函数基础和函数参数

    函数的定义和函数的调用 return的作用 三种参数的定义 常用的内置函数 len() 函数基础 函数的定义 def 函数名(参数): pass return 表达式 pass在这里表示什么都没有,不 ...

  6. python函数基础

    一.基础 函数的定义 def 函数名(参数): ... 函数体 ... 返回值 #如果函数执行完毕也没有return语句时,自动return None. 空函数 如果想定义一个什么事也不做的空函数,可 ...

  7. python 函数基础介绍

    函数是对程序逻辑进行结构化或过程化的一种编程方法.能将整块代码巧妙地隔离成易于管理的小块,把重复代码放在函数中而不是进行大量的拷贝. 一.函数创建 def 函数创建格式如下: def function ...

  8. 4.python函数基础

    一.函数 1.函数简介 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但 ...

  9. Python函数基础学习(定义、函数参数、递归函数)

    1.本程序是测试函数的基础.函数的参数.递归函数的测试. 函数的参数有: 必选参数.默认参数.可变参数.命名关键字参数和关键字参数 #!/usr/bin/python # -*- coding: ut ...

随机推荐

  1. CVE-2018-12613phpMyAdmin 后台文件包含漏洞分析

    一.    漏洞背景 phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库.借由此Web接口可以成 ...

  2. 使用 Spring JdbcTemplate 框架出现 oracle 数据源连接泄露问题的解决方法

    1 问题 应用运行一段时间之后,无法执行写入数据库操作.底层使用的是 druid 连接池. 2 原因 使用 Spring JdbcTemplate 框架执行 oracle sql 语句之后,发现逻辑连 ...

  3. java 实现装饰器设计模式

    package com.gylhaut.base; /** * 装饰器 * 类与类之间的关系 * 1.依赖:形参(局部变量) * 2.关联:属性 * 聚合 属性 整体和部分 不一致的生命周期 人和手 ...

  4. Java安全第一篇 | 反射看这一篇就够了

    什么是反射? Java安全可以从反序列化漏洞说起,反序列化漏洞又可以从反射说起.反射是⼤多数语⾔⾥都必不可少的组成部分,对象可以通过反射获取他的类,类可以通过反射拿到所有⽅法(包括私有),拿到的⽅法可 ...

  5. Matplotlib库基础_一

    Matplotlib库基础 •pyplot绘制坐标 plt.plot(x,y,format_string,**kwargs) x:x轴数据,列表或数组,可选 y:y轴数据,列表或数组 format_s ...

  6. 无线渗透之破解wifi

    首先你要有一张支持kali的网卡,因为这整个过程都是在kali下进行的 开启网卡监听模式 # airmon-ng start wlan0 监听附近的无线 # airodump-ng wlan0mon ...

  7. python+pytest接口自动化(11)-测试函数、测试类/测试方法的封装

    前言 在python+pytest 接口自动化系列中,我们之前的文章基本都没有将代码进行封装,但实际编写自动化测试脚本中,我们都需要将测试代码进行封装,才能被测试框架识别执行. 例如单个接口的请求代码 ...

  8. FPGA驱动LCD显示红绿蓝彩条

    实验目的:先简单熟悉LCD灯的驱动和时序图的代码实现.设计功能是让LCD显示红绿蓝三种颜色,即三个彩带.本次实验比较容易实现,主要是对LCD驱动时序图的理解和时序参数的配置. 实验条件:1.LCD原理 ...

  9. bzoj4241/AT1219 历史研究(回滚莫队)

    bzoj4241/AT1219 历史研究(回滚莫队) bzoj它爆炸了. luogu 题解时间 我怎么又在做水题. 就是区间带乘数权众数. 经典回滚莫队,一般对于延长区间简单而缩短区间难的莫队题可以考 ...

  10. CSC3100

    其实是存一下代码 1. AVL的java实现 维护一下每个点左右子树深度差,差绝对值大于2就转,转的方式和treap, splay转的方式差不多.旋转操作可以使两端差归零变得更平衡. 虽然平衡但转的次 ...