Day 06 Python 的特点

经过了前面几天的基本教学,相信大家都对 Python 有了基本的认识,也应该有点累了,所以今天来讲一下轻松一点但是对之後更进阶的部分会更容易上手的东西。

优缺点

这部分主要都是针对 Python 本身技术上的特性去评价的优缺点(就是只跟你讲面包好不好吃、成分是啥而已,多少人喜欢吃、价格多少不重要)。

优点

Python 相对於其他程序语言的有点有:

  1. 语法简单
  2. 应用广泛
  3. 绝对免费

缺点

  1. 执行速度慢
  2. 语法混乱

没办法,不能又要马儿好,又要马儿不吃草,不过 Python 相比其他程序语言真的广泛很多。

缺点1 的部分可以透过金钱(买更好的处理器)或时间(等更好的处理器)来稍微抵销掉。加上 Python 之父已经要改善 Python 执行速度的问题,所以这个缺点会渐渐改善。

缺点2 的部分已经不太算是缺点了,因为这个主要是从 Python 2 转到 Python 3 时,3 的语法跟 2 不太一样,导致无法向下兼容。不过不太算是缺点的原因是 Python 2 在 2020/1/1 开始被弃用了,加上 2019 开始 3 的占比已经超过 90% 了,而且Python 4 应该不会出现,所以这个缺点已经快消失了。

轻松的东西

在写 Code 的时候,除了 Coding Style 跟命名规则要注意之外,还有一些大方向的原则也要尽量遵守(不遵守也不会怎样,只是在维护的时候就会想打爆之前的自己就对了),这些大方向的原则主要目的都是提高程序的可读性。

在维基百科 Python 页面中的 #特徵与设计哲学 写到

Python的设计哲学是「优雅」、「明确」、「简单」。它的重要准则被称为「Python之禅」。

在CMD中输入

$ python

进入 Python 解释器後再输入

$ import this

就可以看到完整列表

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're > Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

对目前阶段的我们来说,在这之中更重要的是前面 7 点

  • 优美优於丑陋,
  • 明了优於隐晦,
  • 简单优於复杂,
  • 复杂优於凌乱,
  • 扁平优於巢状,
  • 稀疏优於稠密,
  • 可读性很重要!

(巢状是什麽?就是 Day 03 的波动拳)

简单又有点重要的东西

程序语言型别

动态型别? 静态型别?

什麽是静态型别,简单理解就是必须明确地宣告变数的型态,例如 C 语言:

int num = 10
char c = 'apple'

而动态型别则是反之,例如 Python:

num = 10
c = 'apple'

强型别? 弱型别?

而什麽是强型别呢,就是不允许隐式的型别转换,例如 Python 这样写一定会出现错误:

# Input
age = 20
print('My age: ' + age)
# Output
TypeError: can only concatenate str (not "int") to str

反之则是弱型别,例如 JavaScript:

// Input
Math.floor("3.14")
// Output
3

好啦,讲这些程序语言型别主要是想要提醒一下,在对资料操作的时候,要注意一下资料型态,因为 Python 不用宣告变数型态,但是又不允许隐式的型别转换,所以偶尔会因为资料型态不符喷出 Bug。

有点困难又有点重要的东西

在 Python 中,Function 的地位和 C++、Java 等不同,是属於 "First-class Citizen" (一等公民),故称作 "First-class function" (一级函数)。

什麽是 "First-class Citizen" 呢?跟二等公民又差在哪呢?

最明显的差别是 Python 中的 Function 可以当成参数传递并执行(对啦,我就是只想讲这句而已,其他暂时不太重要)。

参考资料

Python 2将被弃用,但PyPy会继续支援Python 2.7

Python 版本占比

Python之父近期重大宣布,CPython执行速度4年内将翻5倍

Python之父:Python 4.0可能不会问世

First-class citizen

SOLID原则

DRY原则

那麽就大概这样,这篇是让你在要进入更深的部分前先了解一些东西而已。

大家掰~掰~


<<:  Day 7 有关排程器的感叹

>>:  RISC V::中断与异常处理 -- 异常篇

灵异现象 - 此工作站和主要网域间的信任关系失败

灵异现象 - 此工作站和主要网域间的信任关系失败 图片来源: MIS的背影 故事开始 小新自从上次顺...

[Day30] 前面就是终点,该写什麽呢?

要不要自己加赛到 42 天?还是乖乖完赛就好? 记得以前还是跑者的时候,练跑距离大概都维持在 8 公...

【2022】 一键下载在线影片的六个办法(必收藏系列)

范先生推荐好物时间 本期要跟大夥介绍的是如何一键下载在线影片,适合多种网站,包括Xvideo,Por...

下载 Twitter 影片【亲测有效】

Twitter 上最受欢迎的功能是趋势功能。 通过这一功能,人们可以轻松了解世界各地最重要的新闻信息...

从零开始的8-bit迷宫探险【Level 18】为什麽他们开始乱跑?捉摸不定的怪物移动模式

「诶,好累喔。」 「天气这麽好,要不要去玩水啊?」喜欢玩耍的 Snow 提议着。 忘记要赶走山姆的...