##python基础教程
基础知识
####整数和表达式
- 长整数,后面加L
- 十六进制和八进制,分别为0x与0
####变量
- 变量的定义,不需要类型。直接赋值。
- 变量名只能是字母、数字和下划线。并且不能以数字开头。为什么?
####语句与表达式
- 表达式有值,而语句没有。
####获取用户输入
- input与rawinput。input会假设用户输入的是合法的Python表达式。而raw_input只会把所有输入当原始数据。
####函数、模块
- import导入模块。“模块.函数”
- from 模块 import 导入函数。
- cmath。复数
__future__
####运行脚本
- 通过python 脚本文件名
- Unix标准。pound bang。
#!.#!/usr/bin/env python放在首行,并且讲改脚本加入可执行权限。
####注释
#来注释。
####字符串
""与''没啥区别,需要注意配套使用。- 转义
\用于字符串转义。 - 拼接字符串
+ str与repr的区别。- str把值转化为合理形式的字符串----相当于java的toString
- repr会创建一个字符串,它以合法的python表达式的形式来表示值。---相当于把字符串,转化为代码?
- 长字符串:
""" """可以用于跨多行,并且'',""不需要进行转义。 - 原始字符串:
r"",不会把反斜杠当做特殊字符;但是在需要的时候我们还是需要对引号进行转义;而且反斜杠不能放在字符串结尾。 - Unicode字符串:
u"".python普通字符串在内部是以8位的ASCII码形式存储,Unicode字符串则是存储为16位Unicode字符。注意在3.0里,所有字符串都是Unicode字符串。
###列表和元组
####数据结构
- 序列(序号):列表、元组、字符串、Unicode字符串、buffer对象、xrange对象
- 映射(键值):字典
- 集合:---应该是通过映射来实现的。
####序列
- 定义:每个元素,分配一个序号。序列的元素可以是序列。
- 列表与元组的区别:列表可以修改,元组不能。
- 内建函数,大部分返回的是元组。
- 元素之间通过分号相隔
[1, 2]
####通用序列操作
- 索引。
greeting[0],以0为起点,可以为负数。 - 分片。闭区间。
num[3:6]1. 索引可以置空num[:3]2. 可以设置步长num[0:10:2]步长也可以是负数。 - 加。相同的序列可以相加。相当于列表连接。
- 乘。
[None] * 10 - in。
'x' in 'xw' - 序列长度
len、最大元素max、最小元素min等内建函数
####列表
- 放在
[]里。 - list(操作任何序列)、join(列表)。
- 赋值。分片赋值。
- 删除。
del, 还可以删除变量,字典元素。 - 列表方法。函数与方法不同的定义。
append,count,extend,index,insert,pop,remove,reverse,sort,高级排序sort(cmp)
####元组
- 元组不能修改,字符串也是一样
- 用逗号分割一些值,自动创建元组,注意不需要括号
1, 2, 3就创建了元组(1, 2, 3) - 大部分放在
()里。即使是只有一个元素,,是必须的。 tuple函数,把一个序列转化为一个元组。- 存在的意义: 1. 元组可以做键值 2. 内建函数或方法,会返回元组。
####字符串
- 字符串是序列。可以使用序列的一切操作。
- 格式化字符串。用
%,左侧用格式化的字符串,右侧放希望格式化的值。print "Hello %s!" % ("world",). 1. 格式化的时候,只有元组和字典可以格式化一个以上的值。 2. %s, s表示值会被转换为字符串,如果不是字符串,会用str函数转化为字符串。 3. string模块里的Template.模版字符串,另外一个格式化字符串的方法。 - 字符串方法
1. 字符串常量
string.digits,string.letters2.find,replace,translate,join,split
####字典
- 形式
{'Alice':'1234', 'Beth':'4888'}键与值,以:隔开; 键值对(称为项),以,号隔开,外面用{}. - dict类型。
dict(name = 'Alice', age = 42) - 字典基本操作。 1. 键可以为任何不可变类型。包括字符串和元组。 2. 自动添加。如果起初键不存在,会自动建立新的项。 3. in。
- 用字典 格式化字符串。
"My name is %(name)s" % {'name': 'Alice'} - 字典方法
1.
clear,copy,get,has_key,update,items,keys,values
####其他
as语句from math import sqrt as foobar- 序列解包。
- 语句块。代码前放置空格,同一代码块,每行缩进同等量,并且以
:标示开始。 - 被解释器看做假的有
False,None,0,"",(),[],{},其他看作为真。bool可以用于转换。 ==与is。is表示的是不是同一个对象,一个地址。- 断言
assert - xrange与range。 xrange一次只创建一个数。
- 迭代工具:itertools模块。zip函数,并行迭代。
- 编号迭代:enumerate函数
reversed与sorted,作用于任何序列或科迭代的对象上,返回修改后的版本。- 循环中的else语句。
- 列表推导式:利用其他列表创建新列表,类似与for。
[x*x for x in range(10) if x %3 ==0] - 占位符
pass,del删除名称,exec、evalin <scope>命名空间,保护安全。eval有返回值
####抽象
callable(func)hasattr(func, __call__)判断该函数可以调用。- 文档字符串:
__doc__用于查看。函数的开头写下的字符串,它就作为函数一部分进行存储。要善于利用help函数 - 函数:python函数肯定有返回值。return只起到接触函数的作用。即使没有接返回值,就当作返回
None - 参数
1. 传的参数相当于c里面的引用。
2. 位置参数:实參的位置很重要。
3. 关键字参数:可以提供参数默认值
def hello(greeting='hello', name='world')4. 收集参数:*param收集位置参数,**params收集关键字参数.但注意位置参数要放在关键字参数前面 5. 翻转参数:def add(x, y): return x+yadd(*(1,2)) - 作用域:
vars()返回作用域(命名空间)。 1.globals()locals()分别返回全局和局部作用域。global x声明全局变量。 2. 嵌套作用域,外层函数返回内层函数。 - 递归函数:
- 总结:
1. 函数可以分配给变量,作为参数传递,以及从其他函数中返回
2. functools模块。
mapfilterreduce3.lambda创建匿名函数
####python的对象系统
- 创建自己的类。
__metaclass__与class, 方法定义的时候,第一个参数,为self.def setName(self, name) - self参数,是函数与方法的区别所在
typeisinstanceissubclass- 私有。方法前加
__,翻译成ClassName_functionName - 所有位于class语句中的代码都在特殊命名空间内执行。类的定义其实就是执行代码块。
class childClass(superClass)继承父类。特殊特性__bases__,并且支持多重继承。hasattrcallablehasattr(x, '__call__'),getattr,setattr1.__dict__2. inspect模块__init____del__构造函数与析构函数。super函数。__len__(self),__getitem__(self,key),__setitem__(self,key, value),__delitem(self,key)- property函数。
property(getSize,setSize) __get__,__set__,__del__实现property的工作原理。- 类方法。参数
cls,或装饰器。 __getattr____setattr____delattr____iter__
####模块
__name__与__main__- “init.py”,定义为包。
- 探究模块
dic函数,__all__ help,__doc__,__file__查看模块内容。- sys, os, fileinput, sets, time, random, shelve, re, functools, difflib, hashlib, csv, timeit, profile, trace, datetime, itertools, logging, getopt, optparse, cmd