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...
软件版本信息定义规则
软件版本信息定义规则前言: 如果你正为软件版本迭代得越来越多烦恼,或者想寻找更规范的版本定义,那么请阅读这篇文章,也许你会有启发。 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:苹果协议笔。 UNI:万能笔。 后续视情况新增。 1.2...
Python3基础篇(十)——异常处理
Python3基础篇(十)——异常处理前言:阅读这篇文章我能学到什么? 这篇文章将为你介绍Python3中的异常捕获和处理,如果你看过《代码大全2》会明白为程序设计上异常的处理是多么重要的一件事。如果你希望对它有一些基础的了解,那么请读这篇文章。 1 程序异常处理 程序异常就是程序的运行结果超出了设计者的预料,程序的运行是“非正常”的执行流程。程序的异常处理其实应该分两个阶段,第一个阶段是异常的检测(识别出异常状态,并区分出是何种异常),第二个阶段是针对特定异常情况应该做何种处理(处理可以是忽略、修正、甚至重启)。变成语言支持异常处理已经不是什么“新鲜”的事了,但还是要提一下早期程序处理异常是用 error code 的方式,即函数或代码段返回故障码,通过故障码来区分异常种类和决定如何处理。这种方式已经日渐淘汰,现在很多编程语言已经对异常处理有了较好的支持,形式通常是 try-catch ,在Python3中是 try-except形式。断言是一种常用的异常处理,它一般用于调试阶段(发行版一般将其关闭)。 1.1...
Python3基础篇(九)——命名空间和作用域
Python3基础篇(九)——命名空间和作用域前言阅读这篇文章我能学到什么? 这篇文章将使你弄明白Python3的命名空间和作用域到底意味着什么。 1 命名空间 命名空间的主要作用是为了防止命名冲突。各个命名空间是独立的,不同命名空间可以具有相同的命名,但同一个命名空间内不得重名(即使变量和函数之间也不能重名)。 1.1 命名空间分类 Python3有三类命名空间: 内置命名空间:Python3的内置名称(关键字、内置变量名、内置函数名)。 全局命名空间:在函数外及类外定义。 局部命名空间:在函数或类中定义的。 1.2 命名空间的查找顺序 当访问一个变量或函数时,python根据名称在命名空间中进行查找,但是几种命名空间查找顺序不同。查找顺序优先级为: 局部命名空间>全局命名空间>内置命名空间 。 这也就能理解当函数内局部变量和外部代码示例: 12345678910111213Parameter1 = 1Parameter2 = 2def...
Python3基础篇(八)——面向对象
Python3基础篇(八)——面向对象前言阅读这篇文章我能学到什么? 这篇文章将为你详细介绍Python3中的面向对象程序设计,你将学会如何定义一个类和使用一个对象。 Python3是一门面向对象的语言,掌握好面向对象的程序设计是用好Python3的前提。如果你理解c++的“万物皆对象”概念那学习起来就轻松很多了。 面向对象是一个抽象的程序设计概念,是软件开发的方法。起初它来自于程序设计,而如今面向对象概念已经扩展到数据库系统、交互结构、应用结构、应用平台、分布式系统、网络管理结构、CAD计数、人工智能等领域。这种思想就像种子一样已经到处传播并发芽生长。 对象编程将任何事物(可以是客观存在或抽象的,客观的比如桌子板凳,抽象的比如时间和爱情)都看做具有 属性 和 方法 的对象,又从同一类事物中抽象出他们的 共性 (比如人类共有的属性是年龄和体重,共有的方法是学习和吃饭)形成类。这就是 面向对象...
Python3基础篇(七)——函数
Python3基础篇(七)——函数前言:阅读这篇文章我能学到什么? 这篇文章将为你详细介绍Python3函数的用法,将会非常详细。 程序的函数概念就类似数学上的函数概念。按照一定语法结构能完成特定的功能的代码段,函数可以具有输入和输出(严格来说函数必须具有输出,没有任何输出的函数是没有意义的,只是语法结构上满足函数定义)。 1 定义函数 Python3以def关键字表示定义函数,随后自定义一个函数名,需要注意函数名在作用域内不能同名(后面补一章讲下Python3的作用域吧,这里不懂先不必纠结)。函数名之后()内为参数列表,参数列表可以为空,它表示传入函数的参数。最后不要忘了:符号。另起一行的是可选的“函数说明字符串”,用于对函数简要描述,可省略不写。函数体必须比函数名至少缩进一个空格或table。与c/c++类似,函数可以搭配return关键词结束函数并返回一个值给调用方,当函数不需要返回值时可以返回None,也可以省略None,甚至可以省略return。语法结构: 123def...
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 = [1, 2,...
Python3基础篇(五)——循环控制
Python3基础篇(五)——循环控制前言:阅读这篇文章我能学到什么? 这篇文章将为你介绍Python3的循环控制用法。在Python3里循环控制有for和while两种。 1 while循环控制1.1 while结构语法结构: 12while <condition>: <codeblock> 循环开始前先判断是否满足<condition>条件,即条件表达式结果为布尔真,如果满足则执行<codeblock>,执行完后继续再判断是否满足<condition>,继续满足就继续执行<codeblock>直到条件不满足时循环结束,程序往后运行。<codeblock>代码块必须必while至少有一个空格或Table的缩进。流程图: 12345678910flowchatStart=>start: 开始End=>end: 结束Condition=>condition:...
Python3基础篇(四)——条件控制
Python3基础篇(四)——条件控制前言:阅读这篇文章我能学到什么? 这篇文章将带你学习Python3中的条件控制结构。if条件结构似乎已成各类程序语言的标配,如果你有其他语言的基础学习起来将会非常简单。 1 if结构语法结构: 12if <Expression>: <CodedBlock> <Expression>表示表达式,其结果转化成布尔型决定if分支的执行。<CodeBlock>是if内的代码块,只有当if的条件表达式<Expression>为真时代码块才会被执行。python是以缩进来表示代码块的,<CodeBlock>代码块必须比if至少有一个空格的缩进。另外,<CodeBlock>代码块可以由多个语句构成。不要忘记:号。流程图: 12345678910flowchatStart=>start: 开始End=>end: 结束Operation=>operation:...










