1. python周刊-第70期(译)

    原文:issue 70 of Python Weekly

    译者:youngsterxyf

    文章,教程和讲座(Articles, Tutorials and Talks)

    使用Python Hacking超级马里奥(Hacking Super Mario Bros. With Python)

    This post shows how you can use matplotlib's animation tool to create animated gifs based on Super Mario Bros in Python.

    该文展示如何使用matplotlib的动画工具使用Python创建超级马里奥的动画效果gif图。

    实现一个Python OAuth 2.0 提供方 - 第2部分 …

  2. 装饰器与函数式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 …
    标签: Python 翻译
  3. 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 …
    标签: Python 翻译
  4. 一行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'
    

    我们可以使用 …

    标签: Python 翻译
  5. 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 …

    标签: 算法 并行 Python
  6. 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 …
    标签: Python 翻译
  7. 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 …

    标签: Python 翻译
  8. 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 属性 …

    标签: Python 翻译

Page 2 / 3