• 安装与使用
  • 安装目录
  • 环境
  • 包的部署与管理
  • pip
  • egg
  • 基本语法
  • 变量
  • 整数
  • 字符串
  • 列表list
  • 元组tuple
  • 字典
  • 时间日期
  • 面向对象
  • 构造函数
  • 类变量类成员变量
  • 继承
  • 多线程
  • 注意点
  • 常用


Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。
- 解释型 = 不需要编译、链接之类的,直接可以在python解释器中执行;
- 面向对象 = 同c++一样是面向对象
- 动态数据类型 = 声明变量时不需要声明变量的类型。(是不是只有定义变量这一说了)

安装与使用

安装目录

/usr/share/pyshared/

这些库不管是哪个版本的python都能用

/usr/lib/python2.6(2.7/3)

这下面的库,只能是特定版本的python能用

环境

sys.path —— 动态地改变Python搜索路径

import sys  
sys.path.append(’引用模块的地址')  
sys.path.insert(0, '引用模块的地址')

包的部署与管理

pip

可配置源之类的,~/.pip/pip.conf

egg

python的egg文件有点像java中的jar文件,是一个工程打包文件,便于安装部署。

基本语法

变量

整数

字符串

列表list []

函数名

说明

cmp(lst1, lst2)

len()

Max/min(lst)

List(tuple)

tuple to list

方法名

说明

Append(obj)

vs extend(seq)

Count(obj)

Index(obj)

Insert(index, obj)

Remove(obj)

vs pop(obj=lst[-1])

Sort([func])

vs reverse()

元组tuple ()

同于列表,唯有元素不可改。

只有一个值时,需要注意后缀的逗号

t2 = (3)
print t2  #3
t3 = (3,)
print t3  #(3,)

函数名

说明

Cmp(tuple1, tuple2)/len()

Max/min(t)

Tuple(list)

Seq to tuple

字典 {}

函数名

说明

cmp

len

Str()

Type()

方法名

说明

keys()/values()/items()

Items()返回(key,value)元组的list

Copy()

浅拷贝(我的理解是指拷贝了指针的值,但没拷贝指针所指向的资源,亦即两个对象共享某一资源)怎么理解?因为pyton没有指针,所以哪来的浅拷贝???

has_key(key)

返回True/False

get(key, default=None)

setdefault(key, default=None)

update(dict2)

fromkeys(seq[, val]))

clear()

时间、日期

面向对象

类中要经常用self == cpp中的this指针
- 类函数的声明;
- 类函数的调用;

没有用public,private等关键词来标志;

__ 前缀为私有标志
self.__A() 可以调用 self.__B吗? —可以的

构造函数

子类的构造函数定要手动调用基类的构造函数,否则默认是不会调用基类构造的。

class Base(object):
    def __init__(self):
        print "Base created"

class ChildA(Base):
    def __init__(self):
        #老式类的写法;
        Base.__init__(self)

class ChildB(Base):
    def __init__(self):
        #新式类的写法,避免了写基类的名字(在多继承下应该很管用)
        super(ChildB, self).__init__()
print ChildA(),ChildB()

问题:新式类有什么特点??

type(对象)的时候是类名,而非是一个实例。
调用基类的函数可以用super关键字。

类变量、类成员变量

如下:

继承

多线程

thread 有些缺陷,threading是对thread的补充

t1 = threading.Thread(target=fun1, args=('1111111111',))  #args元组中有个逗号
t1.start()

注意点

  • for
  • 只有for.. in.., 没有for(;;)这种步阶
  • 空对象
    None和任何其他的数据类型比较永远返回False
    可以将None复制给任何变量,但是你不能创建其他NoneType对象。
>>> type(None)
<class 'NoneType'>
>>> None == 0
False
>>> None == ' '
False
>>> None == None
True
>>> None == False
False
- if x:  这是True/False判断  
None,  False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()都相当于False
- if x is not None: 这是单独判断x不是None
  • 没有自增、自减 i++ i–

常用

  • sleep

time.sleep(1)

  • 时间截

Print time.ctime()