1.基本数据类型和运算
1.1 基本数据类型
Python中最基本的数据类型包括整型,浮点数,布尔值和字符串。类型是不需要声明的,比如:
a = 1 # 整数
b = 1.2 # 浮点数
c = True # 布尔类型
d = "False" # 字符串
e = None # NoneType
其中#是行内注释的意思。最后一个None是NoneType,注意不是0,在Python中利用type函数可以查看一个变量的类型:
type(a) # <type 'int'>
type(b) # <type 'float'>
type(c) # <type 'bool'>
type(d) # <type 'str'>
type(e) # <type 'NoneType'>
1.2 变量和引用
Python中基本变量的赋值一般建立的是个引用,比如下面的语句:
a = 1
b = a
c = 1
a和b都是指向包含1这个值的这块内存的指针。
Python内置了id函数,可以返回一个对象的地址,用id函数可以让我们知道每个变量指向的是不是同一个值:
id(a) # 35556792L
id(b) # 35556792L
id(c) # 35556792L
注释中表示的仍是执行后的结果。如果这时候我们接下面两个语句:
b = 2 # b的引用到新的一个变量上
id(b) # 35556768L
可以看到b引用到了另一个变量上。
1.3 运算符
a = 2
b = 2.3
c = 3
a + b # 2 + 2.3 = 4.3
c – a # 3 - 2 = 1
a / b # 整数除以浮点数,运算以浮点数为准,2 / 2.3 = 0.8695652173913044
a / c # Python2中,整数除法,向下取整 2 / 3 = 0
a ** c # a的c次方,结果为8
a += 1 # Python中没有i++的用法,自增用+=
c -= 3 # c变成0了
d = 'Hello'
d + ' world!' # 相当于字符串拼接,结果为'Hello world!'
d += ' "world"!'# 相当于把字符串接在当前字符串尾,d变为'Hello "world"!'
e = r'\n\t\\'
print(e) # '\\n\\t\\\\'
需要提一下的几点:1)字符串用双引号和单引号都可以,区别主要是单引号字符串中如果出现单引号字符则需要用转义符,双引号也是一样,所以在单引号字符串中使用双引号,或者双引号字符串中使用单引号就会比较方便。字符串前加r表示字符串内容严格按照输入的样子
1.4 布尔值和逻辑运算
a = True
b = False
a and b # False
a or b # True
not a # False
1.5 位操作
~8 # 按位翻转,1000 --> -(1000+1)
8 >> 3 # 右移3位,1000 --> 0001
1 << 3 # 左移3位,0001 --> 1000
5 & 2 # 按位与,101 & 010 = 000
5 | 2 # 按位或,101 | 010 = 111
4 ^ 1 # 按位异或,100 ^ 001 = 101
1.6 ==, !=和is
a = 1
b = 1.0
c = 1
a == b # True,值相等
a is b # False,指向的不是一个对象,这个语句等效于 id(a) == id(b)
a is c # True,指向的都是整型值1
注:不要对系统函数进行误操作
id(type) # 506070640L
type = 1 # type成了指向1的变量
id(type) # 35556792L
id = 2 # id成了指向2的变量
from __future__ import print_function
print = 3 # print成了指向3的变量
一个简简单单的赋值操作就可以把系统内置的函数给变成一个普通变量
1.7 模块导入
import是利用Python中各种强大库的基础,比如要计算cos(π)的值,可以有下面4种方式:
# 直接导入Python的内置基础数学库
import math
print(math.cos(math.pi))
# 从math中导入cos函数和pi变量
from math import cos, pi
print(cos(pi))
# 如果是个模块,在导入的时候可以起个别名,避免名字冲突或是方便懒得打字的人使用
import math as m
print(m.cos(m.pi))
# 从math中导入所有东西
from math import *
print(cos(pi))
一般来说最后一种方式不是很推荐,因为不知道import导入的名字里是否和现有对象名已经有冲突,很可能会不知不觉覆盖了现有的对象。