前端如何学习 Python | 七日打卡

842 阅读5分钟

准备开发环境

python 环境

mac 和 windows,笔者都推荐使用 Anaconda来安装,类似 node、npm的多版本管理 nvm,使用它来安装不同的python环境,切换也方便。 当然,mac用户也可以选择使用 homebrew 来安装, windows用户用 chocolatey来安装应该也可以。

编辑器选择

推荐使用 Pycharm。

起步

python2 和 python3

当前,有两个不同的Python版本:Python2和较新的Python3。需要注意的是,虽然大多数语言升级都会向下兼容,但Python不是。如果你的系统安装的是Python3,那么有些使用Python2编写的代码可能无法正确地运行。

为什么Python3 和 Python2会有这么大的区别?

Brett Cannon —— Python 的核心开发者 —— 在一次问答活动中终于做了一个合理的解释。在此之前他一直神奇的认为大家都清楚为什么 Python 3 会出现。他说:

回想起来我真是太傻了,竟然认为大部分人 —— 不管是刚接触 Python 或者已经有一段时间 —— 要么应该知道,要么有好奇心去获取一个解释或答案。但是并没有。所以我会解释一下为什么 Python 3 会存在。为什么要破坏兼容性,改变 unicode/str/bytes,使得老代码移植到 Python 3 非常困难。

最根本的原因是,在 Python 2 中文本和二进制数据是一个烂摊子。比如 'abcd' 这个表达式,在 Python 3 中,语义非常明确,就是包含四个字母的字符串,但是在 Python 2 里,可以是四个字母的字符串,也可以代表 97、98、99、100 的数组。你可以使用 print ord('a') 获取到这个字母的 ASCII。总之,在 Python 2 中,对于 str 代表的含义有两种,这改变了语言的唯一性。而在 Python 3 中答案是唯一的。

「Python之禅」里讲过,「找到一种或唯一的一种解决方案去解决问题」。文字既能代表文本数据又能代表二进制数据这很麻烦。一旦对象脱离我们的控制,就会让人变得恐慌。有人说我们可以用 Unicode,但实际中人们并不会那么做,有事还会引发不必要的麻烦。

比如在 Python 2 中,中文显示是这样的:

>>> geektime = “极客时间”
>>> geektime
'\xe6\x9e\x81\xe5\xae\xa2\xe6\x97\xb6\xe9\x9\xb4'

Python 3 就简明很多:

>>> geektime = “极客时间”
>>> geektime
'极客时间'

简化语言,移除 str 的二义性能够减少代码的出错率。避免 bug 是一件很重要的事情,但却经常被人遗忘。Python 之禅中的另一句话「清晰胜于晦涩」也表达了这个意思,歧义和隐性知识使得代码不容易沟通,并容易形成 bug。

变量和简单数据类型

变量

变量声明

python声明变量不像js,需要使用var、let、const等关键词,直接写变量名即可。

message = 'hello world';
print(message);

print 相当于我们常用的 console.logprint在 Python2 和 Python3 中是的使用方法不同。

print 在 Python3.x 是一个函数,但在 Python2.x 版本不是一个函数,只是一个关键字。

# python2
print message;
# python3
print(message);

命名规则

python 变量的命名和js差不多,不允许使用关键字和保留字,不允许数字开头。格式上有所区别,js 习惯使用 camelCase 小驼峰命名法,python 推荐使用 snake_case 蛇形命名法,好像 php也是采用这种方式。

局部变量和全局变量

python中声明变量一般都是局部变量,如果要在函数在使用或定义全局变量时,都需要使用 global 关键字。

num = 3;
def plusNum():
  global num; // 如果不加这行,会报语法错误
  num = num + 1;

字符串

字符串就是一系列字符。在 Python 中,用引号括起来的都是字符串,其中引号可以是单引号,也可以是双引号。

使用方法修改字符串的大小写

message = 'i love you';
print(message.title())

将这个文件保存为 message.py,在运行它。你将看到如下输出:

I Love You

title() 以首字母大写的方式显示每个单词。

还有其他几个很有用的大小写处理方法。如upper()、lower()。

合并拼接字符串

first_name = 'ada';
last_name = 'lovelace';
full_name = first_name + ' ' + last_name;

python 似乎没有js的那种模版字符串, 但是可以使用 %s来占位替换

'hello %s' % ('world')

输出

hello world

注意,python的隐式转换和js不同,在字符串拼接时,必要的时候要用函数str() 避免类型错误,如下面的例子。

age = 23;
message = 'Happy ' + age + 'rd Birthday';
print(message);

如果是js,这段代码是没有问题,age会被转换成string,但在python中这段代码会报类型错误。

在这个示例中,Python发现你使用了一个值为整数int的变量,但它不知道该如何解读这个值。上面这个示例,应该显示地指出你希望Python将age整个用作字符串,因此,我们可以调用函数str():

age = 23;
message = 'Happy ' + str(age) + 'rd Birthday';
print(message);

经过上述处理后,将显示你期望的消息

Happy 23rd Birthday

数字

Python中的算数运算符大体和js差不多,多了个 // (取整除,返回商的整数部分)。

Python2.x 里,整数除整数,只能得出整数。请注意,计算整数结果时,才去的方式不是四舍五入,而是将小数部分直接删除。如果要得到小数部分,把其中一个数改成浮点数即可。

# python2.7
>>> 3 / 2
1
# python2.7
>>> 3.0 / 2
1.5

Python中没有这个问题。

浮点数

Python的浮点运算和js一样,不准确。

>>> 0.1 + 0.2
0.30000000000000004

注释

使用#标识

# 哈喽
print('哈喽')

有的时候在 # 后面写中文注释会出现错误,可以在文件顶部添加 # -*- coding: UTF-8 -*-

今天就到这里,明天学 Python中的 列表。