阅读本文需要 10 分钟

前言

学习任何一门语言之前,你得先了解它的整体架构,知道它的思想,了解它的关键要素,一门语言学到后来你会发现,就像是在剥茧抽丝一般,越是深入越是发现其奥妙之处。

Python 中的八大关键要素

Python 是一种Duck String类型语言,其崇尚的是所见即所得,正如 Zone of Python 里面写得那样,Explicit is better than implicit!Python 的世界里一切皆是对象。

1. 对象引用

理解对象引用之前需要先知道什么是对象,Python 中所有的东西都是对象,'A' 是对象,100 是对象,函数是对象,一切皆对象。

不管你是通过什么方法——博客、书籍、培训机构,尽管他们在开始之初,怎么弱化对象引用的使用,通过 “赋值”,“将 10 赋值给 a” 等此类的字眼来帮助你快速理解 Python 语法。

但是殊途同归,不管你怎么绕都没法绕开 reference 引用这个词。在 Python 中对象往往都是都是存放在内存中,当想调用一个对象时,往往通过一个对象引用来指向对象所在的内存地址,比如 a = 100,就是通过 a 来指向 100 在内存里存放的地址,a 叫做对象引用。

>>> a = 100

# id(a) 可以用来查看 a 的在内存里的地址
>>> id(a)
13536740848
>>> id(100) 
13536740848

# 可以看到他们的地址都是一样
2. 数据类型

在任何语言中,一个基本任务是表示数据项,Python 中提供了几种内置的数据类型,这里简单的介绍两种数据类型。

int 类型用来表示整数

>>> a = 100
>>> type(a)
<class 'int'>

# type(a) 可以用来查看 a 的类型

str 类型用来表示字符串

>>> b = 'PythonDeveleper'
>>> type(b)
<class 'str'>
3. 组合数据类型

当数据很多时,需要将数据整合到一起。Pyton 提供了几种组合数据类型,这里简单介绍两种数据类型。

list(列表),列表是可变的,可以插入或删除里面的数据。

>>> a = [1,2,3,4]
>>> type(a)
<class 'list'>

插入一个数据

>>> a.append(5)
 >>> a 
[1, 2, 3, 4, 5]

删除一个数据

>>> a.remove(1)
>>> a 
[2, 3, 4, 5]

tuple(元组),元组是不可变的,不可以修改里面的数据。

>>> a = (1,2,3,4)
>>> type(a)
<class 'tuple'>

当为元组插入一个数据时,程序会报错

>>> a.append(5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'

同样的,删除元组里面的一个数据时,程序也会报错

>>> a.remove(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'remove'
4.算数操作符

对数据进行一些计算是经常会遇到的问题,Python 提供了完整的算数计算符,如加减乘除 +,-,*,/

>>> a = 100
>>> b = 200
>>> b - a 
100

>>> b / a 
2.0

Python 还提供了他们的增强运算符,如 +=,*=

>>> a = 1
>>> b = 2
>>> a += 1
>>> a 
2

# a += 1,可以理解为 a = a + 1

# 同样的,b = b * 2

>>> b *= 2
>>> b 
4
5. 逻辑操作符

任何语言的最基本功能就是逻辑判断,Python 中提供了 4 种逻辑操作符。

逻辑操作符涉及到布尔值,TrueFalse,谨记除了 0False和其它任何 ‘空’ 对象,其他任何对象的布尔值都是 True

<1> 身份操作符 is

身份操作符 is 比较的是两个对象所在的内存地址

>>> a = ['Python','Develeper']
>>> b = ['Python','Develeper']
>>> a is b 
False

这里再一次验证了 list(列表) 是可变的,它的地址是在变化的,故返回 False

<2> 比较操作符 >,<,==,!=,>=,<=

>>> a = 100
>>> b = 200
>>> a < b 
True

<3> 成员操作符 in

对于列表、元组等组合数据类型,我们可以 in 来测试成员关系,看看某个数据在不在某个列表里面。

>>> a = ['Python','Develeper']
>>> 'Python' in a 
True

<4> 逻辑运算符 and,or,not

andor 都是使用短路原则,并返回决定结果的操作数,并不是返回布尔值!

很多博客或者培训机构在说到逻辑运算符时,总会说 and 的两边都是 True 就返回 True,否则返回 False,其实并不是

>>> a = True
>>> b = 'PythonDeveleper'
>>> a and b 
'PythonDeveleper'

and 的实际逻辑判断是 :x and y,当x的结果是False时,返回值为x的结果,否则,返回y的结果。如True and 1 + 1,其结果为2

同样的,or 的实际逻辑判断是:x or y,当x的结果为True时,返回值为x的结果,否则,返回y的结果。如False or 1 + 2,其结果为3

而之所大家那样说,是因为逻辑操作符大多是出现在逻辑判断中,即布尔上下文中,如 if,其返回值都是布尔值。

>>> a = 100
>>> b = 1-1
>>> if a and b :
...     print('PythonDeveleper')
... else:
...     print('hello,Python')
... 
hello,Python

因为这里的 a and b 其返回的是 b 的结果 0,而 0 的布尔值是 False,故返回的是 Falseif 条件不成立,
所以执行 else 里的代码——打印hello,Python

not就是取 a 的相反布尔值。

>>> a = 100
>>> not a
False
6. 控制流语句

在程序运行中默认都是从上而下逐行执行的,但是我们可以通过控制流语句来改变程序的流向。

实际上,函数,方法的调用,以及控制结构都可以改变程序流向。这里简单介绍三种控制结构。

<1> if 语句

上面的事例就是 if 语句,这里不做过多赘述。

<2> while 语句

while 语句执行的次数取决于条件的状态。

a = 3
>>> while a > 1:
...     print('hello')
...     a -= 1
... 
hello
hello

当条件 a > 1 不满足时,while 语句就会停止。

<3> for in语句

for in 语句是一种迭代循环。

>>> a = [1,2,3,4]
>>> for num in a :
...     print(num)
... 
1
2
3
4

num 会逐一引用 a 里面的数据,然后根据下面的代码进行操作,直至最后一个数据被引用,for 循环就会停止。

7. 输入、输出

编写一个真正的程序,肯定要有输入与输出。Python 中的输入和输出有很丰富的操作方式,这里简单的介绍在 shell 脚本下如何输入与输出

首先用你的编辑器创建一个 test.py 文件
在里面编辑代码如下

name = input('Please input your name :')

print(name)

保存后关闭,在你的 IDE 下转到你的文件存放地址比如说 C:/python/,输入 python test.py

可以看到你的 IDE 界面会出现这个:

Please input your name :

输入你的名字后,这里输入的是 PythonDeveleper,回车,可以看到你的 IDE 已经打印出你的名字了。

PythonDeveleper

需要注意的一点是,Python 默认所有从键盘上输入的都是字符串形式。

8. 函数的创建与调用

在实际情况中,很多时候需要我们创建自己的一些函数来实现一些功能。这里简单介绍一下函数的创建与调用。

<1> 函数的创建

创建函数通常的语法格式:

>>> def function_name(arguments):
...     suite
...

函数由一个 def 语句来创建,里面的参数可以是多个,也可以没有.需要注意的是,由于 Python 中一切皆对象,所以函数也是对象,故在执行 def 时,会创建一个函数对象,并同时创建一个该函数对象的对象引用——即函数名,且函数也可以当做参数传给其他函数。

下面创建一个简单的函数

>>> def my_first_func():
...     print('PythonDeveleper')
...

<2> 函数的调用

可以直接调用用函数名(在创建函数时,同时创建的对象引用)来调用

>>> my_first_func()
PythonDeveleper

也可以新建一个对象引用来指向该函数对象来调用

>>> a = my_first_func
>>> a()
PythonDeveleper

结语

Python 的语法并不是很难,但如果知其义不知其意的话,很难真正掌握 Python。

一些很简单的语法错误,其实并不需要去 Google,或是百度,你如果真的了解了它的内涵,你自己就可以解答。

这里只是很简略的介绍了下 Python 的关键要素,初学 Python 的人,强烈建议去看一遍 < A Byte of Python3 > ,或者是它的中文版 < 简明 Python3 >。这本书很薄,几天就能看完,它将 Python 由繁化简,简明扼要的介绍了 Python 的一些内涵。可以帮助你快速上手 Python。