文档章节

python使用心得

paul2011
 paul2011
发布于 2015/02/06 15:02
字数 623
阅读 32
收藏 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爱好者的盛会PyCon首次在中国举办

由Python软件基金会下的PyCon.Org授权中国办第一次PyCon China Conference。本次大会由GTUG, TopGeek,CPyUG联合举办。PyCon.Org是举办Python语言的国际性社区,在世界各地举办Python大会,...

CodeFires
2011/12/07
463
3
利用python函数的输入、输出定义与时序图相结合,让生活更有趣

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

python达人
2018/05/08
0
0
学习python的一点点心得

最近看到一门语言很是热门,在使用排行榜上不断上升。于是就怀着兴趣学习了一下这门语言--Python。 话说Python,它毕竟不是人尽皆知的东西。整个图书馆关于它的书也是寥寥无几,都在新书库才...

topdogs
2009/07/24
290
0

没有更多内容

加载失败,请刷新页面

加载更多

网络编程

第14天 网络编程 今日内容介绍  网络通信协议  UDP通信  TCP通信 今日学习目标  能够辨别UDP和TCP协议特点  能够说出UDP协议下两个常用类名称  能够说出TCP协议下两个常用类名称...

stars永恒
30分钟前
0
0
二进制相关

二进制 众所周知计算机使用的是二进制,数字的二进制是如何表示的呢? 实际就是逢二进一。比如 2 用二进制就是 10。那么根据此可以推算出 5的二进制等于 10*10+1 即为 101。 在计算机中,负数以...

NotFound403
昨天
2
0
day22:

1、写一个getinterface.sh 脚本可以接受选项[i,I],完成下面任务: 1)使用格式:getinterface.sh [-i interface | -I ip] 2)当用户使用-i选项时,显示指定网卡的IP地址;当用户使用-I选项...

芬野de博客
昨天
2
0
Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注。虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭借阿里中间件团队的背景,还是得到不少...

程序猿DD
昨天
4
0
Java并发编程:深入剖析ThreadLocal

ThreadLocal 的理解 ThreadLocal,很多地方叫线程本地变量,或线程本地存储。ThreadLocal为变量在每个线程中都创建了一个副本,每个线程可以访问自己内部的副本变量。===》解决的问题是线程间...

细节探索者
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部