# Python常用知识点汇总

1.元组

>>> (0, 'haha', (4j, 'y')) ###元组用圆括号标志

(0, 'haha', (4j, 'y'))

>>> t = (1, 3, 'b')

'b'

Traceback (most recent call last): File "#41>", line 1, in t[3] IndexError: tuple index out of range

'b'

>>> t[0:-1]

(1, 3)

>>> t * 2 ##这里是元组内的对象都重复两次，而不是每个对象值乘以2

(1, 3, 'b', 1, 3, 'b')

>>> for x in t:

print x,

1 3 b

>>> 'b' in t

True

>>> q = t + ((3, 'abc')) ##也可以写成:q = t + (3,’abc’)

(1, 3, 'b', 3, 'abc')

>>> for x in (2, (3, 'a')): ##嵌套的元组遍历，输出时被嵌套的元组作为一个对象输出

print x

2 (3, 'a')

>>> len(q)

>>> len((2, (3, 'abc'))) ##注意嵌套元组的长度

>>> (1, 2, 3)[1]

>>> q[1] = 'd'

Traceback (most recent call last): File "#57>", line 1, in q[1] = 'd' TypeError: 'tuple' object does not support item assignment

>>> a = ('b', 'c', q)

>>> 1 in a ###判断元组中是否有某个值

False

>>> q in a

True

>>> a = ('b', 'c', (1, 3, 'b', 3, 'abc'))

('b', 'c', (1, 3, 'b', 3, 'abc'))

2.列表

1）首先是基本用法

python 代码

>>> l = ['a', 'b', 'c']

>>> len(l) 3

>>> l + ['d'] ['a', 'b', 'c', 'd']

>>> l * 2 ['a', 'b', 'c', 'a', 'b', 'c']

>>> for x in l:

print x, a b c

2）索引和分片，赋值（单个元素赋值，分片赋值

python 代码

>>> l = ['abc', 'def', 'ghi', 123]

>>> l[2] 'ghi'

>>> l[-3] 'def'

>>> l[:3] ['abc', 'def', 'ghi']

>>> l[1] = 'haha'

>>> l ['abc', 'haha', 'ghi', 123]

>>> l[1:] = ['apple', 'banana']

>>> l ['abc', 'apple', 'banana']

>>> l[2] = [123, 345, 456]

>>> l ['abc', 'apple', [123, 345, 456]]

>>> l[1:] = [123, 234, 345, 456, 567]

>>> l ['abc', 123, 234, 345, 456, 567]

3） 添加、排序、删除操作

python 代码

>>> l = ['abc', 'def', 'ghi', 123]

>>> l.append(456)

>>> l ['abc', 'def', 'ghi', 123, 456]

>>> l.sort()

>>> l [123, 456, 'abc', 'def', 'ghi']

>>> del l[0]

>>> l [456, 'abc', 'def', 'ghi']

>>> del l[2:]

>>> l [456, 'abc']

4）一些有趣的用法

python 代码

>>>freshfruit = [' banana', ' loganberry ', 'passion fruit ']

>>> [str.strip() for str in freshfruit] ['banana', 'loganberry', 'passion fruit']

python 代码

>>> vec = [2, 4, 6]

>>> [2*x for x in vec if x > 3] [8, 12]

python 代码

>>> lst1 = [2, 4, 6]

>>> lst2 = [4, 3, -9]

>>> [x*y for x in lst1 for y in lst2] [8, 6, -18, 16, 12, -36, 24, 18, -54]

python 代码

[x**2 for x in range(10)]

3.字典

python里的字典就像java里的HashMap，以键值对的方式存在并操作，其特点如下：

1）基本操作

python 代码

>>> table = {'abc':1, 'def':2, 'ghi':3}

>>> table['abc'] 1

>>> len(table) 3

>>> table.keys() ['abc', 'ghi', 'def']

>>> table.values() [1, 3, 2]

>>> table.has_key('def') True

>>> table.items() [('abc', 1), ('ghi', 3), ('def', 2)]

2）修改，删除，添加

python 代码

>>> table = {'abc':1, 'def':2, 'ghi':3}

>>> table['ghi'] = ('g', 'h', 'i')

>>> table {'abc': 1, 'ghi': ('g', 'h', 'i'), 'def': 2}

>>> del table['abc']

>>> table {'ghi': ('g', 'h', 'i'), 'def': 2}

>>> table['xyz'] = ['x', 'y', 'z'] ##另一种添加方法>>> dict1.setdefault('b',2)

>>> table {'xyz': ['x', 'y', 'z'], 'ghi': ('g', 'h', 'i'), 'def': 2}

#清空字典

>>> dict1.clear()

>>> dict1 #字典变为空了

{}

#删除字典对象

>>> del dict1

Traceback (most recent call last):

File "", line 1, in

NameError: name 'dict1' is not defined

3）对字典的遍历

python 代码

>>> table = {'abc':1, 'def':2, 'ghi':3}

>>> for key in table.keys():

print key, '\t', table[key] abc 1 ghi 3 def 2

1） 文件写

python 代码

>>> myfile = open('myfile', 'w') ##另外一种写法myfile=file(‘myfile’,’w’)

>>> myfile.write('hello world\n')

>>> myfile.close()

python的一个open语句就打开了一个文件（当给定的文件不存在时，会自动建立一个新的文件）。open的第一个参数是文件名，第二个参数是操作模式，所谓操作模式就是你打开一个文件是用来干什么的，是读，还是写 （当然操作模式不仅只有读和写）。还有一件事，操作完要记得关。

2） 文件读

python 代码

>>> myfile = open('myfile', 'r') ##另外一种写法myfile=file(‘myfile’,’r’)

Python中可以使用 pickle 模块将对象转化为文件保存在磁盘上，在需要的时候再读取并还原。具体用法如下：

pickle.dump(obj, file[, protocol])

n obj: 要持久化保存的对象；

n file: 一个拥有 write() 方法的对象，并且这个 write() 方法能接收一个字符串作为参数。这个对象可以是一个以写模式打开的文件对象或者一个StringIO对象，或者其他自定义的满足条件的对象。

n protocol: 这是一个可选的参数，默认为0,如果设置为 1 或 True，则以高压缩的二进制格式保存持久化后的对象，否则以ASCII格式保存。

# -*- coding: utf-8 -*-

import pickle

# 也可以这样： import cPickle as pickle

obj = {"a": 1, "b": 2, "c": 3}

# 将 obj 持久化保存到文件 tmp.txt 中

pickle.dump(obj, open("tmp.txt", "w"))

#filename=file(‘tmp.txt’,’w’)

#pickle.dump(obj,filename)

# do something else ...

# 从 tmp.txt 中读取并恢复 obj 对象

#filename=file(‘tmp.txt’,’r’)

print obj2

MySQLdb在Python中也就相当于JAVA中MySQL的JDBC Driver，Python也有类似的数据接口规范Python DB API，MySQLdb就是Mysql的实现。操作也比较简单和其它平台或语言操作数据库一样，就是建立和数据库系统的连接，然后给数据库输入SQL，再从数据库获取结果。

1.下载MySql-python:

http://cdnetworks-kr-1.dl.sourceforge.net/project/mysql-python/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz ,

2.解压、编译和安装

Shell> tar -zxvf MySQL-python-1.2.3.tar.gz

Shell> cd MySQL-python-1.2.3

Shell> python setup.py build #编译

Shell> python setup.py install #安装

rom setuptools import setup

ImportError: No module named setuptools

1）wget -q http://peak.telecommunity.com/dist/ez_setup.py

2）python ez_setup.py ( 这一步必然失败,是为了第三步取得url准备的.)

3）wget http://pypi.python.org/packages/2.4/s/setuptools/setuptools-0.6c8-py2.4.egg

3.测试

Shell> python

>>> import MySQLdb

4.Python连接MySQL操作示例：

Shell>cat mysqldb.py

#!/usr/bin/python

import MySQLdb #导入模块，注意大小写！！

#建立和数据库的连接

conn=MySQLdb.connect(host='localhost',user='root',passwd='root',db='test')

#host：Mysql主机地址或名称

#user：连接使用的用户名

#passwd：连接使用的用户名密码

#db：默认打开的数据库

#获取操作游标

cursor=conn.cursor()

#执行SQL

cursor.execute('select * from tab4')

#获得SQL执行返回结果集的第一条记录

row1=cursor.fetchone()

print ‘the first records is:’,row1

#获取5条记录，注意由于之前执行有了fetchone()，所以游标已经指到第二条记录了，也就是从第二条开始的所有记录

print "只获取5条记录:"

results = cursor.fetchmany(5)

for r in results:

print r

#重置游标位置，0,为偏移量，mode＝absolute | relative,默认为relative,

cursor.scroll(0,mode='absolute')

#当使用fetchone()方法是，指针是会发生移动的。所以，若不重置指针，那么使用fetchall

#的信息将只会包含指针后面的行内容。

#实际上，我觉得应该尽量避免移动指针；而应从select语句得到全部结果后，交给python处理比较方便,但我们应该明白该指针的含义。

#获得SQL执行返回的所有结果集，该结果集是以元组数据结构存放，第一条为row[0]

rows=cursor.fetchall()

print ‘the first records is:’,rows[0]

print 'the results of tab4 is:',rows

#用for循环打印结果集

for row in rows:

print row

#关闭连接，释放资源

cursor.close()

conn.close()

Shell> ./mysqldb.py

ysql server version: ((1L, 'sam', 1L), (2L, 'sam2', 2L), (3L, 'sam3', 3L), (4L, 'sam4', 4L))

5.Python对MySQL的数据库其他操作

Python在MySQL中创建数据库newdb,创建数据库表newtab,并向newtab中插入一条、多条记录

Shell>cat newdb.py

#!/usr/bin/python

import MySQLdb

#建立和数据库系统的连接

conn = MySQLdb.connect(host='localhost', user='root',passwd='longforfreedom')

#获取操作游标

cursor = conn.cursor()

#执行SQL,创建一个数据库.

cursor.execute("create database if not exists python")

#选择数据库

conn.select_db('python');

#执行SQL,创建一个数据表.

cursor.execute("create table test(id int, info varchar(100)) ")

value = [1,"inserted "];

#插入一条记录

cursor.execute("insert into test values(%s,%s)",value);

values=[]

#生成插入参数值

for i in range(20):

values.append((i,'Hello mysqldb, I am recoder ' + str(i)))

#插入多条记录

cursor.executemany("insert into test values(%s,%s) ",values);

count = cursor.execute('select * from test')

print '总共有 %s 条记录',count

#获取一条记录,每条记录做为一个元组返回

print "只获取一条记录:"

result = cursor.fetchone();

print result

#print 'ID: %s info: %s' % (result[0],result[1])

print 'ID: %s info: %s' % result

#关闭连接，释放资源

cursor.close();

conn.close();

• 发表于:
• 原文链接http://kuaibao.qq.com/s/20180203A0K7FO00?refer=cp_1026
• 腾讯「云+社区」是腾讯内容开放平台帐号（企鹅号）传播渠道之一，根据《腾讯内容开放平台服务协议》转载发布内容。
• 如有侵权，请联系 yunjia_community@tencent.com 删除。

2022-01-29

2022-01-29

2022-01-29

2022-01-29

2018-01-30

2018-01-30

2018-06-29

2018-06-22

2018-03-30

2022-01-29

2022-01-29

2022-01-29