您的位置:首页 > 编程语言 > Python开发

python基础笔记

2014-03-19 15:56 344 查看
hello world
两种方式使用python
解释器方式
程序文件方式
组织头的作用
#!/use/bin/python vs #!/usr/bin/env python
文件编码设定
#coding:utf8
#coding:cp936
python hello.py 和 ./hello.py的区别
数据类型:
数值型:十进制 十六进制 八进制 二进制
整数,浮点数
基本运算:
+
-
*
/
%
//
字符串型:
三种形式
+运算

变量:
变量的作用
变量是引用
python是强还是弱类型??

赋值语句的作用
赋值语句有返回值吗?

input vs raw_input, print使用

猜数游戏
import 的作用
random模块
random.randint()作用
while语句的语法,执行逻辑
语句块的概念--缩进
布尔型数据
布尔数据的运行
and
or
not
if 语句的使用

猜数游戏的逻辑,对应代码的实现
成绩分类判断
if的嵌套使用
if嵌套逻辑注意--不要重复判断
不要在处理中混杂不应有的输出

数7游戏

龙之国度游戏
sleep()使用
掌握流程控制的使用

函数
语法形式
变量的作用域
局部变量
全局变量
参数
函数练习
1+ ... +n
1* ... *n
斐波那契数列
求质数

list数据类型
list基本操作
文件操作
成绩管理
实现:成绩的录入,显示,最大值,最小值,平均值
交换界面(选择菜单方式)

list
删除数据。。。

tuple -- 元组
形式:
(a1, a2, ...)
元组中的分隔符 “,”
空元组()
单数据项 (3,)
省略()
list几乎一样 --- 不可变

函数的返回值,参数,解包赋值
x, y, z = 1,2,3
快速交换变量: x,y = y,x

元组:
a = (12, 23)
a = 34, 56
??元组的不可变
a = ([1,2], [3,4])
a[0].append(123)
??元组的不可变

序列 : list, tuple, str
序列共有的方法:
len
索引, 遍历
切片(分片)
[start:stop:step]
+
*

dict
通讯录
name, tel, addr, birthday
[['alne', 67],['tom',78]]
key, value
形式:
{}
{key1:value1,key2:value2,..... }

关于初生日前:
import datetime
生成datetime数据
datetime.date.today()
datetime.datetime.now()
datetime.date(y, m, d)
datetime.date.today()
year
month
day
hour
mi..
sec...

保存:
暴力手段---str --- file --- read -- eval
json:
python数据--json对象--file --read --python数据
import json
json.dumps --- json.loads

字符串的格式化输出

dict无序的
dict.keys -- list --- sort
dict.items ------- list [(key, value)]

list 复合型 -- sort, 不同的key--- key=回调函数
回调函数:
自定义def
lambda -- 匿名函数
lambda 参数 : 表达式

sorted
filter
map
dict.formkes(S, [v])
zip

key取值, 不存在 。。。
key in D
get
False
None
False
zero of any numeric type, for example, 0, 0L, 0.0, 0j.
any empty sequence, for example, '', (), [].
any empty mapping, for example, {}.

通讯录:
查询 输入key --- keyerror

异常处理
try:
执行代码
except:
异常处理代码

如何去掉重复的记录 --- set

通讯录:
输入:
记录是否重复--检查点
中文
birthday --- str --- datetime -- age
显示:
格式化输出 --- 元组 ---> dict -->Template
根据姓名排序
根据出生日期排序输出
查询:
姓名
保存:
json --------------> json??? 规则
可能出现的异常,处理

解析列表
[item1, item2 , .....]

编码:
ascii
cp936---gbk--ansi
utf8

str应用: 保存, 显示
unicdoe:处理,建议使用unicode,
file--readin --->str -----> unicode--保存(显示)--->str
str ----------> unicode
decode(str类型)
import codecs
codecs.open(filename, 'r', 'utf8')

unicode --------------> str
encode(str类型)

DB
关系型-- mysql, mssql , oracle,db2, postgres
非关系:redis, mangodb
mysql
install
mysql
mysql-server
mysql-devel
service mysqld start
mysql root口令丢失--

使用:
1 连接
mysql -u root -pXXXX -h host
2 database操作
创建db
create database dbname default charset utf8;
查看:
show databases;
删除db
drop database dbname;
使用(进入)db
use dbname

3 table
创建表
范式(1, 2, 3)
txl(id, name, sex, tel, birthday)
id int
sex bitint
tel char
birthday datetime
primary key
创建表:
create table txl (id int auto_increment primary key, name char(10), sex bit(1), tel char(16), birthday date);
添加字段:
alter table txl add name char(10) after id;
查看表结构:
desc tablename;
show create table tbname
删除表:
drop table txl;
4 记录的操作:
增:
insert into tbname (列1,列2,...) values(值1,值2,....)
insert inot tbname values(列.....)
e.g:
insert into txl (name, sex, tel, birthday) values('alen', 1, '88888888', '1990-10-24');
查:
简单查: select * form txl;
select * from txl where name = '张三'

select select distinct 查询字段
order by asc | desc
from ......
limit 起点, 数量
group by --- select 中字段要求: 分组字段 聚集函数(count, max, min,avery)
having condition

修改:
update tbname set 列=值 where 条件
删除:
delete from tbname where condition;

索引:
create index indexname on table (列)

python db
1 MySQLdb
2 连接
conn = MySQLdb.connect(host, user, passwd , db, charset, port)

3 cursor = conn.cursor()
4 cursor.execute(sql)
cursor.execute(sql, param) --- 简单, 安全

事务处理的:conn.commit()
5
cursor.close()
conn.close()

完成通讯录
数据保存在db中

包,模块:
模块: py文件
from 模块 import
包:
目录
__init__.py
1 表示对应的目录是python的包 from a.b.c. import
2 导入对应包,自动执行。

sys.path
sysl.path.append('..')
form ..
环境变量export PYTHONPATH

__name__ :
模块直接执行 __main__
调用执行: 模块名

pop--proc....

OOP
面向过程: 算法 + 数据
面向对象: 数据 + 算法
数据 对数据的操作

人:
属性:***号, 姓名,性别, 出生日期,。。。
方法:说话, 玩, 。。
描述:--- 类 --- 数据类型 int--- 实例化--->对象 1000

类定义:
class 类名(object):
类体
类体:成员
属性:类属性, 成员属性
方法:类方法, 成员方法, 静态方法

成员方法:
成员---实例化对象
def 方法名(自身对象, *args, **kwargs):
位置参数第一个表示对象自身,必须有
成员属性:
成员方法: self.成员属性
可以通过对象去访问:
对象的两种形式:
实例化出来的对象: zhsan.name -- 类外
self :类内
建议:通过成员方法去修改,访问成员属性

类属性:
直接在类体中定义的属性
类属性使用:
类对象(类)可以访问,修改

类方法:
def 类方法名(类对象,。。。。)

类方法的使用:
类对象调用类方法
实例对象“可以”调用类方法
类对象 --- 调用成员方法 ???? --- 不能

成员方法:
自定义的成员方法:
系统内置的成员方法:名称确定, 执行在一定的环境下,自动调用执行:
__init__(self, ...)
对象的初始化方法:当对象创建后,执行的第一个方法
初始化对象时,参数传递
__del__(self, ...)

del 操作--删除变量 ,不会删除对象实体。
__str__(self, ...)

self, cls
成员方法内 访问类成员
self.类成员 ---->> 类对象.类成员
静态方法:
普通函数,放在类中,访问时,通过类对象去访问
@staticmethod
def f():

面向对象--封装

继承
父类的一切 ---
子类中添加新成员
添加__init__,如何调用父类成员;
父类方法
方法一: 父类对象调用父类中的方法--参数需要提供self

方法二: super(基类, self).父类方法( )
--->不需要提供self,cls提供
--->基类 --- 当前子类

单例模式:
类实例化--多次实例化
Db --- connnect
方法一: 代码避免
方式二:
__new__()
思路:
创建对象前,先判定对象是否存在,有,使用, 没有,创建
类属性 ---

__init__ :
子类的__init__中,第一条命令,调用父类的__init__

override: 重新实现父类的方法-- 覆盖
overload: 重载,方法的参数不同时,执行的效果不同
def f(*args, **kwargs)
万能参数:

继承:
直接继承使用
添加新的属性, 方法
调用父类的方法

权限:
私有:下线 _ 双下线__

通讯录:
pop:

oop实现:

Address_book:
属性
方法

数据:记录
操作:增 删 改 查

数据保存 -- db

class Address_Book(object):

##txl_list =
def __init__(self):
#db 的连接

def __del__():
#释放

def add_txl(self, name, tel):
cussor.execute(sql,param)

def get_by_name():

def get_by_addr

def get_all()

def delete():
address_book = Address_book()

re正则表达式 Regular expression operations --- String Services

import re

re.findall

模板 组成:
普通字符
正则字符

正则字符:
\d: 单个数字
\w: 单个字符
\W:
\s:
\S
. : 任意一个字符

{m,n}
* : 零或多次
? :零或一次
+ :一次或多次

分组:
() :分组
-- 先匹配--获取分组数据
向后引用

[asdfsadf]:选择其中任意一个
[^asdfsadf]:不选择其中任意一个
^:开头
$:结尾

re.match() 从头匹配

效率:
re.compile

小爬
urllib.urlopen()

系统:
os
os.abspath
os.path.dirname
os.path.join

fork()
sys
sys.path
os.system
subprocess
call
Popen

OOP--- 通讯录
re
分析页面:
标题
文章

执行os命令,下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 基础