码迷,mamicode.com
首页 > 编程语言 > 详细

python基础概念

时间:2016-05-24 12:09:25      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:

2016.5.21

1. 一切皆对象:

在python中都是对象,对象类型的赋值类似于 c 语言的指针

2.数字类型

  • decimal:

    将相应的函数改名使用:from decimal import Decimal as D
        eg:D(‘0.3‘)/D(3)
    
    统计运行时间:python -mtimeit -s "from decimal import Decimal as D"
            D(‘1.2‘)+D(‘3.4‘)
            由此可以发现decimal非常地耗费时间
    
  • 常用库:

    dir(math)  
    help(math)  #z:上一页  w:下一页   q:退出
    math:
        import math
        math.pi
        math.sprt(80)
        math.log10(2**1000)
        math.pow(x,y)
        math.factorial(x)   #连乘
    
    random:
        import random
        random.random() #0~1之间的随机数
        random.choice([1,2,3,4])
        random.randint(a,b)     
        random.uniform(a,b)
        random.gauss(mu,lamda)
    
    numpy:
        产生数组和矩阵,正太分布的随机数
        矩阵运算,求逆,转置等
    
    scipy:拟合,线性插值,样条插值,积分,微分... 
    

3.字符串

切片,索引

常用方法集合:

+ * s.upper() s.find(‘f‘) s.replace(‘python‘,‘java‘)  
print "%s like %s" %(‘we‘,‘python‘)

import re:regular expression

^ start
$ end
. except

+ 1-inf
* 0-inf
? 0-1
[] or
{} repeat
[^] not

| or

\w  [a-zA-Z0-9_],  (not)\W
\d  [0-9],  (not)\D
\s  [ \t\n\r\f\v],   (not)\S

\b  word boundary
\B  not \b
\A  input start, ^
\Z  input end, $

*  0~inf greedy
+  1~inf greedy
*?  0~inf non-greedy
+?  1~inf non-greedy

()  group #用于区分域名之类的有帮助
(?P<name>pattern)

等价(re.X:去掉中间的空格,换行符和注释等,还有其他的编译选项):
a = re.compile(r"""\d +  # 整数部分
                   \.    # 小数点
                   \d *  # 小数部分
                """, re.X)
b = re.compile(r"\d+\.\d*")

4.日期和时间

  • datetime:
  • time:

    这个部分暂时不用太细致,之后用到的时候再直接用就可以了

2016.5.22

5.列表

切片,索引,引用

常用操作: 技术分享

6.元组

不可变的列表:不可原处修改

常用操作: 转换tuple 计数count + *

7.字典

key-value:关键字和值之间相对应

常用操作:keys values get update del clear 嵌套

特点:
没有顺序的数据结构,类似于c中的散列表,适合插入查询操作
key为不可变对象

8.文件

常用操作:

open(path,‘r‘)  #r:r w a
read readline write close   

中文支持:
import codecs
f=codecs.open(filename,mode,encoding)

文件操作:
import os
os.path.exists(filename)
os.rename(old,new)

shelve库:

import shelve
D = Shelve.open(file)   #读到字典中

Pickle/cPickle #cPickle更底层所以更快

import cPickle
f = open(file,mode)
cPickle.dump(obj,f) #先入先出
obj = cPickle.load(f)

9.语句表达式

赋值
输入input:raw_input():当作自负串赋给后边的变量
            input():运行输入的内容

3.x 输出:print([obj,...][,sep=‘‘][,end=‘\n‘][,file=sys.std.stdout])

列表解析:
    可以去掉列表中的重复元素
    可以简洁地用语句表达嵌套循环等,并且相应的时间会减少

异常处理:
    raise:自己定义errortype的提示信息
    assert condition,message:条件触发,触发后打印信息(except中打印),并终止程序
    try/except:有异常时执行except
    try/finally:无论如何执行 finally

10.高效做事的函数

函数语法定义:
    def func_name(arguments):
        statement
        return x,y

    x,y = func_name(para)

变量作用域:
    local
    encloding function locals
    global(module)
    build-in(python)

函数作参数:
    把函数作为参数的函数叫做 高阶函数

自带高阶函数:
    filter,map,reduce

2016.5.23

函数式编程

lambda
    用法:lower = (lambda x,y:x if x<y else y) 返回一个函数,简化程序的编写

    calc_dict={
        ‘+‘:lambda a,b:a+b,
        ‘*‘:lambda a,b:a*b,
        ‘-‘:lambda a,b:a-b,
    }
    用法:calc_dict[‘*‘](12,3)
    将函数当作数据来使用

回调 callback

把上面的函数式编程的方式中的 lambda 改为 callback 函数,很符合编程标准了就!

闭包和装饰器

闭包:
绑定外部变量的函数:
    外部变量在内部函数中可以以列表的方式进行访问和改变
    当我们采用两层函数的时候是为了更方便地传递参数

装饰器:
    无嵌套,函数作为返回值
    @一个函数....return:在导入的时候就会被运行
    里面有一定的学问,以后用到的时候慢慢去理解

2016.5.24

//递归

生成器和yield

迭代器:避免重复计算,只有当需要用到的时候才计算出来。惰性计算
    速度简直了,当是大数据的时候,速度可以提升100甚至以上倍数

    用 send 方式传送数据

python基础概念

标签:

原文地址:http://www.cnblogs.com/dongdongdongmian/p/5522830.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!