1. 装饰器与函数式Python(译)

    原文:Decorators and Functional Python

    译者:youngsterxyf

    装饰器是Python的一大特色。除了在语言中的原本用处,还帮助我们以一种有趣的方式(函数式)进行思考。

    我打算自底向上解释装饰器如何工作。首先解释几个话题以帮助理解装饰器。然后,深入一点探索几个简单的装饰器以及它们如何工作。最后,讨论一些更高级的使用装饰器的方式,比如:传递可选参数给装饰器或者串接几个装饰器。

    首先以我能想到的最简单的方式来定义Python函数是什么。基于该定义,我们可以类似的简单方式来定义装饰器。

    函数是一个完成特定任务的可复用代码块。

    好的,那么装饰器又是什么呢?

    装饰器是一个修改其他函数的函数。

    现在在装饰器的定义上进行详述,先解释一些先决条件。

    函数是一等对象

    Python中,所有东西都是对象。这意味着可以通过名字引用函数,以及像其他对象那样传递。例如:

    def traveling_function():
        print "Here I am!"
    
    function_dict = {
        "func": traveling_function
    }
    
    trav_func = function_dict['func']
    trav_func()
    # >> Here I ...
    Tagged as : Python 翻译
  2. Python:字典剧本(译)

    原文: Python: The Dictionary Playbook

    译者: youngsterxyf

    我经常碰到关于Python中字典的各种样板代码,因此我决定在此展示一些,并分享完成相同操作的更加简洁的方式。

    上演: 字典剧本

    playbook

    1. “你在吗?”

    这个相当简单,但不可错过 - 找出某个键(key)是否存在于字典中。

    蹩脚的版本

    dct.has_key(key)
    

    Pythonic的方式

    key in dct
    

    2. “尤达测试”(译注:尤达的意思见yoda)

    对于那些掌握了“你在吗”剧本的程序员来说,这通常是另一个简单但是令人讨厌的事情。它不仅仅可用于字典数据类型,但非常普通。

    干这事,你必须不能这样

    not key in dct
    

    英语,你会说吗?

    key not in dct ...
    Tagged as : Python 翻译
  3. 一行Python代码定义树(译)

    原文:One-line Tree in Python

    译者:youngsterxyf

    使用Python内置的defaultdict可以轻松定义一棵树:

    def tree(): return defaultdict(tree)
    

    就这样!

    这段代码简单地说明一棵树是一个字典,其缺省的值(译注:与键对应的值的概念)是树。

    (如果你正随着我写下代码,请先确保 from collections import defaultdict

    (还有:Hacker News读者@zbuc指出这种方法被称为自动唤醒。Cool!)

    示例

    JSON形式

    现在我们可以创建JSON式的嵌套字典,而无需显式创建子级字典——当我们引用它们,就会神奇地自动产生:

    users = tree()
    users['harold']['username'] = 'hrldcpr'
    users['handler']['username'] = 'matthandlersux'
    

    我们可以使用 ...

    Tagged as : Python 翻译
  4. pi的一种并行算法

    我们都知道圆周率pi的值是3.141592653...,那么这个值是怎么算出来的呢?一种方式是通过某种方式算出圆的面积或者周长,然后根据公式$ S = pi \times r^2 $(或$ L = 2 \times pi \times r $)算出pi的值。但如何用计算机通过某种算法计算而得?有没有并行的算法?

    Introduction to Parallel Programming and MapReduce一文中介绍了一种基于概率的并行算法---假设有个正方形,里面有个內切圆。

    sample pic

    设内切圆的半径为$ r $,则

    正方形的面积为$ S_z = 4r^2 $

    内切圆的面积为$ S_y = pi \times r^2 $

    那么$ pi = \frac{ S_y }{ r^2 } = \frac{ S_y }{ S_z ...

    Tagged as : 算法 并行 Python
  5. Python装饰器入门(译)

    原文: A primer on Python decorators

    翻译: youngsterxyf

    Python允许你,作为程序员,使用函数完成一些很酷的事情。在Python中,函数是一等对象(first-class object),这就意味着你可以像使用字符串,整数,或者任何其他对象一样使用函数。例如,你可以将函数赋值给变量:

    >>> def square(n):
    ...     return n * n;
    >>> square(4)
    16
    >>> alias = square
    >>> alias(4)
    16
    

    然而,一等函数的真正威力在于你可以把函数传给其他函数,或者从其他函数中返回函数。Python的内置函数map利用了这种能力:给map传个函数以及一个列表,它会依次以列表中每个元素为参数调用你传给它的那个函数,从而生成一个新的列表。如下所示的例子中应用了上面的那个square函数:

    >>> number = [1, 2, 3, 4, 5]
    >>> map ...
    Tagged as : Python 翻译
  6. Python FAQ:Web开发(译)

    原文: Python FAQ: Webdev

    译者: youngsterxyf

    Python FAQ的一部分

    我只会PHP,那该怎么用Python来编写一个Web应用呢?

    这是一个相当复杂的问题,甚至很容易就能写一本书来探讨Web开发与Python,以及如何关联两者,所以我很想先把这个问题放一放。但是鉴于我刚相当粗暴地捣毁了PHP,明智些,还是回答这个问题吧,宜早不宜迟。

    最直接简单的回答是:不要再读了,马上使用Flask着手构建一样东西。然而,我觉得还有更好回答。

    本文并非是教程。也许将来我会写一篇,但现在已经存在大量的教程了,我认为你可以阅读那些文档。相反,本文是为新手而写的Python Web开发相关事情的概览。

    起步

    显然,你需要安装Python。确保使用Python 2,而不是3。Python 3有一些向后不兼容的改变,并非所有的库都更新过。

    安装Python库,可以考虑使用 pip 。(如果你在使用类Unix操作系统,那么也许可以通过系统包管理器安装pip,否则使用 easy_install ...

    Tagged as : Python 翻译
  7. Python对象创建过程(译)

    原文: Python object creation sequence

    译者: youngsterxyf

    [本文讨论的Python版本为3.x]

    本文旨在探究Python中新对象的创建过程。正如我在前一篇文章中所解释的,对象的创建只是调用可调用对象的一种特例。考虑这样的一段Python代码:

    class Joe:
        pass
    
    j = Joe()
    

    当j = Joe()被执行时发生了什么呢?Python把它看作对可调用的Joe的一次调用,并且将它路由到内部函数 PyObject_Call ,将Joe作为PyObject_Call的第一个参数。 PyObject_Call 根据其第一个参数的类型抽取这个参数类型的 tp_call 属性。

    那么,Joe的类型是什么呢?无论何时我们定义一个新的Python类(class),它的类型都是 type ,除非我们明确地为它指定一个 metaclass。因此,当 PyObject_Call 试图查看Joe的类型,将得到类型 type ,然后选择 typetp_call 属性 ...

    Tagged as : Python 翻译
  8. Python学习路线(针对具备一定编程经验者)

    相比C,C++,JAVA等编程语言,Python是易学的。但要想深入地理解Python,并熟练地编写Python风格的Python代码。我想还是有一长段路程要走的。下面即是我的一点经验总结,主要是为了整理自己学习的思路。

    1. 花1-2天的时间阅读一本好的Python入门书籍,并在亲手实践书中的代码。推荐入门书籍:《A byte of Python》(中文翻译《简明Python教程》)或《Practical Programming:An Introduction to Computer Science Using Python》(中文翻译《Python实践教程》)或者其他的比较薄的入门书籍。
    2. 抛开书籍,用Python去写一切你想写的程序。这时最好的参考文档即为:(1).Python命令解释器中的help(),dir()辅助方法;(2).Python官网文档:http://docs.python.org/ 。遇到不清楚的地方就用这两个方法查,再不行就去google一下。
    3. 两三个月之后,积累一点的代码量,再重新找本讲解比较详细的书,重新梳理一下自己对Python的理解 ...
    Tagged as : Python

Page 2 / 2