更新了第19课内容

pull/7/head
jackfrued 2020-04-26 16:41:59 +08:00
parent 2abf1380a5
commit df98799e8b
14 changed files with 92 additions and 3 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

View File

@ -205,7 +205,7 @@ teacher.teach('Python程序设计')
stu1.study('Python程序设计') stu1.study('Python程序设计')
``` ```
继承的语法是在定义类的时候在类名后的圆括号中指定当前类的父类。Python语言允许多重继承也就是说一个类可以有一个或多个父类关于多重继承的问题我们在后面会有更为详细的讨论。在子类的初始化方法中我们可以通过`super().__init__()`来调用父类初始化方法,`super`函数是Python内置函数中专门为获取当前对象的父类对象而设计的。从上面的代码可以看出子类除了可以通过继承得到父类提供的属性和方法外还可以定义自己特有的属性和方法所以子类比父类拥有的更多的能力。在实际开发中我们经常会用子类对象去替换掉一个父类对象这是面向对象编程中一个常见的行为也叫做“里氏替换原则”Liskov Substitution Principle 继承的语法是在定义类的时候,在类名后的圆括号中指定当前类的父类。如果定义一个类的时候没有指定它的父类是谁,那么默认的父类是`object`类。`object`类是Python中的顶级类这也就意味着所有的类都是它的子类要么直接继承它要么间接继承它。Python语言允许多重继承也就是说一个类可以有一个或多个父类关于多重继承的问题我们在后面会有更为详细的讨论。在子类的初始化方法中我们可以通过`super().__init__()`来调用父类初始化方法,`super`函数是Python内置函数中专门为获取当前对象的父类对象而设计的。从上面的代码可以看出子类除了可以通过继承得到父类提供的属性和方法外还可以定义自己特有的属性和方法所以子类比父类拥有的更多的能力。在实际开发中我们经常会用子类对象去替换掉一个父类对象这是面向对象编程中一个常见的行为也叫做“里氏替换原则”Liskov Substitution Principle
子类继承父类的方法后,还可以对方法进行重写(重新实现该方法),不同的子类可以对父类的同一个方法给出不同的实现版本,这样的方法在程序运行时就会表现出多态行为(调用相同的方法,做了不同的事情)。多态是面向对象编程中最精髓的部分,当然也是对初学者来说最难以理解和灵活运用的部分,我们会在下一节课中用专门的例子来讲解多态这个知识点。 子类继承父类的方法后,还可以对方法进行重写(重新实现该方法),不同的子类可以对父类的同一个方法给出不同的实现版本,这样的方法在程序运行时就会表现出多态行为(调用相同的方法,做了不同的事情)。多态是面向对象编程中最精髓的部分,当然也是对初学者来说最难以理解和灵活运用的部分,我们会在下一节课中用专门的例子来讲解多态这个知识点。

View File

@ -59,7 +59,7 @@ print(card1, card2) # ♠5 ♥K
import random import random
class Poker(object): class Poker:
"""扑克""" """扑克"""
def __init__(self): def __init__(self):
@ -98,7 +98,7 @@ print(poker.cards)
定义玩家类。 定义玩家类。
```Python ```Python
class Player(object): class Player:
"""玩家""" """玩家"""
def __init__(self, name): def __init__(self, name):

View File

@ -0,0 +1,89 @@
## 第019课使用PyCharm开发Python应用程序
坚持学习完前18课的小伙伴应该已经感受到了随着我们对Python语言的认知在逐步加深我们写的代码也越来越复杂了。“工欲善其事必先利其器”如果希望能够更快更好的写出代码选择一个称手的开发工具是很有必要的。虽然我们之前推荐大家使用的VS Code已经很好了但是对于复杂应用程序或者商业项目开发来说我们还有更好的选择它就是JetBrains公司出品的PyCharm。
### PyCharm的下载和安装
可以在[JetBrains公司的官方网站](<https://www.jetbrains.com/>)找到PyCharm的[下载链接](https://www.jetbrains.com/pycharm/download/)有两个可供下载的版本一个是社区版PyCharm CE一个是专业版PyCharm Professional。社区版在Apache许可证下发布可以免费使用专业版在专用许可证下发布需要购买授权后才能使用但新用户可以试用30天。很显然专业版提供了更为强大的功能和对企业级开发的各种支持但是对于初学者来说社区版已经足够强大和好用了。安装PyCharm只需要直接运行下载的安装程序然后持续的点击“下一步”就可以啦。下面是我在Windows系统下安装PyCharm的截图。
![](res/pycharm-installation.png)
### 首次使用的设置
第一次使用PyCharm时会有一个导入设置的向导如果之前没有使用PyCharm或者没有保存过设置的就直接选择“Do not import settings”进入下一步即可下面是我在macOS系统下第一个使用PyCharm时的截图。
![](./res/pycharm-import-settings.png)
专业版的PyCharm是需要激活的**强烈建议大家在条件允许的情况下支付费用来支持优秀的产品**如果不用做商业用途或者不需要使用PyCharm的高级功能我们可以暂时选择试用30天或者使用社区版的PyCharm。如果你是一名学生希望购买PyCharm来使用可以看看[教育优惠官方申请指南](https://sales.jetbrains.com/hc/zh-cn/articles/207154369)。
![](./res/pycharm-activation.png)
接下来是选择UI主题这个可以根据个人喜好进行选择。
![](./res/pycharm-ui-themes.png)
再接下来是创建可以在终端命令行中使用PyCharm项目的启动脚本当然也可以直接跳过这一步。
![](./res/pycharm-create-launcher.png)
然后可以选择需要安装哪些插件,我们可以暂时什么都不安装等需要的时候再来决定。
![](./res/pycharm-install-plugins.png)
最后点击上图右下角的“Start using PyCharm”就可以开始使用PyCharm了。
### 用PyCharm创建项目
启动PyCharm之后会来到一个欢迎页在欢迎页上我们可以选择“Create New Project”创建新项目、“Open”打开已有项目和“Get from Version Control”从版本控制系统中检出项目
![](./res/pycharm-welcome.png)
如果选择了“Create New Project”来创建新项目就会打一个创建项目的向导页。下图所示是PyCharm专业版创建新项目的向导页可以看出专业版支持的项目类型非常的多而社区版只能创建纯Python项目Pure Python没有这一系列的选项。
![](./res/pycharm-project-wizard.png)
接下来我们要为项目创建专属的虚拟环境每个Python项目最好都在自己专属的虚拟环境中运行因为每个项目对Python解释器和三方库的需求并不相同虚拟环境对不同的项目进行了隔离。在上图所示的界面在我们可以选择“New environment using Virtualenv”新建虚拟环境这里的“Virtualenv”是PyCharm默认选择的创建虚拟环境的工具我们就保留这个默认的选项就可以了。
项目创建完成后就可以开始新建各种文件来书写Python代码了如下图所示。左侧是项目浏览器可以看到刚才创建的项目文件夹以及虚拟环境文件夹。我们可以在项目上点击鼠标右键选择“New”在选择“Python File”来创建Python代码文件下图中我们创建了两个Python文件分别是`poker_game.py`和`salary_system.py`。当然如果愿意也可以使用复制粘贴的方式把其他地方的Python代码文件复制到项目文件夹下。
![](./res/pycharm-workspace.png)
在工作窗口点击鼠标右键可以在上下文菜单中找到“Run”选项例如要运行`salary_system.py`文件右键菜单会显示“Run 'salary_system'”选项点击这个选项我们就可以运行Python代码啦运行结果在屏幕下方的窗口可以看到如下图所示。
![](res/pycharm-run-result.png)
### 常用操作和快捷键
PyCharm为写Python代码提供了自动补全和高亮语法功能这也是PyCharm作为集成开发环境IDE的基本功能。PyCharm的“File”菜单有一个“Settings”菜单项macOS上是在“PyCharm”菜单的“Preferences…”菜单项这个菜单项会打开设置窗口可以在此处对PyCharm进行设置如下图所示。
![](res/pycharm-settings.png)
PyCharm的菜单项中有一个非常有用的“Code”菜单菜单中提供了自动生成代码、自动补全代码、格式化代码、移动代码等选项这些功能对开发者来说是非常有用的大家可以尝试使用这些菜单项或者记住它们对应的快捷键例如在macOS上格式化代码这个菜单项对应的快捷键是`alt+command+L`。除此之外“Refactor”菜单也非常有用它提供了一些重构代码的选项。所谓重构是在不改变代码执行结果的前提下调整代码的结构这也是资深程序员的一项重要技能。还有一个值得一提的菜单是“VCS”VCS是“Version Control System”版本控制系统的缩写这个菜单提供了对代码版本管理的支持。版本控制的知识会在其他的课程中为大家讲解。
下表列出了一些PyCharm中特别常用的快捷键当然如果愿意也可以通过设置窗口中“Keymap”菜单项自定义快捷键PyCharm本身也针对不同的操作系统和使用习惯对快捷键进行了分组。
| 快捷键 | 作用 |
| --------------------------------------------- | -------------------------------------- |
| `command + j` | 显示可用的代码模板 |
| `command + b` | 查看函数、类、方法的定义 |
| `ctrl + space` | 万能代码提示快捷键,一下不行按两下 |
| `command + alt + l` | 格式化代码 |
| `alt + enter` | 万能代码修复快捷键 |
| `ctrl + /` | 注释/反注释代码 |
| `shift + shift` | 万能搜索快捷键 |
| `command + d` / `command + y` | 复制/删除一行代码 |
| `command + shift + -` / `command + shift + +` | 折叠/展开所有代码 |
| `F2` | 快速定位到错误代码 |
| `command+ alt + F7` | 查看哪些地方用到了指定的函数、类、方法 |
> **说明**Windows系统下如果使用PyCharm的默认设置可以将上面的`command`键换成`ctrl`键即可,唯一的例外是`ctrl + space`那个快捷键因为它跟Windows系统切换输入法的快捷键是冲突的所以在Windows系统下没有与之对应的快捷键。
### 简单的总结
PyCharm很强大尤其是专业版的PyCharm建议大家一边使用一边总结这样才会用到越来越顺手工作效率也会随之而提升。
> **温馨提示**:学习中如果遇到困难,可以加**QQ交流群**询问。
>
> 付费群:**789050736**,群一直保留,供大家学习交流讨论问题。
>
> 免费群:**151669801**,仅供入门新手提问,定期清理群成员。