Python学习-基础语法1
Jacob Chen Lv3

此文档未全部完成,将随时更新。

1. 数据类型

Python常用的几种数据类型有数字、字符串、列表、字典和元组,其实Python内部的数据类型很多,但是我们常用的不多,太多了也记不了,掌握了常用的这几个数据类型即可。

1.1 可变类型与不可变类型

1.1.1 不可变类型(数字、字符串、元组、不可变集合)

不可变的类型是不支持修改原数据的,每次对不可变类型的数据进行修改时都是重新创建一个对象然后赋值给变量。

1
2
3
4
5
6
7
8
>>> s = 'as'
>>> id(s)
4548424512
>>> s = s + ',as'
>>> id(s)
4548895720
>>> s
'as,as'
1.1.2 可变类型(列表、字典、可变集合)

而可变类型是支持修改源数据,而不用重新创建新的对象

1
2
3
4
5
6
7
8
>>> L = [1,2]
>>> id(L)
4547584136
>>> L[0] = 2
>>> id(L)
4547584136
>>> L
[2, 2]

1.2 数字数据类型

在Python3中,整型、长整型、浮点数、负数、布尔值等都可以称之为数字类型。

1.2.1 创建数字类型类型的对象

第一种创建整型的方式:

1
2
3
>>> number = 9
>>> type(number)
<class 'int'>

第二种创建整型的方式:

1
2
3
>>> number = int(9)
>>> type(number)
<class 'int'>

以上两种创建整型对象的方式都可以创建的,但是他们也是有本质上的区别,第一种方式实际上会转换成第二种方式,然后第二种方式会把括号内的数据交给__init__这个构造方法,构造方法是int类的,然后构造方法会在内存中开辟一块空间用来存放数据,但实际上我们在用时候是没有任何区别的。

1
def __init__(self, x, base=10): # known special case of int.__init__

可以从源码中看到,__init__的方法有两个参数,其中base=10是可选的参数,x是我们对象的值,base=10其实就是说把我们的值(默认二进制)以十进制的方式输出出来,通过下面的实例可以看到:

1
2
3
>>> var = int('0b100',base=2) 
>>> var
4

通过int()可以将一个数字的字符串变成一个整数,并且如果你指定了第二个参数,还可以将值进制数转换为整数:

1
2
3
4
5
6
7
# 将数字字符串转换为整数,数字字符串通过进制转换为整数
>>> int('99'),int('100',8),int('40',16),int('10000000',2)
(99, 64, 64, 128)

# 讲进制数转换为整数
>>> int('0x40',16),int('0b1000000',2)
(64, 64)

把二进制的数字4通过十进制输出出来,4的二进制就是0b100,又有一个知识点就是在类的方法中,所有以__开头,并且以__结尾的方法都是Python内部自己去调用的,我们在写代码的过程中是不需要去调用的,最简单的例子就是__init__,通过上面的流程图我们就可以很清楚的看到。

1.2.2 init内部优化机制

当两个或者多个对象的值都是同一个的时候,那么这些对象都会使用同一个内存地址,这里的值是是有范围的,默认范围是-5~257

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> var1 = 12
>>> var2 = 12
>>> id(var1),id(var2)
(4545458672, 4545458672)
>>> var2 = 13
>>> id(var1),id(var2)
(4545458672, 4545458704)
>>> var1 = 13
>>> id(var1),id(var2)
(4545458704, 4545458704)
>>> var1 = 456
>>> var2 = 456
>>> id(var1),id(var2)
(4548760880, 4548760688)
1.2.3 数字类型的长度

数字类型在python2.7里面是分整型和长整型这个区别的,也就是说如果你的数字大到一定的范围,那么python会把它转换为长整形,一个数字类型包含32位,可以存储从-2147483648到214483647的整数。一个长整(long)型会占用更多的空间,64位的可以存储-922372036854775808到922372036854775808的整数。

python3里long型已经不存在了,而int型可以存储到任意大小的整型,甚至超过64为。

Python内部对整数的处理分为普通整数和长整数,普通整数长度为机器位长,通常都是32位,超过这个范围的整数就自动当长整数处理,而长整数的范围几乎完全没限制,如下:

Python2.7.x

1
2
3
4
5
6
7
8
9
>>> var = 123456
>>> var
123456
>>> var = 10 ** 20
>>> var
100000000000000000000L
>>> type(var)
# long就是长整型
<type 'long'>

Python3.5.x

1
2
3
4
5
6
7
8
>>> var = 123456
>>> var
123456
>>> var = 10 ** 20
>>> var
100000000000000000000
>>> type(var)
<class 'int'>
1.2.4 布尔类型(bool)

布尔类型其实就是数字0和1的变种而来,即真(True/1)或假(False/0),实际上就是内置的数字类型的子类而已。

1
2
3
4
5
6
7
8
# 如果0不是真,那么就输出'0 is False.'
if not 0: print('0 is False.')
...
0 is False.
# 如果1是真,那么就输出'1 is True.'
>>> if 1: print('1 is True.')
...
1 is True.

你还可以使用布尔值进行加减法,虽然从来没在任何代码中见过这种形式:

1
2
3
4
5
6
>>> True + 1
# 1 + 1 = 2
2
>>> False + 1
# 0 + 1 = 1
1

1.3 字符串数据类型

1.4 集合数据类型

1.5 列表数据类型

1.6 字典数据类型

1.7 元组数据类型

2. 赋值与运算符

赋值与运算符

3. 流程控制

流程控制

4. 深浅拷贝

深浅拷贝

5. 函数

函数

5.1 内置函数

内置函数

5.2 模块默认全局变量

模块默认全局变量