使用Delphi 编写Python Extension 作者:1000copy 摘要: 在互联网公共可访问领域内,关于Python/C interface的介绍,手册都是比较多的。Py直接支持C编写扩展,对于Delphi程序员,P4D是一个很好的选择。 不幸的是,通过P4D[2]编写PyExtention,并没有一个很好的入门文档,本文试图填写这个空白。 本文风格完全模仿Writing Python Extensions[1],希望以例子为本,让大家很快的进入状态。 1. 引言: 本文假设你:* 懂得Python* 懂得Delphi* 想要通过P4D编写Python Extension * 已经安装了Delphi7,P4D,Python2.4以上。 2. 第一个Python Extension 以下的例子是可以直接使用的,只要拷贝如下代码,存放到ExAdd.dpr,直接用Delphi编译,就可以成为一个Python Extension 。我们可以首先看到效果,然后在分析程序。 2.1 最小的例子{文件名 ExAdd.dpr}library ExAdd;uses SysUtils,Classes,PythonEngine;{$E pyd}varFModule : TPythonModule;FEngine:TPythonEngine ;function Add( Self, Args : PPyObject ) : PPyObject; far; cdecl;vara, b : Integer;beginwith GetPythonEngine dobeginif PyArg_ParseTuple( args, 'ii:Add', [@a, @b] )  0 thenbeginResult := PyInt_FromLong( a + b );endelseResult := nil;end;end;                procedure initExAdd; cdecl;beginFEngine := TPythonEngine.Create(nil);FModule := TPythonModule.Create(nil);FModule.Engine := FEngine;FModule.ModuleName := 'ExAdd';FModule.AddMethod( 'exadd', @Add, 'exadd(a,b) -> a+b ' );FEngine.LoadDll;end;exportsinitExAdd;var  OldExitProc: pointer;procedure MyExitProc;beginFModule.Free;FEngine.Free;ExitProc := OldExitProc;end;beginOldExitProc := ExitProc;ExitProc := @MyExitProc;end.// 测试代码//from ExAdd import *//print exadd(1,10)2.2 解说这是一个最小的例子,只要一个文件ExAdd.dpr ,不需要任何其他的Pas Unit文件就可以了。当我们把他放到py的syspath内,比如libsite-packages,在pywin内,可以做如下测试:>>> from ExAdd import *>>> print exadd(1,10)11>>> 可以看到,Python内的程序确实成功的调用了通过Delphi写的扩展。如何做到的? 2.3 如何注册一个模块当Python内执行from ExAdd import *时,将会到syspath内寻找ExAdd.pyd,这里的pyd就是一般的dll,只不过还有一些约定。当Py找到这个文件后,就调用引出函数initExAdd,这个函数的命名就是python程序和.pyd模块的的一个约定----函数命名必须为init+module名称。一般来说,在init函数内,就进行引擎的初始化,模块的注册,函数,类型的注册等等工作。这里例子内,我们使用了TPythonEngine,TPythonModule两个P4D提供的类,帮助我们做这些工作。注册模块时,要注意FModule.ModuleName := 'ExAdd';内的ModuleName就是在Python内使用的模块完全一致,当然我们可以使用其他的名字,比如ExQuickAdd,只要from ExAdd import *内使用的模块名称一致即可。为了方便和一致,我们可以约定dll的名字,python内的module,delphi内的TPythonModule名字完全一致。这在语法上并非必须,不过这样做是一个很好的习惯。 2.4 如何注册一个函数任何一个按照如下原型注册的函数,都可以被注册为PyExtention的函数。function Add( Self, Args : PPyObject ) : PPyObject; far; cdecl;其中cdecl说明服从C语言的调用规范,而不是Pascal或者其他。毕竟Python是C语言写就的,当然按照C语言的习惯来。这个函数原型中,参数将会包括Self,Args,返回值得也是一个PPyObject,熟悉Python语言的都知道,任何一个Python函数在被调用时都会传递一个Self指针进来,并且以Tuple的方式传递参数列表,这个Add函数的实现约定上也就表现出来了,所有的类型都是对象。比如Add(3,4)这个的Python调用,参照Add在Delphi中函数原型,上,那么"3,4"作为一个Tuple对象,伴随Self,也是一个PPyObject,返回值7也是一个PPyObject来表达。要不怎么都说Python慢呢?本来一个加操作可以直接对应汇编中的一个指令,现在又是对象又是指针,当然很难快了。一旦有了这样的声明,就可以这样注册函数。FModule.AddMethod( 'exadd', @Add, 'add(a,b) -> a+b ' );以上语句向Python系统声明,exadd函数的实现在add内,最后参数作为__docstring__。当IDE内使用这个函数时,可以通过codeinsight,或者help来获得函数的使用说明。现在来看add的实现代码。一眼看过去,PyArg_ParseTuple,PyInt_FromLong是两个特别的东西。PyArg_ParseTuple负责把传进来的args变成简单的Delphi类型,在Ppyobject内存储的3,4,分别存放到a,b:Integer内,就是PyArg_ParseTuple( args, 'ii:Add', [@a, @b] )  0 其中第二个参数 'ii:Add' ,有些像是Format格式,i指明类型为Integer,两个I指明有两个整数,:add是可选的,当出错的时候,有:add,可以帮助程序员更好的找到错误。这样就把PPyobeject所表达的PythonType转为一般Delphi类型;而PyInt_FromLong这是想法,他把Delphi的Long类型转换为PyObject的Integer;从而可以让结果可以为Python识别。这两个函数尽管是P4d实现的,但是和Python/C interface手册内规定的函数名称一致,因此具体的调用方法也可以看Python/C interface手册。实际上Python实现内的对象表达采用了一个结构(Struct),很有一些复杂,我们现在可以在很高层的去看,要感谢P4D所做的工作。 3. 实现一个类第一个例子可以工作,并且能够演示注册模块,函数和一些基本的Python Ext的概念。对于长期使用Delphi这样的OO语言,仅仅公开函数当然不够方便,我们需要的是全OO编程,即使跨越了语言,也不会放弃这样的习惯。我们现在要让Delphi的类可以为Python。 3.1 又一个例子 你首先看到的依然是一个例子,我们要把Delphi中的TPoint公开出来,让python可以调用,模块名称为dpoint,最终我们要在pythonIDE内看到的效果:>>> from dpoint import *>>> print SmallPoint(222,111)>>> SmallPoint.__doc__'wrapper for Delphi TPoint typen' P4D为注册类这样的工作提供了TPyDelphiWrapper类,在这个例子里,我们围绕这TPyDelphiWrapper来分析。 3.2 例子代码library dpoint;usesSharemem ,SysUtils,Classes,WrapDelphi,Types,PythonEngine;{$E pyd}varFModule : TPythonModule;FEngine:TPythonEngine ;FDelphiWrapper : TPyDelphiWrapper;procedure initdpoint; cdecl;beginFEngine := TPythonEngine.Create(nil);FModule := TPythonModule.Create(nil);FModule.Engine := FEngine;FModule.ModuleName := 'dpoint';FDelphiWrapper := TPyDelphiWrapper.Create(nil);FDelphiWrapper.Engine := FEngine;FDelphiWrapper.Module := FModule;FEngine.LoadDll;end;exportsinitdpoint;varOldExitProc: pointer;procedure MyExitProc;beginFModule.Free;FEngine.Free;ExitProc := OldExitProc;end;typeTPyDelphiPoint = class(TPyObject)privatefValue: TPoint;protectedpublicconstructor CreateWith( APythonType : TPythonType; args : PPyObject ); override;class procedure SetupType( PythonType : TPythonType ); override;end;TypeTTypesRegistration = class(TRegisteredUnit)publicfunction Name : String; override;procedure RegisterWrappers(APyDelphiWrapper : TPyDelphiWrapper); override;end;      function TTypesRegistration.Name: String;beginResult := 'Types';end;procedure TTypesRegistration.RegisterWrappers(APyDelphiWrapper: TPyDelphiWrapper);begininherited;APyDelphiWrapper.RegisterHelperType(TPyDelphiPoint);end;constructor TPyDelphiPoint.CreateWith(APythonType: TPythonType;args: PPyObject);varx, y : Integer;begininherited;if APythonType.Engine.PyArg_ParseTuple( args, 'ii:Create', [@x, @y] )  0 thenbeginfValue.X := x;fValue.Y := y;endend;class procedure TPyDelphiPoint.SetupType(PythonType: TPythonType);begininherited;PythonType.TypeName := 'SmallPoint';PythonType.TypeFlags := PythonType.TypeFlags + [tpfBaseType];PythonType.DocString.Text := '12345';end;beginRegisteredUnits.Add(TTypesRegistration.Create);OldExitProc := ExitProc;ExitProc := @MyExitProc;end. 3.3 注册过程 一个类必然要属于某一个模块,注册一个类就涉及到注册一个模块。关于注册模块,在例子中占据了不少带代码,但是它和第二部分完全一样,我们掠过不看。 本来注册一个类是有些复杂度的,如果想要知道这个复杂度,可以先看看参考文献1内的描述。不过采用P4D的类型注册框架就简单多了。 我们的例子pyd命名为dpoint ,我们准备把TPoint类型公开到Python内。 在initdpoint函数内,TPythonEngine,TPythonModule照样的初始化,比起函数注册来说,不同的地方在于创建了TPyDelphiWrapper的实例gDelphiWrapper, 并且指明他所属的PythonEngine,PythonModule。procedure initdpoint;begingEngine := TPythonEngine.Create(nil);gEngine.AutoFinalize := False;gModule := TPythonModule.Create(nil);gModule.Engine := gEngine;gModule.ModuleName := 'dpoint';gDelphiWrapper := TPyDelphiWrapper.Create(nil);gDelphiWrapper.Engine := gEngine;gDelphiWrapper.Module := gModule;gEngine.LoadDll;end; gDelphiWrapper将会在RegisteredUnitList寻找RegisteredUnit,并且调用 这个类别内的RegisterWrappers方法,通过这个方法或者需要注册的Python类的Delphi包装类。 因此,我们要做的事情就是: 约定实现两个类,一个是需要公开的类型的Wrapper,这里就是TPyDelphiPoint,一个是注册这个Wrapper的注册类,本例子内就是TTypesRegistration。 TTypesRegistration只要实现两个覆盖基类的方法,从而达到通知TPyDelphiWrapper需要注册的类是TPyDelphiPoint。function Name : String; override;procedure RegisterWrappers(APyDelphiWrapper : TPyDelphiWrapper); override; 我们更多的注意力,尤其是以后的更多对PythonExtension特性的利用,集中于TPyDelphiPoint上。 TPyDelphiPoint,作为一个PythonType,最少要实现的方法有:constructor CreateWith( APythonType : TPythonType; args : PPyObject ); override;class procedure SetupType( PythonType : TPythonType ); override; 我们可以注意到,CreateWith传递的args依然是PPyObject类型,和前文谈到的add方法对参数和返回值的处理都是一致的。 SetupType将会指明在Python内如何使用这个类型,根据源代码知道,SetupType指明这个类型在Python内的类型为SmallPoint,提供基本服务(fvbase),类型文档__doc__为 '12345', 测试用例3.1代码如果正常运行,就自然的证实了这一点。 4.充分利用Python的特性 4.1 repr服务 以上例子很简单,但是可以表达主旨,是进一步了解和把握P4D编写扩展的基础。 从3.1的测试用例看,>>> print SmallPoint(222,111)这样的输出很不友好,我们希望他是这样的:>>> print SmallPoint(222,111)222,111 这样的服务在py内早已存在,它的名字叫做repr,每个对象如果希望打印友好,都应该支持这样的服务。 在Delphi编写的Py扩展中,如何做到这样的效果? 4.2 例子 一旦框架铺陈完毕,编写具体的功能就很简单了。repr服务只要覆盖一个方法,加上对返回参数的包装就可以了。 function  Repr : PPyObject; override; .. implementation .. function TPyDelphiPoint.Repr: PPyObject; beginwith GetPythonEngine doResult := PyString_FromString(PChar(Format('', [Value.X, Value.Y]))); end; 4.3 更多 设置属性,需要覆盖RegisterGetSets方法: class procedure TPyDelphiPoint.RegisterGetSets(PythonType: TPythonType); begininherited;with PythonType dobeginAddGetSet('X', @TPyDelphiPoint.Get_X, @TPyDelphiPoint.Set_X,'Provides access to the X coordinate of a point', nil);AddGetSet('Y', @TPyDelphiPoint.Get_Y, @TPyDelphiPoint.Set_Y,'Provides access to the Y coordinate of a point', nil);end; end; 别忘了在SetupType内加入一行:PythonType.Services.Basic := PythonType.Services.Basic+[bsGetAttrO, bsSetAttrO]; 告诉Python你的服务中有属性的支持。 允许dpoint之间比较大小,需要覆盖Compare方法: function TPyDelphiPoint.Compare(obj: PPyObject): Integer; var_other : TPyDelphiPoint; beginif IsDelphiObject(obj) and (PythonToDelphi(obj) is TPyDelphiPoint) thenbegin_other := TPyDelphiPoint(PythonToDelphi(obj));Result := CompareValue(Value.X, _other.Value.X);if Result = 0 thenResult := CompareValue(Value.Y, _other.Value.Y);endelseResult := 1; end; 同样别忘了在SetupType内加入一行:PythonType.Services.Basic := PythonType.Services.Basic+[bsCompare]; 告诉Python你的服务中有bsCompare的支持。 5. 编写扩展后做什么? 5.1 P4d的代码值得已读,因为基于注册的架构,dll直接到类TDynamicDll值得看,了解Python的内部实现,P4d本身就是Python和Delphi结合编程的良好榜样。 5.2 使用P4D还可以怎么样?这个图景在我自己还并不很清楚。但是Python和Delphi的结合的愿望在我却一直很强烈,希望有更多的朋友参与进来,提出更多的想法。 参考: [1] Writing Python Extensions(Michael Hudsonhttp://starship.python.net/crew/mwh/toext/toext.html) [2] P4D Python For Delphi的缩写从它的Change.txt内可以看到,这个P4D从1998年计算有接近10年的历史了。世道沧桑啊。 [3] Using Delphi and Python togetherhttp://www.atug.com/andypatterns/pythonDelphiTalk.htm很好的教程,可惜对输出类型这里语焉不详,不知道为什么。这也是我要写本文的动因。 
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 简析Python培训能学到什么

    Python是人工智能时代最佳的编程语言,是入门简单、功能强大的“胶水语言”,还是非专业人士转行IT开发首选的“初学者友好型语言”。很多人选择参加培训班进行快速系统的学习,但参加郑州Python培训班毕业后能做什么呢?且看小编的分析。Python是一种计算机程序设计语言,可应…...

    2024/4/25 18:59:47
  2. 好程序员Python培训分享学Python需要掌握哪些技能

    随着大数据和人工智能技术的落地应用,Python的应用范围得到进一步拓展,IT行业陆续释放出大量的Python开发岗位。有人想要入行Python,却又担心学习Python就业不好,那么一个高薪高职的Python人才需要掌握哪些技能呢?以下是好程序员Python培训小编整理的相关资料。Python是一…...

    2024/4/25 18:59:45
  3. Python培训完能找上工作吗?

    Python培训完能找上工作吗? 有些同学一直有个疑问:花了这么多学费在培训机构培训了Python之后,工作好找吗?我该往那个方向发展呢?今天小编根据Python的实战项目梳理出几个方向,希望能为大家学习、求职做个参考。 方向一:人工智能 2019年最受欢迎人工智能编程语言中,Pyt…...

    2024/4/25 2:28:14
  4. Java和Python哪个更好?

    一些开发人员声称Python比Java更有效率。但这应该先弄清Python和Java之间的区别是什么?Java和Python的区别Java是一种严格的类型语言,这意味着必须显式声明变量名。相比之下,动态类型的Python则不需要声明变量。在编程语言上有许多关于动态和静态类型的争论,但有一点应该注意…...

    2024/4/25 18:59:44
  5. Linux环境编程语言概览

    Linux环境编程语言概览 我从最开始学习编程的时候,就是使用Linux。虽然我只有三年的编程经验,但是我觉得,使用Linux编程,真是一件令人心情愉悦的事情。 C语言 我接触C语言,仅仅是大学时的一门必修课。而C语言的简单、结构化和高效也使它从诞生至今四十余年,经久不衰。 C语…...

    2024/4/24 20:42:24
  6. 详见Python编程中一些重用与缩减的技术

    @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 文章目录返璞归真函数:封装逻辑函数:返回数据模块:简化代码重用模块库可执行文件重用与缩减 返璞归真 许多流行的玩具都以这样一个概念为基础:简单的积木。这些简单的积木可通过多种方式组合在一起构造出全新的…...

    2024/4/25 18:59:41
  7. 零基础Python培训入门 教你认识下这些基础内容

    Python编程语言为什么近些年这么火?从它本身的语言特性来看,Python编程简单而且直接,适合初学编程者,让初学者能够专注于编程逻辑,而不是在不流通的语法细节上感到困惑。零基础Python培训中心认为,刚开始学习Python的人,还能提升编程的自信心。  Python语言无一出尽风…...

    2024/4/25 18:59:40
  8. 25岁了,是学linux运维还是编程好呢?求指点下 ..

    刚培训完 出去找工作 都是要经验 又要懂硬件,windows,linux,网络设备(路由,交换,防火墙等等。。。)我就学了cisco大概NA水平 和linux基础 还有linux服务的配置(apache,keepalived,vsftp,squid等等) 感觉学运维的知识实在太多了吧 学完这个服务搭建和配置 过一…...

    2024/4/25 1:30:00
  9. LTE网络优化转PYTHON编程之路

    2015年吉隆坡工作之余自学PYTHON,也想过参加培训机构的,但时间上不允许,所以每天晚上默默花1到2个小时去学。然后一路走到2019年,断断续续地学习了不少内容。个人新心德如下:关于所选语言:对于网络优化,基本处理的是EXCEL,万能的VLOOKUP开始搞,后来觉得知识不够,开始学…...

    2024/4/25 1:04:47
  10. 你是如何学习 Linux 编程的?

    作者:Kerr Wang 链接:https://www.zhihu.com/question/20730157/answer/82034823 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 首先,要学Linux编程,你得会用Linux,也就是得在命令行环境下生存下来。什么叫生存下来呢?就是我现在给…...

    2024/4/25 18:59:37
  11. 北京Python培训机构,众多编程中为何它一路高歌

    已经记不清楚曾经何时在编程圈内一直流传着这样的话:人生苦短我用Python、学完Python便可上天。虽然明知是网络上面的戏言,但现在却逐渐形成一个现实,同样也反映了目前它在编程语言中的地位。就在前几天官方已经发布了zui新的4月编程语言排行榜,而这一次不仅是铁三角不牢固…...

    2024/4/25 18:59:36
  12. 上海python培训机构都有哪些?

    我们知道Python培训机构其实非常繁多,让我们眼花缭乱,尤其是在上海这种一线城市。具体有哪些我就不说了,自己可以去网上查找。不过,咱们选择的时候可以重点从师资、课程设置、学生就业服务三方面考虑。说到师资,毕竟修行靠个人之前要有师傅领进门嘛;课程设置为是你重要呢…...

    2024/4/25 18:59:35
  13. 跟我一起学习Python编程

    跟我一起学习Python编程 第1章 Python基础语法 1.1 用户交互和注释 交互: name = input("Whats your name:") print("My name is:" + name)运行结果: 执行脚本就会发现程序会等待你输入姓名后再往下继续走。 可以让用户输入多个信息,如下: name = inpu…...

    2024/4/25 18:57:35
  14. 好程序员Python培训分享Python编程中常见的异常处理

    好程序员Python培训分享Python编程中常见的异常处理,今天将对python编程中经常会遇到的一些报错与异常的进行总结与分析,虽然不会面面俱到,但是可以提供一种面对这样的问题时的思考方法,会对python的编程能力的提高有所帮助。初学python经常会遇到的一些错误:下面错误类型…...

    2024/4/25 18:57:34
  15. 机器人主流编程语言盘点 及优缺点分析

    机器人编程语言最早于20世纪70年代初期问世,到目前为止已有多种编程语言出现,在众多机器人编程语言中究竟哪种编程语言最好呢?这个问题困扰了很多新手学者,但遗憾的是,这是一个没有准确答案的问题,你问不同的人会得到不同的答案,对于机器人学者来说建立“编程思维“才是…...

    2024/4/25 18:57:33
  16. Python可以干什么?牛人用Python写了个会做诗的机器人

    Python可以干什么?用Python写个会做诗的机器人怎么样?今天小编就带领大家,利用自然语言处理技术和聊天机器人结合,做一个自动做诗的聊天机器人,你激动么?快来看看吧:The dog , which already ate a bunch of food, was fullThe dogs , which already ate a bunch of foo…...

    2024/4/25 18:57:33
  17. 机器人理论与实践(1): 差速驱动原理与python编程模拟 (控制模型建模)

    本文未经本人@Ai酱许可, [禁止转载]差速驱动的原理就是:利用左轮和右轮的速度差异来旋转。它的控制命令是[左轮速度,右轮速度,持续时间]。下面这玩意平衡车就是典型的差速驱动。(图片来自网络) 本文要解决的问题是:在已知控制命令,和机器人当前时刻的位置,朝向;我们如何…...

    2024/4/25 18:57:32
  18. 机器人编程挑战python

    机器人编程挑战 要使用pip安装模拟器,请运行pip install zombiedice(在Windows上)或pip3 install zombiedice(在macOS和Linux上)。要使用一些预先制作好的机器人运行一个演示程序,可以运行python -m zombiedice(在Windows上)或python3 -m zombiedice(在macOS和Linux上),以查…...

    2024/4/25 18:57:31
  19. 机器人编程语言有哪些?主流机器人编程语言及优缺点分析

    机器人编程语言最早于20世纪70年代初期问世,到目前为止已有多种编程语言出现,在众多机器人编程语言中究竟哪种编程语言最好呢?这个问题困扰了很多新手学者,但遗憾的是,这是一个没有准确答案的问题,你问不同的人会得到不同的答案,对于机器人学者来说建立“编程思维“才是…...

    2024/4/25 18:57:30
  20. 机器人编程语言有哪些? 这5大编程语言的优缺点你都了解?

    机器人编程语言最早于20世纪70年代初期问世,到目前为止已有多种机器人编程语言出现,在众多机器人编程语言中究竟哪种编程语言最好呢?这个问题困扰了很多新手学者,但遗憾的是,这是一个没有准确答案的问题,你问不同的人会得到不同的答案,对于机器人学者来说建立“编程思维…...

    2024/4/25 18:57:28

最新文章

  1. 《飞吧龙骑士》新版本“龙神祭”盛大开启,引领骑士团战

    热游圈消息:五一假期临近,备受瞩目的手游《飞吧龙骑士》迎来重大更新——“龙神祭”新版本正式开启。在此次更新中,首个蓄力炮UR龙——绮舞的巫女千代烬惊艳登场,为玩家们带来前所未有的燃情体验。同时,全新骑士团战玩…...

    2024/4/25 20:41:59
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 基于GAN的多变量时间序列污染训练集异常检测

    论文地址:https://ieeexplore.ieee.org/document/9618824 论文源码:https://github.com/sxxmason/FGANomaly 期刊:IEEE Transactions on Knowledge and Data Engineering 多元时间序列异常检测在结构健康监测、智能运维、量化交易等诸多实际…...

    2024/4/21 20:36:52
  4. 同一个pdf在windows和linux中的页数不一样

    之前认为PDF的格式,至少页数是不会变化的,结果最近发现一个文档在windows和linux中的页数不一样,linux中的pdf进入像word一样排版变得紧凑了,原本在下一页的几行进入了上一页的末尾。问了gpt后得到这样的回答: PDF文档…...

    2024/4/21 6:41:42
  5. C++ //练习 11.14 扩展你在11.2.1节练习(第378页)中编写的孩子姓到名的map,添加一个pair的vector,保存孩子的名和生日。

    C Primer(第5版) 练习 11.14 练习 11.14 扩展你在11.2.1节练习(第378页)中编写的孩子姓到名的map,添加一个pair的vector,保存孩子的名和生日。 环境:Linux Ubuntu(云服务器&#x…...

    2024/4/22 21:19:28
  6. Activity跳转慢导致不能显示在锁屏上

    activity跳转时怎么传递参数采用事例的方式写出相关代码

    ...

    2024/4/25 18:59:56
  7. 中谷教育python视频教程(中谷python中文视频教程)

    ​能发下中谷教育-Python视频教程-30-爬虫的种子或下载链接么? 中谷教育-Python视频教程-30-爬虫种子下载地址: 采纳!做一个有道德的观众...

    2024/4/25 18:59:55
  8. 2020版python教程_小白入门03

    python教程-小白入门/2020/7/15 文章目录python教程-小白入门/2020/7/15P15 pycharm虚拟环境P16 python常见的数据类型 P15 pycharm虚拟环境在创建新的项目的时候尽量先创建好空的文件夹,然后再选择空的文件夹作为项目的路径。 最重要的是这个location要正确。location对了就算…...

    2024/4/24 20:45:46
  9. Python初阶教程—开篇

    Python简介Python诞生于20世纪90年代初,是一种跨平台的计算机程序设计语言,是一种解释型的, 面向对象的动态类型语言,可以进行交互式编程。Python的定位是“优雅”、“明确”、“简单”, 在设计上对于人类是友好的,且具有简洁性、易读性、和可扩展性。Python是开源的,许…...

    2024/4/25 16:44:34
  10. python车牌定位

    车牌定位(机器学习) Github分类器地址: https://github.com/zeusees/HyperLPR/blob/master/model/cascade.xml 代码链接: https://blog.csdn.net/DerrickRose25/article/details/87160690...

    2024/4/25 18:59:52
  11. 了解您的Python对象使用多少内存

    Python是一种很棒的编程语言。 它也以相当慢而闻名,主要是由于其巨大的灵活性和动态功能。 对于许多应用程序和领域,由于它们的要求和各种优化技术,这不是问题。 鲜为人知的是,Python对象图(列表和元组的嵌套字典以及原始类型)占用大量内存。 由于它对缓存,虚拟内存,与…...

    2024/4/25 18:59:52
  12. 一张图让你看懂Python是如此之火-百度、阿里巴巴

    一张图让你看懂Python是如此之火-百度、阿里巴巴等科技大公司都稀缺的人才写在最后前几天有私信我要Python的学习资料,我连夜整理了一些有深度的Python教程和参考资料,从入门到高级的都有,文件已经打包好了,正在学习Python的同学可以免费下载学习学习。文件下载方式:点击我…...

    2024/4/25 18:59:50
  13. 菜鸟教程在线编辑器前端页面源码

    文章目录页面效果代码 页面效果代码<!DOCTYPE html> <html> <head><meta charset="utf-8"> <title>菜鸟教程在线编辑器</title><meta name="viewport" content="width=device-width, initial-scale=1.0"…...

    2024/4/25 18:59:50
  14. 【Python语法】Python中为自定义类编写help文档以及进行文档测试

    一 以注释方式为类添加帮助文档我们知道,Python中可以使用help(模块名)或者help(类名)的形式来查看一个模块或者类的帮助文档,我们也可以为自定义的类添加帮助文档,并用help进行查看.Python中用三对双引号可以进行多行注释,当我们把这种注释内容放到一个类或者函数定义的下面时…...

    2024/4/25 18:59:48
  15. 使用Delphi 编写Python Extension

    使用Delphi 编写Python Extension 作者:1000copy 摘要: 在互联网公共可访问领域内,关于Python/C interface的介绍,手册都是比较多的。Py直接支持C编写扩展,对于Delphi程序员,P4D是一个很好的选择。 不幸的是,通过P4D[2]编写PyExtention,并没有一个很好的入门文档,本文…...

    2024/4/25 18:59:47
  16. 简析Python培训能学到什么

    Python是人工智能时代最佳的编程语言,是入门简单、功能强大的“胶水语言”,还是非专业人士转行IT开发首选的“初学者友好型语言”。很多人选择参加培训班进行快速系统的学习,但参加郑州Python培训班毕业后能做什么呢?且看小编的分析。Python是一种计算机程序设计语言,可应…...

    2024/4/25 18:59:47
  17. 好程序员Python培训分享学Python需要掌握哪些技能

    随着大数据和人工智能技术的落地应用,Python的应用范围得到进一步拓展,IT行业陆续释放出大量的Python开发岗位。有人想要入行Python,却又担心学习Python就业不好,那么一个高薪高职的Python人才需要掌握哪些技能呢?以下是好程序员Python培训小编整理的相关资料。Python是一…...

    2024/4/25 18:59:45
  18. Python培训完能找上工作吗?

    Python培训完能找上工作吗? 有些同学一直有个疑问:花了这么多学费在培训机构培训了Python之后,工作好找吗?我该往那个方向发展呢?今天小编根据Python的实战项目梳理出几个方向,希望能为大家学习、求职做个参考。 方向一:人工智能 2019年最受欢迎人工智能编程语言中,Pyt…...

    2024/4/25 2:28:14
  19. Java和Python哪个更好?

    一些开发人员声称Python比Java更有效率。但这应该先弄清Python和Java之间的区别是什么?Java和Python的区别Java是一种严格的类型语言,这意味着必须显式声明变量名。相比之下,动态类型的Python则不需要声明变量。在编程语言上有许多关于动态和静态类型的争论,但有一点应该注意…...

    2024/4/25 18:59:44
  20. Linux环境编程语言概览

    Linux环境编程语言概览 我从最开始学习编程的时候,就是使用Linux。虽然我只有三年的编程经验,但是我觉得,使用Linux编程,真是一件令人心情愉悦的事情。 C语言 我接触C语言,仅仅是大学时的一门必修课。而C语言的简单、结构化和高效也使它从诞生至今四十余年,经久不衰。 C语…...

    2024/4/24 20:42:24
  21. 详见Python编程中一些重用与缩减的技术

    @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 文章目录返璞归真函数:封装逻辑函数:返回数据模块:简化代码重用模块库可执行文件重用与缩减 返璞归真 许多流行的玩具都以这样一个概念为基础:简单的积木。这些简单的积木可通过多种方式组合在一起构造出全新的…...

    2024/4/25 18:59:41
  22. 零基础Python培训入门 教你认识下这些基础内容

    Python编程语言为什么近些年这么火?从它本身的语言特性来看,Python编程简单而且直接,适合初学编程者,让初学者能够专注于编程逻辑,而不是在不流通的语法细节上感到困惑。零基础Python培训中心认为,刚开始学习Python的人,还能提升编程的自信心。  Python语言无一出尽风…...

    2024/4/25 18:59:40
  23. 25岁了,是学linux运维还是编程好呢?求指点下 ..

    刚培训完 出去找工作 都是要经验 又要懂硬件,windows,linux,网络设备(路由,交换,防火墙等等。。。)我就学了cisco大概NA水平 和linux基础 还有linux服务的配置(apache,keepalived,vsftp,squid等等) 感觉学运维的知识实在太多了吧 学完这个服务搭建和配置 过一…...

    2024/4/25 1:30:00
  24. LTE网络优化转PYTHON编程之路

    2015年吉隆坡工作之余自学PYTHON,也想过参加培训机构的,但时间上不允许,所以每天晚上默默花1到2个小时去学。然后一路走到2019年,断断续续地学习了不少内容。个人新心德如下:关于所选语言:对于网络优化,基本处理的是EXCEL,万能的VLOOKUP开始搞,后来觉得知识不够,开始学…...

    2024/4/25 1:04:47
  25. 你是如何学习 Linux 编程的?

    作者:Kerr Wang 链接:https://www.zhihu.com/question/20730157/answer/82034823 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 首先,要学Linux编程,你得会用Linux,也就是得在命令行环境下生存下来。什么叫生存下来呢?就是我现在给…...

    2024/4/25 18:59:37
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57