# python study day5
# 匿名函数 lambda 参数列表: 返回值表达式
# f = lambda x, y: x*y
# print(f(2,3)) #>>> 6
# 装饰器 decorator,不修改原函数定义,动态增加功能的方式
# def log(func): # 对函数添加打印日志
# def wrapper(*args, **kw): # 匹配任何函数参数形式
# print('call %s():' % func.__name__) # __name__函数属性:获取函数名
# return func(*args, **kw)
# return wrapper
# import time
# @log
# def now():
# print(time.strftime('%Y-%m-%d', time.localtime()))
# now() #>>> call now(): 2020-11-23
# log(now)() #>>>
# call wrapper():
# call now():
# 2020-11-23
# 带参数decorator:
# import functools,time
# def log(text):
# def decorator(func):
# @functools.wraps(func) # 相当于wrapper.__name__=func.__name__
# def wrapper(*args, **kw):
# print('%s %s():' % (text, func.__name__))
# return func(*args, **kw)
# return wrapper
# return decorator
# @log('execute')
# def now():
# print(time.strftime('%Y-%m-%d', time.localtime()))
# now() #>>>
# execute now():
# 2020-11-23
# 打印函数执行时间
# import time, functools
# def metric(fn):
# now = time.time()
# @functools.wraps(fn) # 缺少该项将影响原函数名
# def wrapper(*args, **kw):
# result = fn(*args, **kw)
# print('%s executed in %s ms' % (fn.__name__, time.time()-now))
# return result
# return wrapper
# @metric
# def test(x, y):
# time.sleep(1.005)
# return x*y
# print(test(3,4)) #>>>
# test executed in 1.0050718784332275 ms
# 12
# 偏函数,将原有函数参数固定默认值创建新函数
# int('123', base=8) # 八进制转换,简写 int('123', 8) >>> 83
# def int2(x, base=2): # 该函数默认二进制转换,int()是十进制
# return int(x, base)
# 使用 functools.partial 创建偏函数
# import functools
# int2 = functools.partial(int, base=2)
# print(int2('1010101')) #>>> 85
# 添加固定参数绑定函数
# max2 = functools.partial(max, 10)
# print(max2(5, 6, 7)) #>>> 10
# 模块,一个.py文件就是一个模块,模块之间可以相互调用
# 为避免模块名冲突,引入包,如 mypackage.abc.func
# 每个包下必须有一个__init__.py的文件(可以为空,也可以有代码)
# 标准模块使用
# #!/usr/bin/env/python3 #(可以让该文件直接在Unix/Linux/Mac上运行)
# # -*- coding: utf-8 -*- #(当前文件使用标准utf-8编码)
# 'a test module' # 模块第一个字符串为文档注释
# __author__ = 'your name' # 添加模块作者信息
# /*编写代码*/
# import sys # 引入sys文件
# args = sys.argv # 使用argv模块变量
# 运行python3 hello.py 获得 sys.argv 就是 ['hello.py']
# 运行python3 hello.py Michael 获得 sys.argv 就是 ['hello.py', 'Michael']
# 作用域,public(公开)、private(私有) (python没有做限制,建议约定俗成)
# 特殊变量:__author__、__name__、__doc__……
# _xxx、__xxx、_xxx_ 如_abc、_func_等定义为private不应该直接被引用
# def _private_1(name):
# return 'Hello, %s' % name
# def _private_2(name):
# return 'Hi, %s' % name
# def greeting(name):
# if len(name) > 3:
# return _private_1(name)
# else:
# return _private_2(name)
# 安装第三方模块,通过包管理工具pip完成
# 如安装图像类库 Pillow, 通过windows上命令提示符窗口运行 pip3 install Pillow
# 如果安装速度慢、超时,可以考虑修改为国内镜像数据源
# 如果需要安装模块比较多,可以统一安装Anaconda,内置有许多常用模块
# OOP 面向对象编程,程序的基本单元是对象
# 面向过程编程是函数集合的顺序执行,推荐使用OOP
# class Student(object): # 定义学生类对象,object 继承的父类
# def __init__(self, name, score): # 构造方法,初始化对象,self表示实例本身
# self.__name = name
# self.__score = score # 对象私有属性
# def get_name(self):
# return self.__name
# def set_name(self, name):
# self.__name = name
# def get_score(self):
# return self.__score
# def set_score(self, score):
# self.__score = score
# def print_score(self): # 对象公有方法
# print('%s: %s' % (self.__name, self.__score))
# stu1 = Student('Lily', 99) # 实例化对象
# stu1.print_score() # 调用实例方法
# stu1.__name # 直接访问私有属性不可
# 对__xxx__此类是特殊变量,不是私有属性定义,so不能用__name__命名
# 继承和多态,子承父类,子类可调用/重写父类方法
# class Animal(object):
# def run(self):
# print('Animal is running...')
# class Dog(Animal):
# pass
# class Cat(Animal):
# def run(self):
# print('cat is running...')
# dog = Dog()
# cat = Cat()
# dog.run() #>>> Animal is running...
# cat.run() #>>> cat is running...
# def run_twice(animal): # 对 animal 参数不一定是Animal对象实例,只要有run()即可
# animal.run()
# run_twice(Dog()) #>>> Animal is running...
# run_twice(Cat()) #>>> cat is running...
# dog、cat = Cat() 也是一个类型,相当于 a = list(),
# 可以使用isinstance(cat, Animal)判断 #>>> True
# 动态语言 python 是鸭子类型(file-like object),不像静态语言(如java)强类型限制
# 获取对象类型,type()、isinstance() 推荐使用isinstance()(可判断子父类继承)
# type('abc') == str #>>> True
# import types
# type(fn) == types.FunctionType #>>> True
# type(abs) == types.BuiltinFunctionType #>>> True
# type(lambda x: x) == types.LambdaType #>>> True
# type((x for x in range(10)))) == types.GeneratorType #>>> True
# isinstance(dog, Dog) and isinstance(dog, Animal) #>>> True
# isinstance((1,3), (list, tuple)) # 多类型判断 >>> True
# 获取对象所有属性和方法 dir()
# print(dir('abc')) #>>>
# ['__add__', '__class__', '__contains__', '__delattr__',
# '__dir__', '__doc__', '__eq__', '__format__', '__ge__',
# '__getattribute__', '__getitem__', '__getnewargs__',
# '__gt__', '__hash__', '__init__', '__init_subclass__',
# '__iter__', '__le__', '__len__', '__lt__', '__mod__',
# '__mul__', '__ne__', '__new__', '__reduce__',
# '__reduce_ex__', '__repr__', '__rmod__', '__rmul__',
# '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
# 'capitalize', 'casefold', 'center', 'count', 'encode',
# 'endswith', 'expandtabs', 'find', 'format', 'format_map',
# 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal',
# 'isdigit', 'isidentifier', 'islower', 'isnumeric',
# 'isprintable', 'isspace', 'istitle', 'isupper', 'join',
# 'ljust', 'lower', 'lstrip', 'maketrans', 'partition',
# 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit',
# 'rstrip', 'split', 'splitlines', 'startswith', 'strip',
# 'swapcase', 'title', 'translate', 'upper', 'zfill']
# len('abc') # 等价于 'abc'.__len__()
# hasattr(object, 'x') # 判断对象object是否有属性或方法‘x’
# setattr(object, 'y', 1) # 设置属性‘y’
# getattr(object, 'y') # 获取属性‘y’
# getattr(object, 'y', 404) # 获取失败返回404
相关推荐
NFS共享速度慢?麒麟系统性能调优5个关键参数实测对比
本文针对银河麒麟服务器系统上NFS共享速度慢的问题,通过实测对比分析了五个关键调优参数。重点探讨了rsize/wsize传输块大小、TCP/UDP协议选择、sync/async模式权衡等,并结合麒麟系统特性提供了具体的优化建议与配置示例,旨在帮助用户有效提升国产化环境下的文件共享性能。
Python廖雪峰实战web开发(Day5-编写web框架)
因为复杂的Web应用程序,光靠一个WSGI(Web Server Gateway Interface)函数来处理还是太底层了,我们需要在WSGI之上再抽象出Web框架(比如Aiohttp、Django、Flask等),从而进一步简化Web开发。 在day1编写web app骨架因为要实现协程,所以运用的是aiohttpweb框架。那么现在为何又要重新编写一个新...
华为数通---配置风暴控制案例
风暴控制可以通过阻塞报文或关闭端口来阻断广播、未知组播和未知单播报文的流量。
廖老师python教程实战Day5-编写web框架理解
对于每个传进来的url,都要设置一个线程来处理url 线程是如何来处理url的? async def init(loop): await orm.create_pool(loop=loop, host='127.0.0.1', port=3306, user='www', password='www', db='awesome') app = web.Application...
RK3588,V4l2 读取Gmsl相机, Rga yuv422转换rgb (dma), 实现零拷贝
RK3588, 使用V4l2 读取 gmsl 相机,获得yuv422格式图像, 使用 rga 转换 rgb 图像。减少cpu占用率. 内存管理方式采用 dma,实现零拷贝.
SLAM 轨迹评估工具——EVO安装、使用介绍
evo是一款用于视觉里程计和SLAM问题的轨迹评估工具. 核心功能是能够绘制相机的轨迹, 或评估轨迹与真值之间的误差. 支持多种数据集的轨迹格式(TUM、KITTI、EuRoC MAV、ROS的bag), 同时支持这些数据格式之间的相互转换,本文轨迹展示以tum数据格式为例。
廖雪峰webAPP实战——Day1-8总结 \ 剖析Day5
廖雪峰webAPP实战——Day1-8总结过一遍 大家可能都卡在day5, 其中的web的框架真是让头疼,day4 还不容易搞明白了orm,没想到day5 还更加难,多了3个py文件,可以说是4个,其中app.py都差不多全改了。。。 过一遍 我们跟着代码跑一遍,程序开头是在app.py的 init(loop)函数。 #app.py async def init(loop): await ...
移动端实战指南:深入理解 & 接入 IAB OMSDK
OMSDK(OpenMeasurementSDK)是IABTechLab推出的标准化测量工具,用于统一移动端/原生App广告的可见性和验证流程。其核心包括Native库(采集设备数据)和OMID JavaScript层(实现通信),通过标准化接口让开发者只需接入一套SDK即可兼容多个测量厂商,减少冲突和性能损耗。v1.4版本强化了对CTV和原生App场景的支持,而v1.5新增了画中画检测等功能。集成流程需通过IAB技术实验室注册下载,并遵循严格的命名空间规则。测试阶段需嵌入验证脚本并通过指定工具验证
廖雪峰Python教程实战篇-Day5
aiohttp是一个较底层的框架,当有HTTP请求进入,aiohttp会生成一个request对象,经处理后返回一个Response对象。但是,中间的处理过程需要我们自行去完成,所以我们要在aiohttp基础上自己封装一个框架。1. 编写视图函数(URL处理函数)1.1 aiohttp编写视图函数如果仅仅用aiohttp编写视图函数,我们需要以下几步:第一步,编写一个由 async/await 装...
NSIS教程(8): 基于第三方界面库的安装包界面
前面的几篇文章介绍了NSIS的传统界面的安装包和现代界面的安装包的制作方法,也提到了NSIS支持自定义页面(即使用page custom)的特性,自定义页面需要用户自己创建对话框、控件、添加控件响应等等,虽然NSIS提供了nsDialogs.nsh来支持这些功能,但使用起来还是不太方便(需要专门了解这个插件诸多用法),而且不够灵活,所以本文介绍一种终极的自定义界面的安装包解决方案,即完全使用第三方
智能温室:温室环境监测_(7).土壤监测技术包括pH值和电导率
土壤的pH值是指土壤溶液的酸碱度,它对植物的营养吸收和生长发育有着重要的影响。在智能温室中,土壤监测是非常重要的一个环节,因为土壤的pH值和电导率直接影响植物的生长和健康。本节将详细介绍如何利用传感器和数据处理技术来监测土壤的pH值和电导率,并提供具体的代码示例。在智能温室中,监测到的土壤pH值和电导率数据需要传输到中央控制系统进行进一步的处理和分析。通过以上步骤,您可以构建一个完整的智能温室土壤监测系统,实时监控土壤的pH值和电导率,确保植物在最佳的生长环境中。校准通常包括在已知电导率的标准溶液中进行。
记录 廖雪峰老师 实战 学习到 Day10的bug 以及解决方案
1、点击注册按钮 没有反应 ,命令窗口提示 call with arg{ },说明数据没有传输成功后来发现廖大的源码有几处修改了,但我没有发现1 )app.py app.py 中添加了 def auth_factory(app, handler): 函数然后在async def response_factory(app, handler):函数中的else中 添加一句 r[‘user‘] =
【Windows Server 2019】DNS服务器的配置与管理——DNS正向解析
博文介绍了如何使用正向解析区,包括创建和添加并验证,以及术语 主机记录,别名,邮件交换记录的解释。
Python廖雪峰教程学习笔记:Day5
前言 养成一个好的习惯只需要坚持21天,Day5 高级特性 切片 迭代 列表生成器 生成器 切片 取一个list和tuple的部分元素可以用切片快速实现。 L为一个list,L[0:3]表示从索引0开始取到索引3为止,但不包括索引3,即索引0,1,2三个元素。 如果第一个索引是0,还可以省略为L[:3],运行结果和L[0:3]一样。 如果索引从1开始,取出两个元素则可以写作L[1:3],运行...
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
廖雪峰Python学习笔记day11
学习笔记day10 # python study day11 # collections 内建集合模块 # namedtuple 创建自定义tuple对象,规定tuple元素个数,使用属性引用元素 # from collections import namedtuple # Point = namedtuple('Point', ['x', 'y']) # p = Point(1, 3) # p2 = Point(-1, -3) # print(p.x, p.y) #>>> 1 3 #
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
廖雪峰Python学习笔记day9
学习笔记day8 # python study day9 # 进程和线程。实现多任务的方式 # 1、多进程模式 # 2、多线程模式 # 3、多进程+多线程模式 # multiprocessing 跨平台多进程模块。Unix/Linux/Mac环境下可以使用fork创建子进程 # from multiprocessing import Process # import os # def run_proc(name): # 子程序要执行的代码 # print('Parent process %s (
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
廖雪峰Python学习笔记day1
学习参考自 廖雪峰Python教程 # 廖雪峰学习python 3.x # vscode 快捷当行注释 CTRL + / 或者 CTRL + K + C # vscode 快捷取消注释 CTRL + / 或者 CTRL + K + U # vscode 快捷下方插入行 CTRL + Enter # 交互模式下('>>>')输入一行代码,执行一行 # 33 + 2 # >>> 35 # 命令行模式下,直接运行.py文件,一次性执行所有代码 # print(33.1*3)
Python廖雪峰教程学习笔记:Day15
前言 养成一个好的习惯只需要坚持21天,Day15 多进程 Unix/Linux操作系统提供了一个fork()系统调用。一般我们遇到的函数都是调用一次便返回一次,这里的fork()调用一次返回两次。因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。 子进程永远返回0,而父进程返回子进程的ID。 fork调用,一个进程在接到新任务时就可以复制出一个子...
Python廖雪峰教程学习笔记:Day7
前言 养成一个好的习惯只需要坚持21天,Day7 隔了几天没有写博客记录自己的学习。果然养成一个好的习惯不容易,丢掉一个好的习惯确是轻而易举,我不知道自己能坚持这个习惯多久,但是我会把每天写一篇学习博客的事情放在心上。自己写的博客可能不能帮助别人学到什么,但是这种总结归纳从一定程度上促进了自己的进步,加油! 匿名函数 有时候,为了减少代码,我们可以直接传入匿名函数,不需要显式的定义函数。在Pyth...
廖雪峰老师的Python入门 day01
廖雪峰老师Python入门教程(一)欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导...
Python学习笔记 day5
Python学习笔记 day5参考/引用资料:1.filea.打开文件方式(读写两种方式)缓冲with语句b.文件对象的操作方法c.学习对excel及csv文件进行操作读写excel读excel表写excel表读写csv读取csv文件方式一:生成字典形式方式二:逐行读取方式三:读取某一列方式四:获取每个元素的索引及其值写入csv2.os模块查看、创建和删除目录文件操作函数过滤文件os模块与目录相关...
廖雪峰Python学习笔记day4
学习笔记day3 # python study day4 # 高阶函数 filter(),过滤序列、筛选函数 # filter(过滤函数, Iterable) , 返回Iterator 惰性序列 # l = list(filter(lambda n: n%2==1, [1, 2, 3, 4, 5])) # print(l) #>>> [1, 3, 5] # list(filter(lambda s: s.strip(), ['aa', '', '1'])) #>>>['
廖雪峰Python入门_day02
#廖雪峰老师Python入门(二) 3-6Python中raw字符串与多行字符串 如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀 r ,表示这是一个 raw 字符串,里面的字符就不需要转义了。例如: r’(_)/ (_)/’ 但是r’…'表示法不能表示多行字符串,也不能表示包含’和 "的字符串(为什么?) 如果要表示多行字符串,...
廖雪峰Python学习笔记day2
# python study day2 # 条件判断、else if 简写 elif # age = int(input('please input your age:')) # if age >= 3 and age < 18: # print('your age is ', age) # print('teenager') # elif age >= 18 and age < 300: # print('your are', age, 'years ol
廖雪峰Python学习笔记day12
学习笔记day11 # python study day12 # itertools 模块提供迭代功能处理函数,返回值是Iterator,用循环迭代计算输出 # 1、count() 无限自然数序列迭代器 # import itertools # ct = itertools.count(33) # for per in ct: # print(per) # 33 34 … # 2、cycle() 固定序列无限重复 # import itertools # cc = itertools.cycle(
廖雪峰Python学习笔记day3
学习笔记day2 # python study day3 # 高级特性 迭代 # 作用于 for 循环,循环一个可迭代对象、如dict、str字符串 # d = {'a': 1, 'b': 2, 'c': 3} # for key in d: # 迭代dict的key # print(key) # for value in d.values(): # 迭代dict的value # print(value) # for k, v in d.items(): # 迭代dict的key、val

334



被折叠的 条评论
为什么被折叠?



