无情摆烂我竟是cv怪物第四周周末总结

函数重要参数补充

  1. 1.*args
  2. 星号代表接收未被位置形参接收的额外的位置实参,无论有多少位置实参*args都可以将它全部接受
  3. def func(*args):
  4. pass
  5. func(1, 2, 3, 4, 5, 6, 7, a, b, c, d)
  6. 2.**kwargs
  7. 双星号代表可以接收未被接收的关键字实参,同样也是无论有多少额外的关键字实参他都可以全盘接纳
  8. def func(**kwargs):
  9. pass
  10. func(a=1, b=2, c=3, d=4)
  11. 3.*args和**kwargs一起使用
  12. 可以将所有形式的实参统统接收但是必须位置形参在前关键字实参在后
  13. def func(*args **kwargs):
  14. pass
  15. func(7, 8, 9, a=1, b=2, c=3)

名称空间概念

  1. 1.内置名称空间
  2. 内置名称空间其实就是我们经常使用的一些无需我们定义的函数所被存储的空间叫做内置名称空间例如:
  3. int() float() print() input()等
  4. 2.全局名称空间
  5. 全局名称空间其实就是我们经常用来存储我们自己定义的一些的变量名,函数名的空间叫做全局名称空间例如:
  6. name age func() outer()等
  7. 3.局部名称空间
  8. 局部名称空间其实就是我们在函数内部存储变量名或者函数名的内存空间叫做局部内存空间,局部内存空间可以
  9. 无限嵌套,但是不建议这样做可能会将你的内存卡崩

名称空间查找顺序

  1. 1.在全局名称空间中寻找名字
  2. 全局名称空间 >>>: 内置名称空间
  3. 2.在局部名称空间中寻找名字
  4. 局部名称空间 >>>: 全局名称空间 >>>: 内置名称空间
  5. 3.在名称空间中寻找名字只能按照上方的顺序去寻找名称,如果没有的话就证明那个空间中没有该名称,这个寻找过程
  6. 不可逆

global和nonlocal的使用

  1. 1.global修改全局名称空间中的变量
  2. flower = 99
  3. def branch():
  4. global flower
  5. flower = 520
  6. print(flower)
  7. branch()
  8. print(flower
  9. """
  10. 520
  11. 520
  12. """
  13. 2.nonlocal修改局部名称空间的上层函数中的变量
  14. def all():
  15. num = 99
  16. l1 = [1, 2, 3, 4]
  17. def nest():
  18. num = 520
  19. l1.append(666)
  20. def only():
  21. nonlocal num
  22. num = 521
  23. l1.append(999)
  24. print(num)
  25. print(l1)
  26. only()
  27. print(num)
  28. print(l1)
  29. nest()
  30. print(num)
  31. print(l1)
  32. all()
  33. """
  34. 521
  35. [1, 2, 3, 4, 666, 999]
  36. 521
  37. [1, 2, 3, 4, 666, 999]
  38. 99
  39. [1, 2, 3, 4, 666, 999]

闭包函数简介

  1. 1.闭包函数就是函数中嵌套一个函数内部函数使用必须要使用外部函数中的函数名或变量名的函数叫做闭包函数
  2. def func(name): # 首先创造一个函数并建一个参数
  3. # name = 'joseph'
  4. def index(): # 在函数中嵌套一个我们真正需要调用的额函数
  5. print(name) # 我们想要在内函数中调用外函数的参数
  6. return index # 返回值打印内函数
  7. res = func('joseph') # 返回的结果就是内函数
  8. print(res) # 打印一下func()现在对应的是什么
  9. res() # 调用上方函数
  10. """
  11. <function func.<locals>.index at 0x000001F27B70A4C0>
  12. joseph
  13. """

装饰器简介

  1. 1.装饰器其实就是为了在不改变其原本调用方式和代码结构的情况下帮他添加新功能
  2. 2.最初计算机操作系统是32位,⽽时间也是⽤32位表⽰。
  3. System.out.println(Integer.MAX_VALUE);
  4. 2147483647
  5. IntegerJAVA内⽤32位表⽰,因此32位能表⽰的最⼤值是2147483647
  6. 另外1365天的总秒数是31536000
  7. 2147483647/31536000 = 68.1
  8. 也就是说32位能表⽰的最长时间是68年,⽽实际上到20380119031407秒,便会到达最⼤时间,过了这个时间点,所有32位操作
  9. 系统时间便会变为
  10. 10000000 00000000 00000000 00000000
  11. 也就是19011213204552秒,这样便会出现时间回归的现象,很多软件便会运⾏异常了。
  12. 到这⾥,我想问题的答案已经出来了:
  13. 因为⽤32位来表⽰时间的最⼤间隔是68年,⽽最早出现的UNIX操作系统考虑到计算机产⽣的年代和应⽤的时限综合取了197011⽇作为
  14. UNIX TIME的纪元时间(开始时间),⽽java⾃然也遵循了这⼀约束。
  15. ⾄于时间回归的现象相信随着64为操作系统的产⽣逐渐得到解决,因为⽤64位操作系统可以表⽰到292,277,026,596124153008
  16. 秒,相信我们的N代⼦孙,哪怕地球毁灭那天都不⽤愁不够⽤了,因为这个时间已经是千亿年以后了。

装饰器前戏无情cv工具人

  1. 1.
  2. import time # 首先调用时间模块
  3. def outer(): # 创造一个函数
  4. time.sleep(2) # 睡眠时间为2秒
  5. print('joseph') # 睡眠时间结束后打印joseph
  6. start_time = time.time() # 开始一个计数
  7. outer() # 调用outer开始运行,因为上方设置会停两秒所以两秒之后才会开始运行这个程序
  8. end_time = time.time() # 计算停止时间
  9. print(end_time - start_time) # 计算这程序从开始到运行结束一共花了多久
  10. """
  11. joseph
  12. 2.011749267578125
  13. 当我们遇到多个类似条件时那么就会显得臃肿每个还是都需要写额外的
  14. """
  15. 2.
  16. import time # 首先调用时间模块
  17. def again_outer(): # 创造一个函数
  18. time.sleep(5) # 睡眠时间为5秒
  19. print('Joseph') # 打印约瑟夫富歇
  20. start_time = time.time() # 开始一个计数
  21. again_outer() # 调用outer开始运行,因为上方设置会停两秒所以两秒之后才会开始运行这个程序
  22. end_time = time.time() # 计算停止时间
  23. print(end_time - start_time) # 计算这程序从开始到运行结束一共花了多久
  24. """
  25. Joseph
  26. 5.009907007217407
  27. """
  28. 3.
  29. import time # 首先调用时间模块
  30. def outer(): # 创造一个函数
  31. time.sleep(2) # 睡眠时间为2秒
  32. print('joseph') # 睡眠时间结束后打印joseph
  33. def home(): # 创建一个新的函数
  34. time.sleep(4) # 设定睡眠时间为4秒
  35. print('lili') # 睡眠结束后打印莉莉
  36. def get_time(x, *args,**kwargs):
  37. start_time = time.time()
  38. x(*args,**kwargs)
  39. end_time = time.time()
  40. print(end_time - start_time)
  41. get_time(outer)
  42. get_time(home)
  43. """
  44. lili
  45. 4.0153868198394775
  46. """

装饰器模板

  1. 1.终极版本装饰器模板,无脑套用
  2. from functools import wraps
  3. def outer(func_name):
  4. @wraps(func_name) # 仅仅是为了让装饰器不容易被别人发现 做到真正的以假乱真
  5. def inner(*args, **kwargs):
  6. print('执行被装饰对象之前可以做的额外操作')
  7. res = func_name(*args, **kwargs)
  8. print('执行被装饰对象之后可以做的额外操作')
  9. return res
  10. return inner
  11. import time
  12. def home():
  13. time.sleep(1)
  14. print('from home')
  15. return 'home返回值'
  16. home = outer(home)
  17. res = home()
  18. print(res)
  19. """
  20. 执行被装饰对象之后可以做的额外操作
  21. home返回值
  22. """

装饰器语法糖

  1. @outer # home = outer(真正的函数名home)
  2. def home():
  3. '''我是home函数'''
  4. time.sleep(1)
  5. print('from home')
  6. return 'home返回值'
  7. help(home)
  8. print(home)
  9. home()
  10. """
  11. home()
  12. 我是home函数 我要热死了!!!
  13. <function home at 0x000001D9F0F27820>
  14. 执行被装饰对象之前可以做的额外操作
  15. from home
  16. 执行被装饰对象之后可以做的额外操作
  17. """

多层装饰器

  1. def outter1(func1):
  2. print('执行到outter1')
  3. def inner1(*args,**kwargs):
  4. print('被装饰对像result1执行前所打印的对象')
  5. result1 = func1(*args,**kwargs)
  6. print('被装饰对象result1执行后所打印的对象')
  7. return result1
  8. return inner1
  9. def outter2(func2):
  10. print('执行到outter2')
  11. def inner2(*args,**kwargs):
  12. print('被装饰对像result2执行前所打印的对象')
  13. result2 = func2(*args,**kwargs)
  14. print('被装饰对象result2执行后所打印的对象')
  15. return result2
  16. return inner2
  17. def outter3(func3):
  18. print('执行到outter3')
  19. def inner3(*args,**kwargs):
  20. print('被装饰对像result3执行前所打印的对象')
  21. result3 = func3(*args,**kwargs)
  22. print('被装饰对象result3执行后所打印的对象')
  23. return result3
  24. return inner3
  25. @outter1 # index = outter1(outter2)
  26. @outter2 # outter2 = outter2(outter3)
  27. @outter3 # outter3 = outter3(index)
  28. def index():
  29. print('执行到index')
  30. index()
  31. """
  32. 首先我们在一个三重装饰器三重语法糖中,调用最下层的函数index然后看到上方有语法糖那么就是
  33. outer3 = outter3(index)因为这是个多重语法糖所以不能先执行这个函数,先到上方outer3的地方开始执行,
  34. (执行到outer3)返回下方语法糖运行到第二层语法糖 outer2 = outer2(outer3)执行到outer2所以我们要去上
  35. 方函数outer处执行(执行到outer2)返回下方第三重语法糖index = outer1(outer2)所以我们又需要取上方第一
  36. 个函数寻找outer1执行(执行到outer1)执行完outer1终于到index开始执行inner1,return返回 inner1所打印的
  37. 结果执行前的值 执行到inner2返回值return inner2 打印inner2结果执行前的值,接下来走到inner3的函数,
  38. inner3返回值return inner3 打印inner3结果执行前的值,正式执行到我们的函数index的步骤到上方找到result3
  39. 执行并得到返回结果打印执行后的对象,转向result2执行并得到返回结果打印执行后的结果,最后走到result1执行
  40. 并打印返回值。
  41. """

有参装饰器

  1. def outter(stdcall):
  2. def func(user_name):
  3. def inner(*args,**kwargs):
  4. name = input('请输入您的用户名>>>:').strip()
  5. pwd = input('请输入您的密码>>>:').strip()
  6. if stdcall == 'list':
  7. print('调用列表中的数据值进行判断')
  8. result = user_name(*args,**kwargs)
  9. return inner
  10. elif stdcall == 'dict':
  11. print('调用字典中的数据值进行判断')
  12. result = user_name(*args,**kwargs)
  13. return inner
  14. elif stdcall == 'a.txt':
  15. print('调用文件中的数据值进行判断')
  16. result = user_name(*args,**kwargs)
  17. return inner
  18. else:
  19. print('暂无该调用方式')
  20. return inner
  21. return func
  22. @outter('list')
  23. def index():
  24. print('通过index打印的值')
  25. index()
  26. """
  27. 首先我们在下方调用index函数,到上方找到index开始执行,看到上方有装饰器语法糖@outer并且语法糖内部有实参
  28. 那么我们就需要先拿着这个实参去上方找到对应的函数位置并将内部实参传入内部与实参对应的形参stdcall并继续往
  29. 下执行到func函数得到func的返回值func函数自己本身开始执行func内部的代码,函数inner由inner接受两个实参
  30. 并继续往下执行,获取用户名的输入,获取用户密码的输入并且获取用户选择的数据存储地址进行对接验证,如果选择
  31. 列表那么我们从列表中获取数据那么我们就从列表调取数据并使用for循环进行比对,如果成功通过那么打印成功并收
  32. 到返回值inner的返回值,失败的话呢就给用户提示您输入的用户名或密码错误,如果使用字典进行判断的话那么我们
  33. 也是从字典取值进行比对如果成功则打印成功并收到inner的返回值失败还是打印用户名或密码错误,如果选择的是文
  34. 件的话就需要从文件中调取数据with open(r'a.txt''r'encoding=utf8)as f:调取值进行比对成功得到返回值失
  35. 败用户名或密码错误。
  36. """

递归函数简介

  1. 1.1.在某些需要在相同类型中的复杂数据需要不断向内部取值直到取到某个值,我们就需要递归函数来取值
  2. 2.自己调用自己
  3. def func():
  4. print('调用了func')
  5. func()
  6. func()
  7. """
  8. 在递归函数调用时因为是自己调用自己可能会无限调用自己那么就会产生出无限个局部函数名套用局部函数,那么我们如
  9. 果没有中止的话可能就会将内存卡崩,所以我们的python就帮我们做了优化一旦我们的递归函数跑过1000左右的次数后
  10. 就会自动帮我们报错(数值会有偏差python对数字不太敏感但是后期有模块帮我们优化数字系统)
  11. """
  12. 3.两个函数互相调用
  13. def func():
  14. print('调用了func')
  15. index()
  16. def index():
  17. print('调用了index')
  18. func()
  19. func()
  20. """
  21. 在我们将两个函数互相调用的情况下,首先是调用了func函数而在func函数中又调用index函数因为两个函数的名称都
  22. 是在全局名称空间中所以可以相互调用,还是只能跑100左右的次数就会自动停止
  23. """
  24. 4.定义互相调用次数
  25. count = 1 # 首先做一个简单的计数器
  26. def func(): # 定义一个函数
  27. print('调用func函数') # 设置输出值
  28. global count # 改变全局变量中的数值
  29. count += 1 # 简单计数
  30. print(count) # 打印次数
  31. func() # 自己调用自己
  32. func() # 运行本函数
  33. """
  34. 调用func函数
  35. 997 # 简陋计数
  36. """
  37. 5.使用模块计数与修改递归次数
  38. count = 1
  39. def func():
  40. print('调用func函数')
  41. global count
  42. count += 1
  43. print(count)
  44. func()
  45. func()
  46. import sys # 调用sys模块
  47. print(sys.getrecursionlimit()) # 使用sys模块获取最大递归次数
  48. sys.setrecursionlimit(1314) # 使用sys模块设置最大递归次数
  49. print(sys.getrecursionlimit()) # 将递归次数打印出来
  50. print(sys.setrecursionlimit()) # 获取设置递归次数后的数值

算法之二分法

  1. l2 = [1, 3, 4, 6, 7, 8, 9, 11, 15, 17, 19, 21, 22, 25, 29,
  2. 33, 38, 69, 99, 107, 222, 333, 444, 555, 666, 777, 888, 999]
  3. def get_num(l2,result_num): # 传参给数值
  4. if len(l2) == 0: # 如果找不到就是0那么直接打印找不到
  5. print('您所寻找到值不存在于本列表中')
  6. return
  7. middle_index = len(l2) // 2 # 将整个分为两截
  8. middle_value = l2[middle_index]
  9. if result_num > middle_value: # 判断是否数值在右边
  10. right_l2 = l2[middle_index + 1:] # 顾头不顾尾所以需要加上最后一个进行判断
  11. print(right_l2 # 打印
  12. get_num(right_l2,result_num)
  13. elif result_num < middle_value: # 判断是否在左边
  14. left_l2 = l2[:middle_index] # 不需要价值判断
  15. print(left_l2)
  16. get_num(left_l2, result_num)
  17. else:
  18. print('您寻找的值在本列表中存在', result_num)
  19. get_num(l2,999)
  20. """
  21. [33, 38, 69, 99, 107, 222, 333, 444, 555, 666, 777, 888, 999]
  22. [444, 555, 666, 777, 888, 999]
  23. [888, 999]
  24. 您寻找的值在本列表中存在 999
  25. """

三元表达式

  1. # 1.获取用户输入并且对比是否符合姓名否则判断失败
  2. name = input('请输入您的用户名>>>:').strip()
  3. if name == 'joseph':
  4. print('欢迎光临')
  5. else:
  6. print('登陆失败')
  7. """
  8. 请输入您的用户名>>>:joseph
  9. 欢迎光临
  10. """
  11. # 当我们使用三元表达式的时候就可以将上方的四行代码缩成一行节省我们的行数,并且一眼就可以看出我们想要写出
  12. 的是什么意思
  13. print('欢迎光临' if name == 'joseph' else '登陆失败')
  14. """
  15. 欢迎光临
  16. """
  17. 2.比较两个数值之间的大小a == 18b==20
  18. a = 18
  19. b = 20
  20. if a > b :
  21. print(a)
  22. else:
  23. print(b)
  24. """
  25. 20
  26. """
  27. # 我们以前进行判断时需要进行判断就需要四步才可以写完整个程序使用三元表达式那么也可以节省使用行数
  28. def max(a, b):
  29. return a if a > b else b
  30. result = max(18, 20)
  31. print(result)
  32. # 我们使用三元表达式可以在一行完成整个式子,在if前方填写如果这个条件判断成功那么使用if前方的结果如果不成
  33. 功那么就使用后面的结果

各种生成式

  1. 1.列表生成式
  2. 1.1在列表中给数值后面加66
  3. l1 = ['joseph', 'jason', 'kevin', 'tom', 'trump']# 首先建立一个列表给她传值
  4. l2 = [] # 建立一个新列表接受改变后的值
  5. for i in l1: # 将列表1后面的数值一次循环出来
  6. l2 = i + '66' # 给数值加字符并传入l2
  7. print(l2) # 打印l2列表
  8. """
  9. joseph66
  10. jason66
  11. kevin66
  12. tom66
  13. trump66
  14. """
  15. 1.2利用列表生成式传值
  16. l1 = ['joseph', 'jason', 'kevin', 'tom', 'trump'] # 建造一个列表
  17. l2 = [i + '66' for i in l1] # 创建一个新列表并直接给她赋值,在括号中我们应该先看for再看左
  18. 边,利用forl1中的数值一次循环出来,我们再看左边需要给数值增加字符那么我们就在这个循环中一次给这些
  19. 数值全部增加66
  20. print(l2) # 打印l2列表
  21. """
  22. ['joseph66', 'jason66', 'kevin66', 'tom66', 'trump66']
  23. """
  24. 1.3利用列表生成式但是排除给kevin66
  25. l1 = ['joseph', 'jason', 'kevin', 'tom', 'trump'] # 建造一个列表
  26. l2 = [i + '66' for i in l1 if i != 'kevin'] # 在之前列表的基础上给他加个判断,如果不等于
  27. kevin才会执行前面的增值行为等于那么直接跳过
  28. print(l2) # 打印l2
  29. """
  30. ['joseph66', 'jason66', 'tom66', 'trump66']
  31. """
  32. 2.字典生成式
  33. 2.1使用字典生成式循环0-5顾头不顾尾将他赋值给dic1列表
  34. dic1 = {i:'joseph' for i in range(5)} # 利用字典生成式达式循环出来直接赋值
  35. print(dic1) # 打印dic1
  36. """
  37. {0: 'joseph', 1: 'joseph', 2: 'joseph', 3: 'joseph', 4: 'joseph'}
  38. """
  39. 2.2将我们不想让3增为字典时,那么就需要加一个条件
  40. dic1 = {i:'joseph' for i in range(5) if i != 3} # 利用字典生成式直接赋值,并判断是否等于3,
  41. 如果不等于3都继续执行如果等于3下一个
  42. print(dic1) # 打印dic1
  43. """
  44. {0: 'joseph', 1: 'joseph', 2: 'joseph', 4: 'joseph'}
  45. """
  46. 3.集合生成式
  47. 3.1
  48. set1 = {i for i in range(5)} # 生成一个集合生成式
  49. print(set1) # 打印set1
  50. """
  51. {0, 1, 2, 3, 4}
  52. """
  53. 3.2
  54. set1 = {i for i in range(5) if i != 3} # 生成一个集合生成式并判断是否等于3
  55. print(set1) # 打印set1
  56. """
  57. {0, 1, 2, 4}
  58. """

匿名函数

  1. 1.匿名函数的本质
  2. 匿名函数本质上就是没有名字的函数,匿名函数一般搭配其他函数一起使用,用来节省代码行数,匿名函数一
  3. 般都只有一行,里面不能有return,可以没有参数也可以有一个或多个参数
  4. 2.匿名函数的结构
  5. lambda '参数': '返回值'
  6. result = lambda x: x + 1 # 首先使用匿名函数定义一个参数加上冒号接受返回值再赋值给result结果
  7. print(result) #打印出结果但是返回的是一堆我们看不懂的东西所以我们需要给她加上一个数据形式来识
  8. 别和接受这个结果
  9. 3.匿名函数的使用
  10. 在程序之执行一遍的时候,为了方便我们就不需要再来定义一个函数,就是用匿名函数来代替,节省变量定义
  11. 空间,也为了让程序变得更加简洁

内置函数

  1. 1.max的使用取列表中的最大值
  2. l1 = [1, 51, 5, 1, 561, 56, 51, 531, 561, 86, 41, 8, 4, 651, 9, 784561, 89746513, 65,
  3. 89748615, 4978, 46, 155, 98748,615535, 49, 7461] # 创造一个列表纯瞎打的
  4. result = max(l1) # 使用max内置方法取得这个列表中的最大值并赋值给result结果
  5. print(result) # 接受结果并打印出来
  6. """
  7. 89748615
  8. """
  9. 2.min的使用,正好与max相反取最小值
  10. l1 = [1, 51, 5, 1, 561, 56, 51, 531, 561, 86, 41, 8, 4, 651, 9, 784561, 89746513, 65,
  11. 89748615, 4978, 46, 155, 98748,615535, 49, 7461] # 上面那个列表
  12. result = min(l1) # 使用min内置方法取得这个列表中的最小值并赋值给result结果
  13. print(result) # 接受结果并打印出来
  14. """
  15. 1
  16. """
  17. 3.reduce(相加)参数为一个可迭代对象的每一个元素,是对每一个元素执行迭代操作(通过函数实现具体的操作),
  18. 返回一个具体的值而不是对象,需要先将reduce调用出来(底层拥有循环)
  19. from functools import reduce # 在py3中需要先将reduce调用出来
  20. def func(x,y): # 设置两个形参
  21. return x + y # 返回值为形参相加
  22. result = reduce(func,range(1,11)) # 使用reduce相加范围中的所有值,并赋值给结果
  23. print(result) # 打印结果
  24. """
  25. 55
  26. """
  27. 4.filter(过滤)通常用于过滤的功能,需要加入过滤的条件,过滤的对象为一个可迭代对象的每一个元素,返
  28. 回一个filter 对象,通过强转换才可以显示内容
  29. l1 = ['a','b','c','d'] # 创造一个列表
  30. def func(s): # 添加一个形参
  31. if s != 'a': # filter 只能过滤,有过滤条件形参如果不等于a那么继续运行
  32. return s # 返回值为s
  33. result = filter(func,l1)
  34. print(result)
  35. print(list(result))
  36. """
  37. <filter object at 0x0000026181A55BB0>
  38. ['b', 'c', 'd']
  39. """
  40. 5.map(映射)参数为一个可迭代对象的每一个元素,是对每一个元素执行相同的操作(通过函数实现具体的操作),返
  41. 回一个map 对象,同样可以用强制转换来显示内容
  42. l1 = ['a','b','c','d']
  43. for i in l1:
  44. res = map(lambda joseph:'joseph' + i,i)
  45. print(res)
  46. print(list(res))
  47. """
  48. <filter object at 0x0000024D2DA45BB0>
  49. ['b', 'c', 'd']
  50. <map object at 0x0000024D2DA0F2E0>
  51. ['josepha']
  52. <map object at 0x0000024D2DA0F130>
  53. ['josephb']
  54. <map object at 0x0000024D2DA0F190>
  55. ['josephc']
  56. <map object at 0x0000024D2DA0F1F0>
  57. ['josephd']
  58. """
  59. 6.zip(拉链,缝合)可以接收多个可迭代对象,然后把每个可迭代对象中的第i个元素组合在一起
  60. a = [1, 2, 3 ]
  61. b = [4, 5, 6]
  62. c = zip(a, b)
  63. print(list(c))
  64. """
  65. [(1, 4), (2, 5), (3, 6)]
  66. """
  67. a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
  68. b = ['a', 'b', 'c', 'd', 'e', 'f']
  69. c = 'joseph'
  70. result = zip(a, b, c)
  71. print(result)
  72. print(list(result))
  73. """
  74. <zip object at 0x000001E9C2B1F5C0>
  75. [(1, 'a', 'j'), (2, 'b', 'o'), (3, 'c', 's'), (4, 'd', 'e'), (5, 'e', 'p'), (6, 'f', 'h')]
  76. """

无情摆烂我竟是cv怪物第四周周末总结的更多相关文章

  1. CodeForces 摆烂寄录

    按订正顺序排序 现在是乱排的了 完整代码占版面 所以只放 AC 记录链接 Good Bye 2021: 2022 is NEAR 这场打得真拉/tuu A. 简单签到 开场就读错题,浪费 5min / ...

  2. 摆烂期的Android学习笔记一

    Android大致分为四层架构1.Linux内核层:提供各种硬件驱动,如显示驱动,音频驱动,相机驱 动,蓝牙驱动.... 2.系统运行库层:通过C/c++库为android地图提供支持 3.应用框架层 ...

  3. 我用13行摆烂了你的oj4

    13行代码AC oj4是怎么回事呢?13行代码AC oj4相信大家都很熟悉,但是13行代码AC oj4是怎么回事呢,下面就让小编带大家一起了解吧.13行代码AC oj4,其实就是13行代码AC oj4 ...

  4. 怪物AI(复习)

    怪物AI执行 //-----------------------------------------------主动攻击---------------------------------------- ...

  5. (转)Windows驱动编程基础教程

    版权声明     本书是免费电子书. 作者保留一切权利.但在保证本书完整性(包括版权声明.前言.正文内容.后记.以及作者的信息),并不增删.改变其中任何文字内容的前提下,欢迎任何读者 以任何形式(包括 ...

  6. 区块链3.0 ada Cardano卡尔达诺如何获得一致好评?

    区块链3.0 ada Cardano卡尔达诺如何获得一致好评? EOS 的直接竞争对手是以太坊.文章介绍的卡尔达诺(Cardano)的目标就更加远大了,他要同时锁定比特币和以太坊.但大家去网上搜索卡尔 ...

  7. 【机器学习基础】关于深度学习的Tips

    继续回到神经网络章节,上次只对模型进行了简要的介绍,以及做了一个Hello World的练习,这节主要是对当我们结果不好时具体该去做些什么呢?本节就总结一些在深度学习中一些基本的解决问题的办法. 为什 ...

  8. NOIp2021 原地退役记

    JS-0013 Day -2 - 2021.11.17 打了场 cmd_blk 出的模拟赛,T2 T3 都是做过的原题(AGC010C & ARC092D),于是直接摆烂交暴力垫底,成功为我的 ...

  9. Solution Set -「LOCAL」冲刺省选 Round XXV

    \(\mathscr{Summary}\)   读错题了读错题了 B 题差点没做出来真的太吓人了.   逆序开题,C 题直接冲一发暴力最大权闭合子图居然过了.A 题确实一下子没想到用"可能的 ...

随机推荐

  1. 《Unix 网络编程》13:守护进程和 inetd 超级服务器

    守护进程和 inetd 超级服务器 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...

  2. Linux下删除Mysql

    1.检查mysql服务并关闭相应的进程 [root@bp18425116f0cojd1vnz ~]# ps -ef |grep mysql root 1492 1 0 10:23 ? 00:00:00 ...

  3. 开源项目 PM 浅谈如何设计官网

      有用户反馈进入官网首页光秃秃的一片,大家忙着做产品,忽略了官网的建设,惭愧惭愧.   确实,极简风格和极其简单还是有很大区别的.     旧的 Web 端   除了极其简单之外,它还有一个小问题, ...

  4. 入坑KeePass(三)安全设置完后后留存

    1.文件> 数据库设置 > 安全 迭代次数改成500000 2.工具 > 选项 2.1.安全 2.2.策略 2.3.集成 2.4高级

  5. dubbo的消费者是怎么获取提供者服务接口引用的?

    本文主要解读dubbo消费者是如何引用服务端接口的,是如何像本地调用一样调用远程服务的. 并试着从设计者的角度思考,为何这样设计. @Component public class DubboConsu ...

  6. 将Hexo搭建到自己的服务器上

    http://xybin.top/posts/9373.html 第一部分:服务器端的操作 1.安装git 和nginx yum install -y nginx git 2.添加一个git用户 #添 ...

  7. 实现领域驱动设计 - 使用ABP框架 - 通用准则

    在进入细节之前,让我们看看一些总体的 DDD 原则 数据库提供者 / ORM 无关性 领域和应用程序层应该与 ORM / 数据库提供程序 无关.它们应该只依赖于 Repository 接口,而 Rep ...

  8. canvas简易画布

    今天学习了canvas,利用它做了一个简易版的画板,校验自己所学的知识,分享出来以供大家学习指教.先上效果图. 主要是使用了canvas的stroke和clearReact来实现画板的绘画和橡皮擦功能 ...

  9. java 改变图片的DPI

    代码如下: public class test01 { private static int DPI = 300; public static void main(String[] args) { S ...

  10. Tapdata Real Time DaaS 技术详解 PART I :实时数据同步

      摘要:企业信息化过程形成了大量的数据孤岛,这些并不连通的数据孤岛是企业数字化转型的巨大挑战.Tapdata Real Time DaaS 采用的CDC模式,具有巨大的优势,同时是一个有技术壁垒的活 ...