跟着 廖雪峰 老师愉快地学Python啦!姆们廖老师说了:完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行,所以Python是一种相当高级的语言。


Python是什么?

Python 是用来编写应用程序的高级编程语言,定位是优雅、明确、简单。相对来说,C语言适合开发那些追求运行速度、充分发挥硬件性能的程序。


Python的优势

  • 非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作 “内置电池”(batteries included)
  • 大量的第三方库;
  • 许多大型网站就是用Python开发的,例如YouTube、Instagram,还有国内的豆瓣

Python的缺点

  • 运行速度慢,因为Python是解释型语言,而C语言是编译型语言
  • 代码不能加密


安装Python

安装后,你会得到Python解释器(就是负责运行Python程序的),一个命令行交互环境,还有一个简单的集成开发环境。

Python解释器

当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。

  • CPython:在命令行下运行 python 即启动;
  • IPython:交互式解释器;CPython用 >>> 作为提示符,而IPython用 In [序号]: 作为提示符。
  • Jython:在Java平台运行
  • IronPython:在微软.Net上运行


第一个Python程序

命令行模式和Python交互模式

  • 在Windows下的提示符:C:\>
  • 在Python下的提示符:>>>
  • 在Python交互模式下输入exit()并回车,就退出了Python交互模式,并回到命令行模式

让Python算数儿打字啦!

1
2
3
4
5
>>> 100+200
300

>>> print("hello, world")
hello, world


区分命令行模式和Python交互模式

  • 在Python交互式模式下,可以直接输入代码,然后执行,并立刻得到结果;
1
2
3
在Python交互模式内计算 100+200+300
>>> 100+200+300
600
  • 在命令行模式下,可以直接运行.py文件。
1
2
3
4
5
6
7
testing.py文件中代码
print(100+200+300)

在终端运行 testing.py 文件
cd .py 所在的文件夹
$ python3 testing.py
600


在Mac上直接运行 .py 文件

首先在 .py 文件的第一行要加个特殊注释

1
2
#!/usr/bin/env python3
print('hello, world')

之后通过命令给 hello.py 权限

1
$ chmod a+x hello.py

然后直接运行~

1
$ ./hello.py


输入和输出

输出

print() 函数可以向屏幕输出文字、多个字符串、计算结果等。

1
2
3
4
5
6
7
8
9
10
>>> print("hello, world")
hello, world

>>> print("Jason", "Maimi", "Love")
Jason Maimi Love
<!-- 逗号的输出是一个空格 -->

>>> print("100+200=", 100+200)
100+200=300
<!-- 在引号里的是字符串 -->


输入

input() 函数可以让用户输入字符串,并且存放到一个变量里。

1
2
3
4
5
6
name = input()
Maimi
>>> name
'Maimi'
>>> print(name)
Maimi

关于变量

在计算机程序中,变量可以是数字也可以是字符串,在上面的 name 就是一个字符串。

1
2
name = input('please enter your name: ')
print('hello,', name)

运行上面的程序,第一行代码会让你输入任意字符作为自己的名字,然后存入 name 变量中;第二行代码会根据你的名字向你说hello,比如输入Maimi


Python基础

语法

缩进方式,四个空格,# 为注释,: 结尾代表代码块,大小写敏感!

1
2
3
4
5
6
# print absolute value of an integer:
a = 100
if a >= 0:
print(a)
else:
print(-a)

Tips:更改Sublime中Tab的空格数,在setting中输入:

1
2
3
"tab_size": 4,
"translate_tabs_to_spaces": true,
"expand_tabs_on_save": true


数据类型和变量

数据类型

Python支持多种数据类型,在计算机内部,可以把任何数据都看成一个“对象”。

  1. 整数:正负皆可,有时用十六进制表示整数比较方便,前缀为0x

  2. 浮点数:正常的浮点数就直接写1.23 ;很大或者很小的浮点数需要用科学计数法,将10用e代替,如1.23x10的九次方写作 1.23e9;浮点数没有大小限制,但超出了一定范围就会直接表示为inf

  3. 字符串:以单引号或双引号括起来的任意文本,引号不属于字符串的一部分。语句内部如果想用引号,则需要用转义字符 \ 来表示。

    1
    2
    >>> print('I\'m \"OK\"!')
    'I'm "OK"!'

    \ 可以转义很多字符,比如 \n 表示换行,\t 表示制表符,\\ 表示的字符就是 \ ,如:

    1
    2
    3
    4
    5
    6
    7
    8
    >>> print('I\'m ok.')
    I'm ok.
    >>> print('I\'m learning\nPython.')
    I'm learning
    Python.
    >>> print('\\\n\\')
    \
    \

    可以用 r'' 表示 '' 内部的字符默认不转义:

    1
    2
    >>> print(r'\\\t\\')
    \\\t\\

    '''...''' 表示多行内容:

    1
    2
    3
    >>> print('''First line
    second line
    third line''')
  4. 布尔值True & False ,Python可以自己判断数字运算正确与错误,布尔值可以用 and , or , not 来运算。

    and 是与运算,所有都对才能算 True

    or 是或运算,只要一个对,结果就是 True

    not 是非运算,比如你说not 1>2 那么判定则为 True

    布尔值经常用在条件判断中,比如:

    1
    2
    3
    4
    if age >= 18:
    print('adult')
    else:
    print('teenager')
  5. 空值:用 none 表示,不能理解为 0


变量

变量不仅可以是数字,还可以是任意数据类型。变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头,等号 = 是赋值语句,同一个变量可以反复赋值。变量本身类型不固定的语言叫做 “动态语言” 。

1
2
x = 10
x = x + 2 #计算表达式=12,再重新赋值给x。

变量在计算机内存中的表示:

1
a = 'ABC'

Python先在内存中创建了'ABC'的字符串,然后在内存中创建了一个名为 a 的变量,并把它指向了 'ABC'

再来一个一分析就懂的例子:

1
2
3
4
a = 'ABC'	#创建字符串'ABC'和变量a,并把a指向了'ABC'
b = a #创建了变量b,并把b指向了a
a = 'XYZ' #创建字符串'XYZ',并把a指向了'XYZ'
print(b) #b没有被重新赋值,故得出的结果是'ABC'


常量

在Python中,通常用全部大写的变量名表示常量:

1
PI = 3.14159265359


两种除法

精确的/ :浮点数,精确!

1
2
3
4
>>> 10 / 3
3.3333333333333333
>>> 9 / 3
3.0

取整的// :地板除,结果永远是整数,管你除不除得尽

1
2
>>> 10 // 3
3


字符编码和字符串

  1. 字符编码

最早的计算机设计采用 8 bit = 1 byte 的算法,也就是8个比特作为一个字节,所以一个字节能表示的最大整数就是255(二进制的11111111=十进制的255)

美国人最早只编了127个字符,包括大小写英文字母、数字和一些符号,这个编码表叫 ASCII 编码,比如 A 的编码是 65,小写 z 的编码是 122。中国发现这中文一个字节不够用,于是就制定了 GB2312 编码,把中文编进去了。各国发现自己都不够编啊,于是各自编了各自的语言,就乱套了!

就在这时候,Unicode 出现了!2个字节=1个字符,偏僻字是4个字节=1个字符。