菜鸟教程
廖雪峰的官方网站
Python 入门指南

1、简介和科普

Python的3.0版本,常被称为Python 3000,或简称Py3k。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。

2、工作环境和工具

查看python版本python -V(大写字母)

Python 解释器可不止一种哦,有 CPython、IPython、Jython、PyPy 等。
顾名思义,CPython 就是用 C 语言开发的了,是官方标准实现,拥有良好的生态,所以应用也就最为广泛了。
而 IPython 是在 CPython 的基础之上在交互式方面得到增强的解释器(http://ipython.org/)。
Jython 是专为 Java 平台设计的 Python 解释器(http://www.jython.org/),它把 Python 代码编译成 Java 字节码执行。
PyPy 是 Python 语言(2.7.13和3.5.3)的一种快速、兼容的替代实现(http://pypy.org/),以速度快著称。

##3、初学者注意事项

  • True和False首字母大写
  • #!/usr/bin/env python
    此方法不支持windows环境,仅仅在linux或unix系统下有作用,在windows下无论在代码里加什么都无法直接运行一个文件名后缀为.py的脚本,因为在windows下文件名对文件的打开方式起了决定性作用。但是这个理论不完全正确
    然后修改脚本权限,使其有执行权限,命令如下:

    chmod +x hello.py

  • 退出交互式解释器exit()或ctrl+D

  • 解决双击脚本后一闪而过

    1
    2
    3
    4
    5
    6
    7
    # 第一种解决方法
    import os
    os.system("pause")

    # 第二种解决办法
    python2.*后面加上:raw_input()
    python3.*后面加上:input()

4、注释

单行注释以 # 开头,多行注释用三个单引号 ‘’’ 或者三个双引号 “”” 将注释括起来。
以下实例我们可以输出函数的注释:

1
2
3
4
5
6
7
def a():
'''这是文档字符串'''
pass
print(a.__doc__)

输出结果为:
>>>这是文档字符串

5、数字(Number)

Python 数字数据类型用于存储数值。
数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。

可以使用del语句删除一些数字对象的引用。

5-1、Python 支持三种不同的数值类型

  • 整型(Int)
    通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。
  • 浮点型(float)
    浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
  • 复数( (complex))
    复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。

5-2、数字运算

  • // 整数除法返回向下取整后的结果。
    注意:// 得到的并不一定是整数类型的数,它与分母分子的数据类型有关系。

  • 使用 ** 操作来进行幂运算。

  • 在交互模式中,最后被输出的表达式结果被赋值给变量 _ 。

5-3、数学函数math

  • abs(x)
  • ceil(x) 返回数字的上入整数
  • cmp(x, y) Python 3已废弃。使用(x>y)-(x<y)替换
  • exp(x) 2.718281828459045
  • fabs(x) 返回浮点型
  • floor(x) 返回数字的下舍整数
  • log(x) 如math.log(math.e)返回1.0
  • log10(x)
  • max(x1, x2,…)
  • min(x1, x2,…)
  • modf(x) 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示
  • pow(x, y)
  • round(x [,n]) 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。
  • sqrt(x)

5-4、随机数函数random

  • choice(seq) 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
  • randrange ([start,] stop [,step]) 从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1。如可以在1-100中随机选择一个奇数randrange(1,100, 2)。
  • random() 随机生成下一个实数,它在[0,1)范围内。
  • seed([x]) 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
  • shuffle(lst) 将序列的所有元素随机排序
  • uniform(x, y) 随机生成下一个实数,它在[x,y]范围内。

5-5、三角函数

  • acos(x) 返回x的反余弦弧度值。
  • asin(x) 返回x的反正弦弧度值。
  • atan(x) 返回x的反正切弧度值。
  • atan2(y, x) 返回给定的 X 及 Y 坐标值的反正切值。
  • cos(x) 返回x的弧度的余弦值。
  • hypot(x, y) 返回欧几里德范数 sqrt(xx + yy)。
  • sin(x) 返回的x弧度的正弦值。
  • tan(x) 返回x弧度的正切值。
  • degrees(x) 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
  • radians(x) 将角度转换为弧度

5-6、数学常量

  • pi 数学常量 pi(圆周率,一般以π来表示)
  • e 数学常量 e,e即自然常数(自然常数)。

6、字符串

Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
Python 访问子字符串,可以使用方括号来截取字符串,左闭右开,如str[3:6]。

7、数据结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print(a.count(333), a.count(66.25), a.count('x'))
2 1 0
>>> a.insert(2, -1)
>>> a.append(333)
>>> a
[66.25, 333, -1, 333, 1, 1234.5, 333]
>>> a.index(333)
1
>>> a.remove(333)
>>> a
[66.25, -1, 333, 1, 1234.5, 333]
>>> a.reverse()
>>> a
[333, 1234.5, 1, 333, -1, 66.25]
>>> a.sort()
>>> a
[-1, 1, 66.25, 333, 333, 1234.5]
>>> a.pop()
1234.5
>>> a
[-1, 1, 66.25, 333, 333]


>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry") # Terry arrives
>>> queue.append("Graham") # Graham arrives
>>> queue.popleft() # The first to arrive now leaves
'Eric'
>>> queue.popleft() # The second to arrive now leaves
'John'
>>> queue # Remaining queue in order of arrival
deque(['Michael', 'Terry', 'Graham'])

把列表当作堆栈使用

对于python中长长的for循环赋值可以看作是多个for循环叠加。

1
2
>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

del语句

集合

set (集合)。集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。集合对象还支持 union(联合),intersection(交),difference(差)和 sysmmetric difference(对称差集)等数学运算。

字典

keys
sorted
del

循环技巧

在字典中循环时,关键字和对应的值可以使用 items() 方法同时解读出来

1
2
3
>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
... print(k, v)

在序列中循环时,索引位置和对应值可以使用 enumerate() 函数同时得到
同时循环两个或更多的序列,可以使用 zip() 整体打包
需要逆向循环序列的话,先正向定位序列,然后调用 reversed() 函数

8、模块

模块是包括 Python 定义和声明的文件。文件名就是模块名加上 .py 后缀。模块的模块名(做为一个字符串)可以由全局变量 name 得到。

因为没有一见钟情的皮囊,也没有日久生情的耐心。 ​​​​

1、使用Python解释器

  • Python解释器:/usr/local/bin/python目录
  • Unix shell 的搜索路径:Linux/Unix配置环境变量
  • Windows添加路径:set path=%path%;C:\python35
  • 文件结束符:Unix系统是 Control-D,Windows系统是 Control-Z,解释器是quit()
  • 源程序编码:# -- coding: encoding --

2、Python简介

  • 注释符:#

数字

  • 除法取整://
  • 除法取余:%
  • 幂乘方:**
  • 最近一个表达式的值变量:_

    1
    2
    3
    此变量对于用户是只读的。不要尝试给它赋值 —— 你只会创建一个独立的同名局部变量,它屏蔽了系统内置变量的魔术效果。

    除了 int 和 float,Python 还支持其它数字类型,例如 Decimal 和 Fraction。Python 还内建支持 复数 ,使用后缀 j 或 J 表示虚数部分(例如,3+5j)。
  • 保留n位小数(四舍五入):round(3.1415926, n)

字符串

  • 如果字符串中只有单引号而没有双引号,就用双引号引用,否则用单引号引用。
  • 两者唯一的区别是在单引号中,你不需要转义 “ (但你必须转义 \’ ),反之亦然。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> 'spam eggs' # single quotes
    'spam eggs'
    >>> 'doesn\'t' # use \' to escape the single quote...
    "doesn't"
    >>> "doesn't" # ...or use double quotes instead
    "doesn't"
    >>> '"Yes," he said.'
    '"Yes," he said.'
    >>> "\"Yes,\" he said."
    '"Yes," he said.'
    >>> '"Isn\'t," she said.'
    '"Isn\'t," she said.'
  • 如果你前面带有 \ 的字符被当作特殊字符,你可以使用 原始字符串,方法是在第一个引号前面加上一个 r:

    1
    2
    3
    4
    5
    >>> print('C:\some\name') # here \n means newline!
    C:\some
    ame
    >>> print(r'C:\some\name') # note the r before the quote
    C:\some\name
  • 使用三引号:”””…””” 或者 ‘’’…’’’。行尾换行符会被自动包含到字符串中,但是可以在行尾加上 \ 来避免这个行为。下面的示例: 可以使用反斜杠为行结尾的连续字符串,它表示下一行在逻辑上是本行的后续内容。

  • 字符串可以由 + 操作符连接(粘到一起),可以由 * 表示重复。

  • 相邻的两个字符串文本自动连接在一起,只用于两个字符串文本,不能用于字符串表达式。

  • 一个字符就是一个简单的长度为1的字符串。

  • 和C/C++区别是索引(下标)也可以是负数,这将导致从右边开始计算。

  • 截取(检索)、索引、切片

  • 注意,包含起始的字符,不包含末尾的字符。这使得 s[:i] + s[i:] 永远等于 s。省略的第一个索引默认为零,省略的第二个索引默认为切片的字符串的大小。

  • Python字符串不可以被更改 — 它们是 不可变的 。

  • len函数

列表(数组)

  • append、len函数
  • 列表是 可变的,它允许修改元素。
  • 清空列表:letters[:] = []
    -