Python3进阶篇(二)——深析函数装饰器
Python3进阶篇(二)——深析函数装饰器前言:阅读这篇文章我能学到什么?  装饰器可以算Python3中一个较难理解的概念了,这篇文章由浅入深带你理解函数装饰器,请阅读它。
1 装饰器基本概念  装饰器是能够修改已定义函数功能的函数,也即装饰器本身就是具有这种特殊功能的 函数 。修改是有限制的修改,它只能在你定义的函数执行前或执行后执行其他代码,当然也能给你的函数传递参数。不能直接修改你定义的函数内部的代码。  举个通俗的例子。比如你定义了函数A,那么函数A被装饰器装饰之后,此时你调用A,它可能先去执行一些动作(代码)然后执行函数A,完了又去执行另外一些动作(代码)。也即装饰器帮你的函数附加了一些动作(代码)执行,它改变了你原来定义的函数功能。  如果你看过我的上一篇进阶篇关于函数的讲解(其中降到了函数嵌套定义、函数作为参数、函数返回函数等问题),那么后续的内容将会更容易理解。
2 创建装饰器2.1 创建装饰器并且不使用@符号&em ...
PySide2基础篇(二)——QLabel运用
PySide2基础篇(二)——QLabel运用前言:阅读这篇文章我能学到什么?  我们知道做窗口应用程序最基础的是掌握控件的运用。QLabel就是PySide2中一个基础的控件,它可以用于可以显示文本、图像、视频。下面让我们开始学习它。
1 使用QLabel能做什么?  Qt for Python模块中最基本的有三个模块:
Qt Core:提供核心的非GUI模块,列如信号和插槽,项目模型的基类,序列化等。
Qt GUI:通过GUI功能扩展QtCore:事件,窗口和屏幕,基于OpenGL和基于栅格的2D绘画以及图像。
Widgets 为您的应用程序提供随时可用的小部件,包括UI的图形元素。
  QLabel属于控件,因此它继承于模块Widgets。
1234567891011graph LRA[QtCore.QObject]B[QtGui.QPaintDevice]C[QtWidgets.QWidget]D[QtWidgets.QFrame]E[QtWidgets.QLab ...
Python3进阶篇(一)——函数的深入理解
Python3进阶篇(一)——函数的深入理解前言:阅读这篇文章我能学到什么?  说到函数的你可能会想到函数的参数、返回值、函数地址等,但是Python3的函数用法非常灵活,比如允许函数嵌套定义,允许函数作为参数或变量传递,允许函数返回函数。这篇文章将为你讲解这些“灵活“的用法
1 再看函数  在基础篇我们已经详细的讲解了函数的定义和调用,这里我们更深入的研究下。下面这个例子帮助你回忆函数的定义和调用。代码示例:
12345def Function(): print("Call Function") return 0print(Function())
运行结果:
12Call Function0
1.1 函数调用的两种形式  函数调用按是否带()可以分为两种方式,带括号时将会执行函数,括号内的实参会传递给形参,函数的返回值会给调用处。如果不带括号,则调用出得到的将会是函数的地址,函数并不会执行。代码示例:
12345678def Function ...
PySide2基础篇(一)——安装并运行一个窗口程序
PySide2基础篇(一)——安装并运行一个窗口程序前言:阅读这篇文章我能学到什么?  这篇文章教会你安装PySide2并运行第一个自己的窗口程序。
1 PyQt和PySide2区别1.1 遵照的开源协议不同  PyQt遵照的是GPLv3协议,这个协议要求如何使用了遵照此协议的开源代码(不管是原封不动的当做库来使用,还是自己有修改的二次开发后使用),也必须是开源的,不允许闭源商用(注意不是不允许商用,是不允许闭源商用)。  PySide遵照的是LGPL协议,此协议允许你将遵照此协议的开源库(不能修改只能当做库来使用,如果二次开发修改了也必须开源)用于闭源商用。  需要注意的是较多的开源软件声明了遵照GPL协议,是不允许用于闭源商用的。总之,开源是有限制的开源。
1.2 为什么选择PySide2  PyQt是Riverbank Computing公司维护的,已经维护了多年,相对稳定,开发社区较大,相关资料或教程 ...
软件版本信息定义规则
软件版本信息定义规则前言:   如果你正为软件版本迭代得越来越多烦恼,或者想寻找更规范的版本定义,那么请阅读这篇文章,也许你会有启发。
1 软件版本信息码   软件版本信息码组成 :协议名/产品名(Name)(A).系列号(Series)(B).主版本号(Major)(C).次版本号(Minor)(D).修订版本号(Patch)(E).日期版本号(Date)(F)(阶段版本号(Phase)(G))。  例:MPP2.0.A.1.0.0.200510(R)
1.1 协议名/产品名(A)   作用 :用于区分不同的大类产品。   规则 :由协议类型+协议版本号。如MPP2.0。优先使用协议名,无具体协议的使用大类产品名。   可能值 :
None: 空,表示未知,不确定。
MPP: 微软协议笔。
USI:协议笔。
HPP:华为协议笔。
APP:苹果协议笔 ...
Python3基础篇(十)——异常处理
Python3基础篇(十)——异常处理前言:阅读这篇文章我能学到什么?  这篇文章将为你介绍Python3中的异常捕获和处理,如果你看过《代码大全2》会明白为程序设计上异常的处理是多么重要的一件事。如果你希望对它有一些基础的了解,那么请读这篇文章。
1 程序异常处理  程序异常就是程序的运行结果超出了设计者的预料,程序的运行是“非正常”的执行流程。程序的异常处理其实应该分两个阶段,第一个阶段是异常的检测(识别出异常状态,并区分出是何种异常),第二个阶段是针对特定异常情况应该做何种处理(处理可以是忽略、修正、甚至重启)。变成语言支持异常处理已经不是什么“新鲜”的事了,但还是要提一下早期程序处理异常是用 error code 的方式,即函数或代码段返回故障码,通过故障码来区分异常种类和决定如何处理。这种方式已经日渐淘汰,现在很多编程语言已经对异常处理有了较好的支持,形式通常是 try-catch ,在Python3中是 try-except形式。断言是一种常用的异常处理,它一般用于调试阶段(发行版一般将其关闭)。
1. ...
Python3基础篇(九)——命名空间和作用域
Python3基础篇(九)——命名空间和作用域前言阅读这篇文章我能学到什么?  这篇文章将使你弄明白Python3的命名空间和作用域到底意味着什么。
1 命名空间  命名空间的主要作用是为了防止命名冲突。各个命名空间是独立的,不同命名空间可以具有相同的命名,但同一个命名空间内不得重名(即使变量和函数之间也不能重名)。
1.1 命名空间分类  Python3有三类命名空间:
内置命名空间:Python3的内置名称(关键字、内置变量名、内置函数名)。
全局命名空间:在函数外及类外定义。
局部命名空间:在函数或类中定义的。
1.2 命名空间的查找顺序  当访问一个变量或函数时,python根据名称在命名空间中进行查找,但是几种命名空间查找顺序不同。查找顺序优先级为: 局部命名空间>全局命名空间>内置命名空间 。  这也就能理解当函数内局部变量和外部代码示例:
12345678910111213P ...
Python3基础篇(八)——面向对象
Python3基础篇(八)——面向对象前言阅读这篇文章我能学到什么?  这篇文章将为你详细介绍Python3中的面向对象程序设计,你将学会如何定义一个类和使用一个对象。
  Python3是一门面向对象的语言,掌握好面向对象的程序设计是用好Python3的前提。如果你理解c++的“万物皆对象”概念那学习起来就轻松很多了。  面向对象是一个抽象的程序设计概念,是软件开发的方法。起初它来自于程序设计,而如今面向对象概念已经扩展到数据库系统、交互结构、应用结构、应用平台、分布式系统、网络管理结构、CAD计数、人工智能等领域。这种思想就像种子一样已经到处传播并发芽生长。  对象编程将任何事物(可以是客观存在或抽象的,客观的比如桌子板凳,抽象的比如时间和爱情)都看做具有 属性 和 方法 的对象,又从同一类事物中抽象出他们的 共性 (比如人类共有的属性是年龄和体重,共有的方法是学习和吃饭)形成类。这就是 面向对象 的概念,也是对象和类的关系。
——作者:这 ...
Python3基础篇(七)——函数
Python3基础篇(七)——函数前言:阅读这篇文章我能学到什么?  这篇文章将为你详细介绍Python3函数的用法,将会非常详细。
  程序的函数概念就类似数学上的函数概念。按照一定语法结构能完成特定的功能的代码段,函数可以具有输入和输出(严格来说函数必须具有输出,没有任何输出的函数是没有意义的,只是语法结构上满足函数定义)。
1 定义函数  Python3以def关键字表示定义函数,随后自定义一个函数名,需要注意函数名在作用域内不能同名(后面补一章讲下Python3的作用域吧,这里不懂先不必纠结)。函数名之后()内为参数列表,参数列表可以为空,它表示传入函数的参数。最后不要忘了:符号。另起一行的是可选的“函数说明字符串”,用于对函数简要描述,可省略不写。函数体必须比函数名至少缩进一个空格或table。与c/c++类似,函数可以搭配return关键词结束函数并返回一个值给调用方,当函数不需要返回值时可以返回None,也可以省略None,甚至可以省略return。语法结 ...
Python3基础篇(六)——迭代器与生成器
Python3基础篇(六)——迭代器与生成器,生成式前言:阅读这篇文章我能学到什么?  这篇文章将为你介绍Python3的迭代器和生成器以及列表生成式的详细用法。
1 迭代器  在Python3中可以为序列创建迭代器。迭代器是一个用于记录在序列中当前遍历位置的结构,持续访问它将能依次访问序列的所有元素。它从序列的第一个元素开始访问,直到访问完所有元素。迭代器只能前进不能后退,也即访问过的元素不能再次访问。常用的方法有iter()用于创建迭代器,next()函数返回当前元素并指向下一个元素。代码示例:
123456789101112131415161718192021222324252627282930313233Tuple = (1, 2, 3)Iterator1 = iter(Tuple)print(next(Iterator1))print(next(Iterator1))print(next(Iterator1))print("-------------------------")List ...