文档章节

python使用心得

paul2011
 paul2011
发布于 2015/02/06 15:02
字数 623
阅读 30
收藏 0
  • ipython 自动补全,方便调试的交互式命令行; ipython -i xx.py 执行后进入命令行;
  • pip 是easy-install的改进版,用法类似,都是python自带的管理工具;python3自带pip;
  • python是能看到源码的脚本语言
  • python是跨平台的,一处编码,到处运行~
  • python的解释器有很多,官网的是Cpython,顾名思义,使用C语言写的;另Jyhton和IronPython可以把python代码编译成java和.net的字节码
  • dict查询速度快,原理是dict内部能根据key计算出value的内存地址!相比list查找速度很快,但会占用大量内存空间!
  • dict.get(a[,b]); if a not in dict,return b [default None],dict.setdefault(key,value)
  • python基本数据类型: int,float;boolen;str; None;
  • 数据结构:list;tuple;dict;set
  • 不可变对象:str,tuple
  • 列表生成式[x*x for x in range(10) if x%2]
  • @classmethod和@staticmethod都可以通过类访问,但后者不能被子类覆写!

执行语句(每次运行前都会编译成字节码,耗时耗力,可以先编译    cpl=compile(str);eval(cpl);    )

  • eval(str,globals.locals);
  • exec str [in globals,locals];
  • execfile(str,globals.locals);

闭包函数的变量绑定机制:

内部函数的常量是在调用时才会绑定,这事要注意 循环赋值生产函数,比如

def gen_func():
    """
     结果很诡异
    """
    return [lambda x:x*i for i in range(4)]

print [func(2) for func in gen_func()]   # [6,6,6,6]

性能问题

  • 内置测时模块 timeit; timeit.timeit和timeit.repeat区别在于repeart多一参数,repeat=重复次数;还封装了TImer class,包含上诉2个方法
  • 也可以自己实现上下文管理, 实现__entry__;__exit__;即可;
  •  

生成器

  • 注意send可以直接返回生成器!演示代码如下:
#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-

def send_when_iterate(max):
    """
    迭代中send,会直接返回到迭代器
    eg:
    send_when_iterate(5)
    >>5,2,1,0
    
    :param max: 最大值
    :return: None
    """
    def countdown(max):
        print 'Count down from', max
        while max>=0:
            newvalue = yield max
            # yield max
            print 'in: ', max
            # max -= 1
            if newvalue is not None:
                max = newvalue
            else:
                max -= 1
    
    c = countdown(5)
    for x in c:  # 调用c.next()
        print x
        if x == 5:
            c.send(3)  # 直接返回到迭代器,继续执行!
        print 'out2: ', x
  • 函数返回值是yield; (i for i in range(10)); 2种生成器
  • 迭代完毕后,触发StopIteration异常
  • close()手动关闭生成器;
  • next()下一个元素,取得后不可逆
  • list(generator)遍历完generator,此时next()会触发StopIteration

python2.x 坑:

  • 单个元组(1,)
  • json dumps-loads后,int型会转化为str
  •  

© 著作权归作者所有

共有 人打赏支持
paul2011
粉丝 3
博文 32
码字总数 13560
作品 0
朝阳
程序员
加载中

评论(3)

paul2011
paul2011
DAL(data access layer)-BLL(business logic layer)-USL(user show layer)
paul2011
paul2011
包一定要有__init__.py文件,空文件也行; 不然导入包内模块会报ImportError;
避免相互调用! 通过业务分层解决: meta(DAL) -> srv->web_srv
paul2011
paul2011
one genius: https://github.com/rainyear?tab=repositories
(转)Python中第三方模块的使用心得

前面已经说了,其实学习Python的过程,很多时候就是在学习如何使用第三方模块,完成自己需要的功能。 关于Python的第三方库类库,其实网上很多很多相关资料。 其中,官网的Python库:Python ...

Dyllian
2013/05/22
0
0
python小例子之8 -- decorator的使用

主题: decorator的使用 环境: winxp pro + sp2 + python2.5 备注: 请注意,凡是在源代码文件中使用了中文字符,请最好保存为utf-8格式 本文与另外一篇blog文章内容相关:python中如何简单...

EricScott
2007/11/01
0
0
利用python函数的输入、输出定义与时序图相结合,让生活更有趣

写在前面 1. 重点是思路交流,利用python函数的输入、输出定义与时序图相结合,让流程更加的简洁、清晰。该方法不局限于工作,同样适用于学习笔记、恋爱心得...等等只要存在个体交互的活动。...

python达人
05/08
0
0
使用python进行数据的采集 编辑 删除

搞了十多年的程序,最近转行做网站,经过一番的调查研究,最终选择了美女图片站http://www.gg4493.cn。 这就带来了一个问题,必须要到网站各大美女站点进行图片采集,之前都是采用java进行数...

yangjiyue0520
2017/11/02
0
0
python学习心得之资源对比

由于我报了阿里云的人工智能专业课程,所以python不得不学。 之前看阿里云课程里的python教学视频,看了两节,讲得虽然易懂,但是过于啰嗦,而且呢视频比文字学起来肯定要慢。 因为我喜欢比较...

天道99
07/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Coding and Paper Letter(三十九)

资源整理。 1 Coding: 1.Python库benchmark rio s3,用于在访问S3上的文件时对Rasterio / GDAL的多线程性能进行基准测试的工具。 benchmark rio s3 2.Pangeo-Binder Cookiecutter模板。 cook...

胖胖雕
27分钟前
0
0
Promise 对象

Promise(承诺) 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供...

简心
30分钟前
0
0
让UI设计师崩溃的瞬间,你经历过哪些?

隔行如隔山,这句话人人耳熟能详,但其实隔行并不可怕,大家各谋其事,各尽其职,倒也互不打扰,真正可怕的是,是内行还要受外行指点江山,而最难的部分,便是那沟通。流畅的沟通,和声细语,...

mo311
31分钟前
1
0
python进制转换

#进制转换print(bin(10)) #十进制转换成二进制print(oct(10)) #十进制转换成八进制print(hex(10)) #十进制转换成十六进制print(int('1010',2)) #二进制转十进制print(int(...

fadsaa
42分钟前
3
0
syntax error near unexpected token

最近不断重复在虚拟机CentOS测试安装gitlab,因为gitlab有一个脚本需要饭强才能下载,于是我先在windows下载好再上传到虚拟机,可是执行脚本的时候提示“syntax error near unexpected toke...

W_Lu
51分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部