Python学习笔记

Verilog数字钟 使用Verilog语言进行的数字钟的编写,FPGA开发板亲测正常 大学生一个,第一次自己做的东西,写出来分享在这里插入代码片一下,有不对的地方请大家批评指正。 这次的做的题是:设计一个数字钟,该数字钟能进行正常的时,分计时功能,且能对数字钟的时间进行调整。 该数字钟有3个按键,按键1为功能键,用于数字钟在“正常计时”,“时调整”,“分调整”这三个功能之间切换;按键2,3用于调整时间,仅当数字钟处于... 阅读详情

匿名函数的动态使用,更加能够体现Python是一种动态语言

思考问题:

a+=a 和 a=a+a区别?

读写文件:

一般经常使用的读文件的方法是read()和readline()

tell()用来获取指针当前位置,seek()方法可以调整指针当前位置

递归的思想

tcp和udp的区别:

1.基于连接和无连接

2.对系统资源的要求(tcp多、udp少)

3.UDP程序结构简单

4.流模式和数据报模式

5.TCP保证数据的正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证 

小写的socket是个模块,模块里有个类也叫socket

线程和进程:

一个进程可拥有多个并行的线程

一个进程中的线程共享相同的内存单元/内存地址空间→可以访问相同的变量和对象,而且他们从同一堆中分配对象→通信,数据

交换,同步操作

由于线程间的通信是在同一地址空间上进行的,所以不需要额外的通信机制,这就使得通信更简便,传递速度更快

线程的 join()方法:这个方法调用后的意思是,等当前线程执行完毕后,程序才可以继续往下执行,比如这一方法在100行调用,那么101行程序需要等待调用此方法的线程执行完毕后,才可以被调用

面向对象和面向过程:

面向过程是把关注点放在动作和行为上,而面向对象是把关注点放在事物上

__init__()方法用于初始化对象,而不是构建对象

面向对象思维:只关注对象本身的行为,不属于对象的行为,不要乱写

面向对象的三大特性:封装、继承、多态。三者呈递进关系:由于封装先把属性和方法封装到一个类里,因此继承才有意义,才可以继承父类的属性和方法,然后才会有多态,一个父类可以被多种状态的子类所表示

只要是以两个_ _ 开头的方法或者属性,都是私有的,只要不是以两个_ _ 开头的都是公有的

__del__()方法:当内存中销毁(释放)一个对象时回调__del__()方法

del 变量名:会删除变量的引用!!!

子类无法继承父类的私有属性和私有方法

类方法__mro__():显示多继承之间的优先级关系

Python中没有重载,只有重写,只要父类和子类中含有相同的方法名称,那就是重写。

若想在子类中重写父类方法后,依然可以在子类中调用父类的方法,那就使用super().方法名()主动调用父类的方法

类属性:所属于类,所有实例化这个类的都可以访问。相当于Java的静态属性

类属性的修改和删除只能通过类属性

对象属性本质上不能被继承,真正能被继承的是类属性

静态方法是类方法的一种,不过没有装饰器不同,没有默认传递的参数

__new__()方法是一个静态方法,用来构建当前对象,必须有返回值,如果没有则不会调用__init__()方法,对象也不会被创建出来。如果子类继承父类后重写__new__()方法,并且没有返回父类的__new__()方法,则无法构建出一个新的对象,因此如果要重写此方法,必须返回父类的方法,单例模式就是利用这一原理,定义一个参数,限制参数不为默认值时只让它返回一次父类的方法,因此只会构建一次对象,这种方法也是有弊端的,可以通过调用父类的__new__()方法来返回一个构建的对象来绕过这个限制

# 单例
class A(object):
    # 设置一个默认属性
    __instance = None
    def __new__(cls):
         # 只有当 __instance 属性为默认值时,才调用父类方法创建一个对象
         if not cls.__instance:
            cls.is_instance = super().__new__(cls)
         return cls.__instance

# 绕过上述的单例限制,实例化此类的一个对象
# 这是由于类继承object,并通过object进行构造一个对象
# 但是通过这样的方法构造的对象,解释器并没有调用此类的__init__()方法
# 理论上,调用的应该是object类的__init__()方法
a = object.__new__(A)

id()方法可以返回内存地址

异常相关:

else 除了和 if 搭配外,和其他关键词搭配的时候,都是在成功的情况下才会执行,如:else 搭配 try 语句,还有和for循环的搭配,细节需要查一查

出现异常的语句会把异常抛出,如果没有捕获,最后会抛给Python进程,并且异常语句之后的代码将不会执行,如果有 finally ,直接执行 finally 里的代码,finally 以外的都不会执行;如果进行了捕获,则抛出异常,try代码块里从异常语句开始后的代码将不会执行,异常抛给 except 进行捕获后,执行 finally 里的代码,并且继续往下执行。

自定义一个异常

单例模式的应用:

1.构造的过程非常复杂,消耗大量的资源,

2.这个类封装的数据可以作为整个应用的全局变量使用,一个类就够用了

__file__:此方法可以查看当前文件所在目录

__name__:在当前程序执行后显示__main__

Python2和Python3的区别:

Python2中,包需要 __init__.py 的文件才可以识别,Python3可以直接识别目录,通常习惯是都加

Python2中 __all__ 表示可以允许其他模块可以调用的方法,由于需要配合 from model import * 的导入方式来使用(Python3不建议这种导入方式),因此基本上不用了

查看模块的搜索路径:import sys sys.path

is 和 == :

is 是比较两个引用是否指向了同一个对象(引用的比较)

== 是比较两个对象是否相等(值的比较)

dir()方法可以查看此类都有哪些属性和方法,id()可以查看引用值

浅拷贝和深拷贝:

浅拷贝是在复制一份拷贝的引用的值,并不是将引用的值传递给拷贝对象,这样当被拷贝的引用值,发生变化时,由于浅拷贝在拷贝的时候对拷贝对象进行了复制,而不是原来的被拷贝对象,因此被拷贝对象发生变化时,浅拷贝的值不变,还是第一次浅拷贝复制被拷贝对象的时候的值

深拷贝在拷贝对象时,如果对象内含有其他引用的对象,会直接指向其他引用的内存地址,不同于浅拷贝的自己复制一份

Python中在属性前加两个下划线,来实现属性的私有化,其本质原理为:解释器在运行代码时,碰到前面加__的属性,会对其进行改名字,来实现隐藏,使用dir()来查看实例化后的对象会发现,私有化属性被改成 :_类名__属性名的形式 ,可以使用对象对其进行调用,即可获得私有化属性的值

_x:单前置下划线,私有化属性或方法,导入的时候到不进去

对私有化的属性进行访问:

设置setter和getter方法

简化:把setter和getter方法加到 obj =  property(setter, getter)方法里 ,通过调用obj 实现set和get方法

在get方法上加@property,在set上加 @get_method_name.setter,一般是把属性名设置为方法名

生成器和列表:

生成器是调用一次算一次,不调用就不算,占用内存比较少

生成器的调用方式有两种,一种是next()方法,另一种是send()方法,send()方法在第一次调用的时候需要,传递空值None才可以

isinstance(obj, class)此方法判断第一个参数对象是否属于第二个类的类型

迭代器和可迭代对象:

可迭代对象:集合数据类型、生成器和带yield的函数

迭代器:可以被next()函数调用并且不断返回下一个值的对象,生成器也是迭代器。集合数据类型之类的就不算了,使用iter()方法可以把可迭代对象变成迭代器

在函数里使用方法locals()可以显示当前函数的属性名和属性值

使用dir(__builtin__)方法可以查看Python自带的全局属性和方法

闭包:

内部函数对外部函数作用域里变量的引用(非全局变量),则称内部函数为闭包

装饰器:

装饰器其实就是一个闭包,把一个函数当参数然后返回一个替代版函数

装饰器有两个特性:

一是可以把被装饰的函数,替换成其他函数,二是可以在加载模块的时候立即执行

变量名.__name__ 可以查看名字

写一个通用的装饰器,需要满足两点,1.不定长参数,2.有返回值。多练习,多应用

Python是动态语言:

为对象添加实例方法,导入types模块,调用MethodType()方法

魔法方法 __slots__ 是用来限制外部任意增加属性的功能,翻译为插槽,意思是给你几个特定的插槽可以用,没有的就不行

类装饰器:

在Python中只要在类里实现了魔法方法__call__()方法,都可以当函数用。例如:test = Test() 其中 t 是对象的引用,Test类实现了方法 __call__() 方法,那么可以这么调用:test() 表示的是调用的是Test类中的__call__()方法。如果需要把此类当做装饰器,需要先在__init__()方法中含有接收函数的形参,并且类中要实现__call__()方法,具体的函数调用在 __call__() 方法中

Python中的对象池:

Python中的对象池是提前内置在解释器中的,为了减少内存创建和删除的开销,对象池中一共有三种:

1.小整数范围是:[-5,257)、2.单个字符、3.一个连续的英文字符的合集(例如:hello、kjjkjhjeshkjhf,都是可以的),如果两个变量的值等于这三种中的随便一种,并且两个变量值相同,那么两个变量指向的是对象池中的同一个,内存地址相同

Python的内存管理机制(垃圾回收):

为新生成的对象分配内存

识别那些垃圾对象

从垃圾对象那回收内存

Python采用的是引用计数机制为主,标记-清除和分代收集两种机制为辅的策略

引用计数的优点引用计数的缺点
简单维护引用计数消耗资源
实时性:一旦没有了引用,内存就直接释放了。不用像其他机制等到特定的时机。实时性还带来一个好处:处理回收内存的时间分摊到了平时循环引用

查看一个对象的引用计数可以导入sys模块,调用getrefcount()方法

gc模块无法处理子类重写了__del__() 方法的循环引用的回收,因此项目中要避免使用__del__()方法

内建属性:

属性访问拦截器:__getattribute__(),访问属性时,会回调此方法

消除装饰器的副作用(被装饰过的方法依然调用自身):导入functools模块,使用装饰器@functools.wraps(fun)来消除

上下文管理器:

任何实现了__enter__() 和 __exit__() 方法的对象,都可以成为上下文管理器,上下文管理器对象可以使用with关键字

assert 关键字的使用:

assert进行修饰的时候,表示在它出现出错的条件就会崩溃

assert 的语法格式:

assert expression

它的等价语句为:

if not expression:
    raise AssertionError

使用下列代码来测试:

a = "hello"

加assert前
a == "hh"
False

加assert后,会报错
assert a == "hh"
Traceback (most recent call last):
  File "<input>", line 1, in <module>
AssertionError

参考:https://blog.youkuaiyun.com/humanking7/article/details/45950781

 

【Unity】YooAsset + HybridCLR热更 本文介绍了Unity游戏开发中的热更新技术方案,重点对比了资源热更和代码热更的主流工具。资源热更方面分析了Asset Bundle、Addressable和YooAsset的优缺点;代码热更部分比较了xLua、ILRuntime、InjectFix和HybridCLR的性能特点。文章详细演示了HybridCLR+YooAsset的实践方案,包括加载热更新程序集、反射调用热更代码、资源打包部署等完整流程。该方案通过原生运行时实现程序集级热更,具有极低性能损耗和全生命周期适用性,配合YooAsset简化了资源管 阅读详情

相关推荐

淘宝x-mini-wua生成机制与硬件信息关联性深度解析

本文深度解析了淘宝x-mini-wua的生成机制与硬件信息的关联性,详细介绍了其作为设备指纹令牌的核心作用及技术实现细节。通过分析基础硬件层、环境特征层和行为特征层的数据采集,揭示了淘宝如何利用AES加密和分级加密策略防止破解,并探讨了其安全防护与对抗策略。

weixin_29243279的博客 230

python学习笔记

python学习笔记

weixin_43638249的博客 165

【分布式系统学习】CAP原理详解

概述:互联网最重要任务莫过于海量数据处理,即大规模分布式系统,分布式是互联网的核心技术!!!如上所述,分布式系统是无法同时满足CAP三个特性的。1.Atomicity(原子性)一个事务中的所有操作,要么全部完成,要么全部不完成,不会在中间某个环节结束。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。2.Consistency(一致性)在事务开始之前和事务结束以后,数据库的完整性没有被破坏。3.Isolation(隔离性)

大龄烤红薯的博客 5024

【Python】Python学习笔记10

【代码】【Python】Python学习笔记10。

Treasure031227的博客 608

STM32移植u8g2库(HAL库)(硬件SPI)(sh1106_128x64)

STM32移植u8g2库(HAL库)(硬件SPI)(sh1106_128x64) MCU型号为STM32F103RCT6,OLED屏为中景园电子1.3寸屏,驱动芯片为sh1106,分辨率为128x64,MDK版本为V5.34。

Master_0_的博客 6272

服务器冗余电源维修图纸,冗余热备份电源的电路图设计

在设计某高可靠性计算机系统时,要求其配套电源采取冗余设计。一般来说,可以采取的方案有容量冗余、冗余冷备份方式、并联均流的N+1备份方式、冗余热备份方式。容量冗余是指电源的最大负载能力大于实际负载,也就是“大马拉小车”,其缺点是不利于提高电源的效率,而且对提高电源的可靠性意义不大。冗余冷备份方式是指电源由两个或多个功能相同的单元模块组成,电源启动后由其中一个单元模块向设备供电,当工作单元发生故障时,...

weixin_39671509的博客 1995

python数据可视化学习笔记

学习笔记,有待更新

weixin_45679438的博客 921

VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减

[课程学习] VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减

夏风喃喃的博客 1604

Python 学习笔记

这里转几份网上搜索到的学习笔记,帮助自己学习Python。

xuan0506的博客 126

车载测试面试题总结

首先确认是什么问题,如果是测试软件的问题就先确定自己的测试方法有没有问题,如果没有问题,那就是测试软件的问题,这时候就需要提bug 进行跟踪,(比如BCM测试的时候,先明确测试的输入,对输入)进行需求分析,然后设计测试用例,进行用例评审,评审完执行测试用例形成最终的版本,台架分为:hil(黑尔)台架,单个控制器的台架、整车台架、车身台架、动力系统台架等,主要验证其功能,或者实车无法满足的测试环境。这个人不可能一直,点击几千次或者多少次几个小时连续点击,人不可能一直在点。因为要模拟一下这个稳定性,

woaxiaoqing的博客 7817

弹窗提示报错: F:\c\CFX5\bin\Debug\net9.0-windows10.0.26100.0\CFX5.dll 面向无法动态枚举工具箱项目的平台...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 947

Python学习笔记资源下载

Python学习笔记资源下载 去发现同类优质开源项目:https://gitcode.com/ 简介 本仓库提供了《Python学习笔记》文档的下载,该文档详细记录了Python语言的学习要点和实战经验,适合初学者和进阶者使用。 文件信息 文件名:Python学习笔记.docx 文件描述:Python学习笔记 使用说明 下载文件后,请使用Microsoft Word或兼容的文档编辑器打开。 ...

gitblog_06742的博客 447

R语言caret拟合模型:train函数构建xgBoost Dart模型、模型调优、自定义设置trainControl函数和tuneLength参数

R语言caret拟合模型:train函数构建xgBoost Dart模型、模型调优、自定义设置trainControl函数和tuneLength参数

statistics+insight+vista+power 530

Python学习笔记(全是干货)

Python学习笔记(全是干货) 【下载地址】Python学习笔记全是干货分享 本资源文件是《Python学习笔记(全是干货)》的完整内容,由作者根据自身学习编程的经验和体会精心整理而成。为了帮助大家更好地掌握Python编程,作者还录制了相应的系列视频教程《手把手教你学Python》 ...

gitblog_06637的博客 960

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

python 学习笔记

python 学习笔记

缥缈的云 专栏 687

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【Python】Python学习笔记4

【代码】【Python】Python学习笔记4。

Treasure031227的博客 459

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Python学习笔记一

Python学习笔记一

xiaojkql的博客 324

【Rollo的Python之路】Python 信号量 学习笔记 Semaphore

Python 信号量 学习笔记 Semaphore 信号量semaphore 是用于控制进入数量的锁。有哪些应用场景呢,比如说在读写文件的时候,一般只能只有一个线程在写,而读可以有多个线程同时进行,如果需要限制同时读文件的线程个数,这时候就可以用到信号量了(如果用互斥锁,就是限制同一时刻只能有一个线程读取文件)。又比如在做爬虫的时候,有时候爬取速度太快了,会导致被网站禁止,所以这个时候就需要...

weixin_30673715的博客 234

Python学习笔记说明

Python学习笔记说明所有的Python学习笔记都是我在学习廖雪峰的官方网站中的Python教程过程中记录下来的,所以大部分内容会与廖大大教程中的内容相重合,我只是想自己再写一遍,加深印象,作为记录,以便日后复习。 如果大家想学习Python,可以去廖大大的网站。 最后感谢廖大大的无私奉献

link98 301

笨办法学python ex38 学习笔记

笨办法学python ex38 学习笔记 print("Wait there are not 10 things in that list. Let's fix it.") stuff = ten_things.split(' ') more_stuff = ["Day","Night","Song","Frisbee","Corn","Banana","Girl","Boy"] while len(stuff) != 10: next_one = more_stuff.pop() print("A

weixin_40946769的博客 323
上一篇: 理解RESTful
下一篇: 在Ubuntu 18.04 中设置开机自动执行脚本
命运的棋局
博客等级 码龄10年 15粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值