人生苦短,我用 Python!

Python-logo

我相信很多人都见过上面这句话,尤其是计算机专业的同学,它和PHP 是世界上最好语言!一样,无异于是对编程语言的一种看法。不管这些话是对编程语言的喜爱还是调侃,每个人都有自己的观点,只要能够满足任务需求,激发自己的学习兴趣的就是有用的工具。

六月中旬我开始接触 Python,当时对爬虫很感兴趣,希望能够做一些有趣的东西出来。然而一开始我的目的很明确,即利用 Python 进行爬虫。看到 Python 是爬虫的利器,所以就先学习 Python,在原有的编程语言基础上扩展知识面。考虑到自己有做笔记的习惯,我就顺带将这段时间学习到的知识点写到博客上。一方面能够简洁的梳理自己的学习过程,理清学习思路;另一方面可以留给日后复习,巩固提高所学知识。

环境搭建:

  • Python版本:3.6.3
  • IDE:PyCharm
  • OS:Windows 7

要点概括:

BasicGrammar-contents

1.标识符

学过 C 语言或者 Java 的你肯定不会对编程语言的标识符感到陌生,而在 Python 中,对于标识符的规定有以下三个原则:

  • 第一个字符必须是字母或下划线;
  • 标识符的其他的部分由字母、数字和下划线组成;
  • 标识符区分大小写。

2.关键字

Python 和 C 语言或 Java 一样,也有预先保留的关键字(保留字),这些关键字不能用来表示标识符,否则会出错。我们只需两行代码即可显示全部的关键字,如下所示:

1
2
import keyword
print(keyword.kwlist)

输出结果如下:

1
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

3.注释

3.1 单行注释

对于单行注释,在 Python 中用#表示。可以放在每行的开头,也可以放在每行语句之后,如下所示:

1
2
# 放在开头的注释
print('Hello,world!')  # 放在语句之后的注释

运行结果会忽略注释,最终显示Hello,world!,如下所示:

1
Hello,world!

3.2 多行注释

对于多行注释,可以对每行使用#,也可以用键盘上的单引号双引号来表示,如下所示:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 单行注释

'''
多行注释1
多行注释2
'''

"""
多行注释3
多行注释4
"""

print('Hello,world!') 

输出结果如下:

1
Hello,world!

4. 代码缩进

不像其他编程语言,Python 对于每行的代码缩进要求严格,这也是它的特色。到底是使用空格缩进还是Tab键缩进呢?官方文档推荐使用空格进行缩进。

缩进时要注意:同一个代码块的语句必须包含相同的缩进空格数,如下所示:

1
2
3
4
if True:
    print('True')
else:
    print('False')

注意:ifelse后面都有一个英文状态下的冒号

5. 数字的类型

Python 中的数字有四种类型:

  • 整数:int,如 0、1、2、3
  • 布尔:bool,如 True 或 False
  • 浮点数:float,如 1.23
  • 复数:complex,如 1+2j

6. 字符串

在 Python 中,对于字符串(string)的表示大致有以下规定:

(1)单引号和双引号的作用相同,如下所示:

1
2
print('hello1')
print("hello2")

输出结果如下:

1
2
hello1
hello2

另 1:为什么这里的hello1换行之后才显示hello2

因为 Python 中的 print 语句在打印出结果后会默认执行换行操作,若要实现不换行,可在第一行括号内增加end="-"语句,如下所示:

1
2
print('hello1', end="-") # 这里用横线进行分隔,也可以用空格或其他字符
print("hello2")

输出结果如下:

1
hello1-hello2

另 2:print()打印的双引号和单引号还可以当做定界符使用,可相互嵌套。被嵌套的引号会被解释成标点符号,如下所示:

1
2
print('helo"world')
print("hello'world")

输出结果如下:

1
2
helo"world
hello'world

(2)用反斜杠\进行转义,也可用字母r让反斜杠不进行转义,如下所示:

1
2
print('hello\n')
print(r'hello\n')

输出结果如下:

1
2
3
hello
        # 注意这里有空行
hello\n

(3)级联字符串,如下所示:

1
print('Hello''abc')

输出结果如下:

1
Helloabc

(4)字符串可以用+号连在一起,用*重复字符串,如下所示:

1
2
print('a' + 'b' + 'c')
print('a' * 5)  # 重复输出5个a

输出结果如下:

1
2
abc
aaaaa

(5)对于字符串的索引,左侧从 0 开始,右侧从 -1 开始,如下所示:

1
2
3
4
5
6
7
8
9
str = 'IlovePython'
print(str)  # 输出整个字符串
print(str[:])  # 输出整个字符串
print(str[0])  # 输出字符串第一个字符,其索引为0
print(str[-1])  # 输出倒数第一个字符
print(str[0:])  # 输出第一个到最后的所有字符
print(str[:-1])  # 输出从第一个到倒数第二个字符,加了冒号之后就不包括右侧的索引位置了
print(str[1:5])  # 输出从第二个到第五个字符,第二个字符的索引为1,第五个字符的索引为4,同样的,加了冒号之后就不包括右侧的索引位置了
print(str + 'add')  # 用加号连接字符串

输出结果如下:

1
2
3
4
5
6
7
8
IlovePython
IlovePython
I
n
IlovePython
IlovePyhto
love
IlovePythonadd

(6)字符串的格式化

通过一个例子来了解格式化字符串的输出,如下所示:

1
print("My name is %s,I'm %d years old." % ('Carol', 18))

输出结果如下:

1
My name is Carol,I'm 18 years old.

7. 用户的输入

上面用了print()进行了输出,同时可以用input()进行用户的输入,如下所示:

1
input('按下 Enter 后退出:')

输出结果如下(没按回车之前):

1
按下 Enter 后退出

输出结果如下(按下回车之后):

1
2
3
按下 Enter 后退出

Process finished with exit code 0

8. 导入模块

在 python 中,使用 import 或 from…import 来导入相应的模块。

①将整个模块(somemodule)导入,格式如下:

1
import somemodule

②从某个模块中导入某个函数,格式如下:

1
from somemodule import somefunction

③从某个模块中导入多个函数,格式如下:

1
from somemodule import firstfunc, secondfunc, thirdfunc

④将某个模块中的全部函数导入,格式如下:

1
from somemodule import *