python基础笔记

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)