网站性能检测评分
注:本网站页面html检测工具扫描网站中存在的基本问题,仅供参考。
python3开发实战
Python Pyqt5跨平台GUI开发系列(四):综合案例实战-计算器 推广视频课程
一、前言:
Pyqt5的学习需要多学多练,最好是实际找点小东西来做,这样效果会更好。
OK,本次我们来实现一个计算节小程序。
二、实现效果图
三、编码实战
计算器组件讲解:
1、创建一个button类来实现按钮。
创建button类的优点:
1、集中控制按钮的样式
2、集中处理信号管理,如接收点击信号的槽函数的统一设置等
其实计算器中用到的控件还是相对简单的,主体我们会用一个垂直的布局,然后按钮使用网格布局进行实现。
Ok,我们先定义一个button类
QSizePolicy类知识点补充:
1、QSizePolicy是一个描述布局水平和垂直方向调整策略的属性。
2、大小策略会影响布局引擎处理部件的方式,部件加入布局以后,会返回一个QSizePolicy,描述了其水平和垂直方向的大小策略。可以通过QWidget.sizePolicy()设置大小策略
模式详解:
1、Fixed:默认大小是唯一的,不可变的,因此部件不能放大也不能缩小。
2、Minimum:默认大小是其最小值。部件允许扩展,但是并不倾向扩展(例如:水平方向上的按钮),不能比默认大小提供的大小更小。
3、Maximum:默认大小是最大值,假如其它部件需要空间并且不会破坏该部件,那么该部件允许被缩小(例如:一个分割线)。
4、Preferred:默认大小是最佳效果,部件允许放大或缩小,但不倾向于扩展比sizeHint()的值大(QWidget的缺省策略)。
5、Expanding:默认大小是合理的大小,但部件允许缩小并且可用。部件可以利用额外的空间,因此它将会得到尽可能多的空间(例如:水平方向上的滑块,一般控件需要撑满剩余空间时可用)。
6、MinimumExpanding:默认大小是最小值。部件允许使用额外空间,因此它将会得到尽可能多的空间。
7、Ignored:默认大小将会被忽略,部件将会得到尽可能多的空间。
Ok,我们先定义一个CalculatorMachine类
自定义计算机类
OK,如此我们变完成了一个计算器界面的编写工作。
具体的计算逻辑我们放到下一篇。
@著作权归作者所有,转载请联系作者 用心写好每一篇文章
小伙伴们有什么好的建议都可以给我留言哦!
如果看到了这里,说明你已经看完了,感谢你的支持
喜欢就点一下哦,谢谢!
Python开发中字典是如何运用的,实战演练,不服不行 行业视频课程
python作为一门高级编程语言,它的定位是优雅、明确和简单。阅读Python编写的代码感觉像在阅读英语一样,这让使用者可以专注于解决问题而不是去搞明白语言本身。Python虽然是基于C语言编写,但是摒弃了C中复杂的指针,使其变得简明易学。并且作为开源软件,Python允许对代码进行阅读,拷贝甚至改进。这些性能成就了Python的高效率,有“人生苦短,我用Python”之说,是一种十分精彩又强大的语言。
一个Python字典表达式谜题
我们来探究一下下面这个晦涩的 Python 字典表达式,以找出在 Python 解释器内部到底发生了什么。
# 一个python谜题:
# 这个表达式计算以后会得到什么结果?
有时候你会碰到一个很有深度的代码示例 , 哪怕仅仅是一行代码,但是如果你有足够的思考,它可以教会你很多关于编程语言的知识。
这样一个代码片段,就像是一个Zen kōan:一个在修行的过程中用来质疑和考验学生进步的问题或陈述。(译者注:
Zen kōan
,大概就是修行的一种方式,详情见wikipedia)
我们将讨论的代码片段就是这样一个例子。乍看之下,它可能像一个简单的字典表达式,但是仔细考虑时,通过 cpython 解释器,它会带你进行一次思维拓展的训练。
我从这个短短的一行代码中得到了一个启发,而且有一次在我参加的一个Python会议上,我还把作为我演讲的内容,并以此开始演讲。
这也激发了我的python邮件列表成员间进行了一些积极的交流。
所以不用多说,就是这个代码片。花点时间思考一下下面的字典表达式,以及它计算后将得到的内容:
在这里,我先等会儿,大家思考一下…
OK, 好了吗?
这是在cpython解释器交互界面中计算上述字典表达式时得到的结果:
我承认,当我第一次看到这个结果时,我很惊讶。但是当你逐步研究其中发生的过程时,这一切都是有道理的。
所以,让我们思考一下为什么我们得到这个 - 我想说的是出乎意料 - 的结果。
这个子字典是从哪里来的?
当python处理我们的字典表达式时,它首先构造一个新的空字典对象; 然后按照字典表达式给出的顺序赋键和值。
因此,当我们把它分解开的时候,我们的字典表达就相当于这个顺序的语句:
>>> xs = dict()
>>> xs[True] = 'yes'
>>> xs[1] = 'no'
>>> xs[1.0] = 'maybe'
奇怪的是,Python认为在这个例子中使用的所有字典键是相等的
>>> True == 1 == 1.0
True
OK,但在这里等一下。我确定你能够接受1.0 == 1,但实际情况是为什么True也会被认为等于1呢?我第一次看到这个字典表达式真的让我难住了。
在python文档中进行一些探索之后,我发现python将bool作为了int类型的一个子类。这是在Python 2和Python 3的片段:
“The Boolean type is a subtype of the integer type, and Boolean values behave like the values 0 and 1, respectively, in almost all contexts, the exception being that when converted to a string, the strings ‘False’ or ‘True’ are returned, respectively.”
“布尔类型是整数类型的一个子类型,在几乎所有的上下文环境中布尔值的行为类似于值0和1,例外的是当转换为字符串时,会分别将字符串”False“或”True“返回。
是的,这意味着你可以在编程时上使用bool值作为Python中的列表或元组的索引:
>>> ['no', 'yes'][True]
'yes'
但为了代码的可读性起见,您不应该类似这样的来使用布尔变量。(也请建议你的同事别这样做)
Anyway,让我们回过来看我们的字典表达式。
就python而言,True,1和1.0都表示相同的字典键。当解释器计算字典表达式时,它会重复覆盖键True的值。这就解释了为什么最终产生的字典只包含一个键。
在我们继续之前,让我们再回顾一下原始字典表达式:
这里为什么最终得到的结果是以True作为键呢?由于重复的赋值,最后不应该是把键也改为1.0了?
经过对cpython解释器源代码的一些模式研究,我知道了,当一个新的值与字典的键关联的时候,python的字典不会更新键对象本身:
>>> ys[True] = 'yes'
当然这个作为性能优化来说是有意义的 —- 如果键被认为是相同的,那么为什么要花时间更新原来的?
在最开始的例子中,你也可以看到最初的True对象一直都没有被替换。因此,字典的字符串表示仍然打印为以True为键(而不是1或1.0)。
就目前我们所知而言,似乎看起来像是,结果中字典的值一直被覆盖,只是因为他们的键比较后相等。然而,事实上,这个结果也不单单是由
__eq__
比较后相等就得出的。
等等,那哈希值呢?
python字典类型是由一个哈希表数据结构存储的。当我第一次看到这个令人惊讶的字典表达式时,我的直觉是这个结果与散列冲突有关。
哈希表中键的存储是根据每个键的哈希值的不同,包含在不同的“buckets”中。哈希值是指根据每个字典的键生成的一个固定长度的数字串,用来标识每个不同的键。
这可以实现快速查找。在哈希表中搜索键对应的哈希数字串会快很多,而不是将完整的键对象与所有其他键进行比较,来检查互异性。
然而,通常计算哈希值的方式并不完美。并且,实际上会出现不同的两个或更多个键会生成相同的哈希值,并且它们最后会出现在相同的哈希表中。
如果两个键具有相同的哈希值,那就称为哈希冲突(hash collision),这是在哈希表插入和查找元素时需要处理的特殊情况。
基于这个结论,哈希值与我们从字典表达中得到的令人意外的结果有很大关系。所以让我们来看看键的哈希值是否也在这里起作用。
我定义了这样一个类来作为我们的测试工具:
class AlwaysEquals:
def __eq__(self, other):
return True
def __hash__(self):
return id(self)
这个类有两个特别之处。
第一,因为它的
__eq__
魔术方法(译者注:双下划线开头双下划线结尾的是一些Python的“魔术”对象)总是返回true,所以这个类的所有实例和其他任何对象都会恒等:
>>> AlwaysEquals() == AlwaysEquals()
True
>>> AlwaysEquals() == 42
True
>>> AlwaysEquals() == 'waaat?'
True
第二,每个Alwaysequals实例也将返回由内置函数id()生成的唯一哈希值值:
>>> objects = [AlwaysEquals(),
AlwaysEquals(),
AlwaysEquals()]
>>> [hash(obj) for obj in objects]
在CPython中,
id()
函数返回的是一个对象在内存中的地址,并且是确定唯一的。
通过这个类,我们现在可以创建看上去与其他任何对象相同的对象,但它们都具有不同的哈希值。我们就可以通过这个来测试字典的键是否是基于它们的相等性比较结果来覆盖。
正如你所看到的,下面的一个例子中的键不会被覆盖,即使它们总是相等的:
{ : 'yes',
: 'no' }
下面,我们可以换个思路,如果返回相同的哈希值是不是就会让键被覆盖呢?
class SameHash:
def __hash__(self):
return 1
这个SameHash类的实例将相互比较一定不相等,但它们会拥有相同的哈希值1:
>>> a = SameHash()
>>> b = SameHash()
>>> a == b
False
>>> hash(a), hash(b)
(1, 1)
一起来看看python的字典在我们试图使用SameHash类的实例作为字典键时的结果:
{ : 'a',
: 'b' }
如本例所示,“键被覆盖”的结果也并不是单独由哈希冲突引起的。
Umm..好吧,可以得到什么结论呢?
Python字典中的键 是否相同(只有相同才会覆盖)取决于两个条件:
1、两者的值是否相等(比较
__eq__
方法)。
2、比较两者的哈希值是否相同(比较
__hash__
方法)。
让我们试着总结一下我们研究的结果:
字典表达式计算结果为
,是因为键true,1和1.0都是相等的,并且它们都有相同的哈希值:
>>> True == 1 == 1.0
True
>>> (hash(True), hash(1), hash(1.0))
(1, 1, 1)
`
也许并不那么令人惊讶,这就是我们为何得到这个结果作为字典的最终结果的原因:
我们在这里涉及了很多方面内容,而这个特殊的python技巧起初可能有点令人难以置信 —- 所以我一开始就把它比作是Zen kōan。
如果很难理解本文中的内容,请尝试在Python交互环境中逐个去检验一下代码示例。你会收获一些关于python深处知识。
开始学注意几点:
1.代码规范,这本身就是一个非常好的习惯,如果开始不养好好的代码规划,以后会很痛苦
2.多动手,少看书,很多人学Python就一味的看书,这不是学数学物理,你看例题可能就会了,学习Python主要是学习编程思想。
3.勤练习,学完新的知识点,一定要记得如何去应用,不然学完就会忘,学我们这行主要都是实际操作。
4.学习要有效率,如果自己都觉得效率非常低,那就停不停,找一下原因,去问问过来人这是为什么
十六本python入门学习书籍推荐,python入门新手必看 新手视频课程
随着人工智能时代的到来,python编程语言一步登天冲到编程排行榜第一名,因此更多朋友想转行学习python编程语言的朋友,可以一起看一下:python入门新手必看的十六本python入门学习书籍
1、python基础教程
司维所著图书:本书包括Python程序设计的方方面面,首先从Python的安装开始,随后介绍了Python的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句。然后循序渐进地介绍了一些相对高级的主题,包括抽象、异常、魔法方法、属性、迭代器。
此后探讨了如何将Python与数据库、网络、C语言等工具结合使用,从而发挥出Python的强大功能,同时介绍了Python程序测试、打包、发布等知识。最后,作者结合前面讲述的内容,按照实际项目开发的步骤向读者介绍了几个具有实际意义的Python项目的开发过程。
2、python学习手册
MarkLutz著计算机图书:《Python学习手册》是2009年机械工业出版社出版的图书,作者是Mark Lutz。该书讲述了Python可移植、功能强大、易于使用,是编写独立应用程序和脚本应用程序的理想选择。
3、python入门经典
william著大学教材:《Python入门经典》是2012年机械工业出版社出版的图书,作者是(美)William F PunchRichard Enbody。
《Python入门经典:以解决计算问题为导向的Python编程实践》是一本系统而科学的Python入门教程,美国密歇根州立大学等多所美国知名高校采用其作为编程语言的入门教材,被奉为经典。它不仅从计算机教学和计算机科学的角度讲解了初学者如何才能更有效地去学习Python,而且特别强调用Python解决生活中的实际问题,精心组织了大量来源于生活中不同领域的与数值计算和数据处理相关的案例。通过《Python入门经典:以解决计算问题为导向的Python编程实践》,读者不仅能系统掌握Python编程相关的知识,而且还能掌握利用Python处理各种与数据相关的问题。《Python入门经典:以解决计算问题为导向的Python编程实践》分为五部分。
4、python 3程序开发指南
计算机与互联网图书:《Python 3程序开发指南》本书首先讲述了构成Python语言的8个关键要素,之后分章节对其进行了详尽的阐述,包括数据类型、控制结构与函数、模块、文件处理、调试、进程与线程、网络、数据库、正则表达式、GUI程序设计等各个方面,并介绍了其他一些相关主题。全书内容以实例讲解为主线,每章后面附有练习题,便于读者更好地理解和掌握所讲述的内容。
《Python 3程序开发指南》本书适合于作为Python语言教科书使用,对Python程序设计人员也有一定的参考价值。
5、python语言入门
《Python语言入门》是中国电力出版社出版的图书,作者是美 Mark Lutz / David Ascber。
书中描述了Python程序的基本构件:类型、操作符、语句、函数、模块、类以及异常,此外还介绍了更多高级主题,包括复杂的实例,最后讲述了如何使用Python定制库来创建大型程序。
6、深入浅出python
《深入浅出Python》是2011年东南大学出版社出版的图书,作者是巴里。本书超出枯燥的语法和用法手册,通过一种独特的方法教你学习Python语言。
你会迅速掌握Python的基础知识,然后转向持久存储、异常处理、Web开发、SQLite.数据加工和Google App Engine。你还将学习如何为Android编写移动应用,这都要归功于Python为你赋予的强大能力。本书会提供充分并且完备的学习体验,帮助你成为一名真正的Python程序员。
通过应用认知科学和学习理论的新研究成果,《Head First Python》可以让你投入一个需要多感官参与的学习体验,这本书采用丰富直观的形式使你的大脑真正开动起来,而不是长篇累牍地说教,让你昏昏欲睡。
7、软件工程
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
8、语言程序设计
《语言程序设计》是2012年1月1日由清华大学出版社出版的图书。
《F#语言程序设计》是一门全新的.NET核心编程语言,它在函数式程序设计语言的基础上融合了面向对象的思想,是开发未来.NET应用特别是计算密集型和分布式系统的首选语言。《F#语言程序设计》由浅入深、由具体到抽象地介绍了F#语言的基础语法、编程范式和典型应用,同时提供了丰富的程序案例,能够帮助读者迅速掌握F#程序设计的基本方法和技巧。
《F#语言程序设计》适合作为高等院校教材,也可供专业开发人员学习参考。
9、python编程实践
《Python编程实践》是2012年机械工业出版社出版的图书,作者是JenniferCampbell,PaulGries,JasonMontojo,GregWilson。本书既是一本注重科学的计算机科学专业教材,也是一本目标明确的python参考书。
10、c++程序设计
《c++程序设计》是清华大学出版社出版的图书,作者是谭浩强。
本书把入门起点降低,读者不需要具备C语言的基础。本书包括14章,分为4篇:基本知识;面向过程的程序设计;基于对象的程序设计;面向对象的程序设计。本书内容全面,例题丰富,概念清晰,循序渐进,易于学习。
《C++程序设计》是依据ANSI C++标准进行介绍的,引导读者从一开始就按标准C++的规定编程。本书配有两本辅导教材,即《C++程序设计题解与上机指导》和《C++编程实践指导》。
11、python科学计算
《python科学计算》是2012年在清华大学出版社出版的图书,本书作者是张若愚。
本书介绍如何用Python开发科学计算的应用程序,除了介绍数值计算之外,还着重介绍如何制作交互式的2D、3D图像,如何设计精巧的程序界面,如何与C语言编写的高速计算程序结合,如何编写声音、图像处理算法等内容。书中涉及的Python扩展库包括NumPy、SciPy、SymPy、matplotlib、Traits、TraitsUI、Chaco、TVTK、Mayavi、VPython、OpenCV等,涉及的应用领域包括数值运算、符号运算、二维图表、三维数据可视化、三维动画演示、图像处理以及界面设计等。
书中以大量实例引导读者逐步深入学习,每个实例程序都有详尽的解释,并都能在本书推荐的运行环境中正常运行。此外,本书附有大量的图表和插图,力求减少长篇的理论介绍和公式推导,以便读者通过实例和数据学习并掌握理论知识。
12、计算机程序设计
《计算机程序设计——数据结构常用算法应用指导》既是一本独立的教材,也可用做“数据结构和算法”课程的上机指导。
全书由三部分十章和三个附录组成。各章分别为:第1章数据结构、算法与程序;第2章汇编语言程序ASM设计;第2章用于数值计算的FORTRAN语言程序设计;第4章用于绘图的C语言程序设计;第5章极富描述能力的PASCAL语言程序设计;第6章人工智能语言PROLOG程序设计;第7章面向对象的JAVA语言程序设计;第8章企业级客户/服务器数据库开发工具PowerBuilder;第9章大型数据库管理系统Oracle和第10章数据引擎SQL server应用特点。三个附录分别是附一科学运算工具Mathcad、附二用MALAB实现对图像的小波分析和附三ASP编程应用指导。
13、python数据分析
《Python数据分析(影印版)》由麦金尼撰写,他是pandas库的主要作者。《Python数据分析(影印版)》也是一本具有实践性的指南,指导那些使用Python进行科学计算的数据密集型应用。它适用于刚刚开始使用Python的分析师,或者是进入科学计算领域的Python程序员。
14、HTML 5与CSS 3权威指南
《HTML 5与CSS 3权威指南》是2011年机械工业出版社出版的图书,作者是陆凌牛。
该书详尽地讲解了html 5和css 3的所有新功能和新特性;技术新颖,所有知识点都紧跟html 5与css 3的最新发展动态(html 5和css 3仍在不断完善之中);实战性强(包含246个示例页面),不仅每个知识点都配有精心设计的小案例(便于动手实践),而且还有两个综合性的案例(体现用 html 5与css 3开发web应用的思维和方法)。本书不仅能满足你全面而系统地学习理论知识的需求,还能满足你需要充分实践的需求。
如果你是一位有前瞻性的web前端工作者,那么你一定会从本书中受益,因为它就是专门为你打造的。
15、集体智慧编程
《集体智慧编程》由美国计算机专家西格兰编著,以机器学习与计算统计为主题背景,专门讲述如何挖掘和分析Web上的数据和资源,如何分析用户体验、市场营销、个人品味等诸多信息,并得出有用的结论,通过复杂的算法来从Web网站获取、收集并分析用户的数据和反馈信息,以便创造新的用户价值和商业价值。
16、与孩子一起学编程
《与孩子一起学编程》是2010年人民邮电出版社出版的图书,作者是Warren Sande, Carter Sande。
该书是一本写给孩子看的编程书。作者以Python语言为例,详尽细致地介绍了从Python如何安装、字符串和操作符等程序设计的基本概念,到条件语句、函数、模块等进阶内容,直至用Python实现游戏编程。书中的语言生动活泼,叙述简单明了。本书适合中小学生以及一切编程初学者。
以上就是容大教育为大家分享的:python入门书籍推荐十六本python入门学习书籍,如果你对python比较感兴趣,可以关注容大教育IT培训机构,领取python学习资料。