《Python 基础教程》学习笔记(一)

一. 数字和表达式

  • 一个整数被另一个整数除,计算结果的小数部分被解除,只留下整数部分。但一般咱们要用普通的除法,有两个解决方法:
    • 使用浮点数——参与除法的两个数中有一个为浮点数,运算结果也会是浮点数
    • 让 Python 改变除法的执行方式
      • 能够在程序前加上如下语句,或者直接在命令行中执行它
        from __future__ import division
      • 若是在命令行运行 Python,可使用命令开关 -Qnew。
      • 使用以上两种方法,/ 就只执行普通的除法运算,而非整除。此时 Python 提供了另外一个用于实现整除的操做符——双斜杠 //。注意:即便是浮点数,双斜线也会执行整除。
  • 幂运算符:**
    >>>2 ** 3
    8

    • 注意:幂运算符的优先级比取反运算符高,因此如下代码输出为 -9。
      >>>- 3 ** 2
      -9
  • 长整数
    • 普通整数不能大于 2147483647,若是须要更大的数,可使用长整数。
    • 长整数的书写方式跟普通整数基本同样,只是在最后面加了个 L(大写便于区分)。

二. 变量

  • 变量就是引用某值得名字
  • 变量名能够包括字母、数字、下划线,且不能以数字开头
  • 使用变量前,须要先赋值。

三. 函数

  • 前面介绍了幂运算符,咱们还能够用函数 pow(x, y[, z]) 来实现相同的效果。
    >>>pow(2, 3)
    8
  • 一般把 pow 等标准函数称为内建函数
  • 扩展两个内建函数:
    • abs:获取数的绝对值
      >>>abs(-10)
      10
    • round 函数:将浮点数四舍五入为最接近的整数值
      >>>round(1.0 / 2.0)
      1.0

四. 模块

  • 咱们可使用 import 命令,将模块导入 Python 以加强功能扩展。使用步骤以下:
    • 用 import 导入模块
    • 按“模块.函数”的格式使用这个模块的函数
    • 示例以下:导入 math 模块,使用其 floor 函数,功能为向下取整。
      >>>import math
      >>>math.floor(32.9)
      32.0

      若是想获取整数结果,可使用 int 函数:
      >>>import math
      >>>int( math.floor(32.9) )
      32

      实际上,int 函数会自动向下取整,无需使用 math.floor 函数。在此只是展现 int 函数的做用。除 int 函数外,float、long 等函数也有相似的做用。
  • 在肯定本身导入的各模块不会出现同名函数的状况下,咱们但愿不要每次使用函数时都写上模块的名字。此时可使用 import 命令的另一种形式——“from 模块 import 函数”。示例以下:
    >>>from math import sqrt
    >>>sqrt(9)
    3.0
  • 可使用变量来引用函数或 Python 中的绝大多数变量。好比,为 foo 变量赋值:foo=math.sqrt,以后就能够用 foo 来计算平方根了。

1. cmath 和复数

  • 咱们将负数做为参数传入 sqrt 函数,看看会有怎样的结果:
    >>> from math import sqrt
    >>> sqrt(-1)
    Traceback (most recent call last):
    File "<pyshell#8>", line 1, in <module>
    sqrt(-1)
    ValueError: math domain error

    或者,其余平台下会有以下结果:
    sqrt(-1)
    nan

    nan 是“not a number”(非数值)的简写
  • 由上面的代码可知,sqrt 只能处理大于 0 的浮点数,处理复数须要使用 cmath(complex math)模块来处理
    >>>import cmath
    >>>cmath.sqrt(-1)
    1j

2. __future__

  • __future__ 能够导入那些在将来会成为标准 Python 组成部分的新特性

五. 保存并执行程序

1. 在交互式解释器里输入的一切都会在退出时丢失。咱们如何编写本身和他人都能使用的程序呢?

* 使用纯文本编辑器新建 .py 文件
* 使用 IDLE,File -> New Window 来新建一个编辑窗口,输入内容后保存,按 Ctrl + F5 便可运行。

2. 经过命令提示符运行 Python 脚本

  • 假定打开了 DOS 窗口或 UNIX 中的 Sheel 提示符,而且进入了某个包含 Python 可执行文件的目录,或包含了这个可执行文件的目录已经放置在环境变量 PATH 中。
  • 使用 python 文件名.py 能够执行脚本。

3. 让脚本像普通程序同样运行

  • 有时但愿像运行其余程序同样运行 Python 脚本,而非显式地使用 Python 解释器。
    • 在 UNIX 中
      • 要在脚本首行加上 #!,在其后加上用于解释脚本的程序的绝对路径。
      • 运行脚本以前,要让脚本具备可执行的属性
      • 可使用 ./文件名.py 来运行脚本
    • 在 Windows 中
      • 双击便可运行,但速度很快,还没看清结果就会退出。能够在最后加一个 raw_input,让程序停下来,以便看到结果。

4. 注释

  • Python 中,用 # 来实现单行注释

六. 字符串

1. 单引号字符串和转义引号

  • 不一样于 C 语言,Python 中字符串用单引号、双引号括起来皆可。
    • 合理使用单引号、双引号,能够避免字符串的混淆。譬如如下代码
      "She's Lily."
      '"Hello", she said.'
    • 另外一种方法就是使用反斜杠 \ 进行转义。

2. 拼接字符串

  • 拼接字符串有如下两种方法:
    • 用一个接着另外一个的方式写两个字符串,Python 会自动拼接它们。可是要注意,只有在同时写下两个字符串,且一个紧接着另外一个的状况下,这种机制才会奏效。
      >>> "Let's say" '"Hello world"'
      'Let\'s say"Hello world"'
    • 用加号将两个字符串链接起来。这里要注意,Java 中,只要使用加号和字符串进行链接,其余类型也会自动转成字符串,但 Python 中没有此功能,因此不能试图将字符串和数值链接起来。
      >>> "Let's say" + '"Hello world"'
      'Let\'s say"Hello world"'

3. 字符串表示,str 和 repr

  • 经过上面的两个例子,咱们能够看到,经过 Python 打印出来的字符串仍是被引号括起来的。这是由于 Python 打印值的时候会保持该值在 Python 代码中的状态,而非咱们但愿用户看到的状态。
  • 值被转换为字符串的机制有如下两种
    • 使用 str 函数,则会按咱们但愿用户看到的状态输出。
      >>> print str"Hello world"
      Hello world
    • 使用 repr 函数建立一个字符串,它会以合法的 Python 表达式的形式来表示值。
      >>>print repr("Hello world")
      'Hello world'

      repr(x) 也能够写做x实现(注意是反引号,不是单引号)。但这种方式在 Python 3.0 以后就不在使用了,咱们只需在看到旧代码中这种用法时知道是怎么回事便可。
  • 简而言之,str、repr 和反引号是将 Python 值转换为字符串的 3 种方法。
    • str 让字符串更易读
    • repr 和反引号将结果字符串转换为合法的 Python 表达式

4. input 和 raw_input 的比较

  • 区别一
    • input 但愿接收合法的 Python 表达式,输入字符串还要带上”“。
    • raw_input 直接读取控制台输入(任何类型都能接收)。
  • 区别二
    • input 在纯数字输入时,会返回输入数字的类型。
    • raw_input 将全部输入做为字符串看待,返回字符串类型。

5. 长字符串、原始字符串、Unicode

  • 长字符串
    • 跨多行的长字符串,可使用三个引号(单引号、双引号都可)代替普通引号
    • 因为这种不同凡响的引用方式,咱们能够在长字符串之中同时使用单引号和双引号而不需转义。
    • 注意:普通字符串也能够跨行,但要在行末加反斜杠 \ 做为换行符。
  • 原始字符串(天然字符串)
    • 原始字符串对反斜杠不会特殊对待。这一点在书写正则表达式时尤为有用。
    • 原始字符串以 r 打头。
    • 原始字符串的最后一个字符不能使反斜杠,不然 Python 不知道是否要结束字符串。
  • Unicode 字符串
    • Unicode 字符串使用 u 前缀。