Python程序员的进化

 从 酷壳 - CoolShell.cn 作者:耗子

有 92 人喜欢此条目

以前本站发布过一篇《程序员的进化》,以一种幽默的代码展现方式调侃了程序。下面这篇是关于Python程序员的。以阶乘为例,很有意思。

新手程序员

def factorial(x):

    if x == 0:

        return 1

    else:

        return x * factorial(x - 1)

print factorial(6)

第一年的刚学完Pascal的新手

def factorial(x):

    result = 1

    i = 2

    while i <= x:

        result = result * i

        i = i + 1

    return result

print factorial(6)

第一年的刚学完C语言的新手

def fact(x): #{

    result = i = 1;

    while (i <= x): #{

        result *= i;

        i += 1;

    #}

    return result;

#}

print(fact(6))

第一年刚学完SICP的新手

@tailcall

def fact(x, acc=1):

    if (x > 1): return (fact((x - 1), (acc * x)))

    else:       return acc

print(fact(6))

第一年刚学完Python的新手

def Factorial(x):

    res = 1

    for i in xrange(2, x + 1):

        res *= i

    return res

print Factorial(6)

爱偷懒的程序员

def fact(x):

    return x > 1 and x * fact(x - 1) or 1

print fact(6)

更懒的 Python 程序员

f = lambda x: x and x * f(x - 1) or 1

print f(6)

Python 专家

import operator as op

import functional as f

fact = lambda x: f.foldl(op.mul, 1, xrange(2, x + 1))

print fact(6)

Python 黑客

import sys

@tailcall

def fact(x, acc=1):

    if x: return fact(x.__sub__(1), acc.__mul__(x))

    return acc

sys.stdout.write(str(fact(6)) + '\n')

专家级程序员

import c_math

fact = c_math.fact

print fact(6)

英语系的专家级程序员

import c_maths

fact = c_maths.fact

print fact(6)

Web 设计者

def factorial(x):

    #-------------------------------------------------

    #--- Code snippet from The Math Vault          ---

    #--- Calculate factorial (C) Arthur Smith 1999 ---

    #-------------------------------------------------

    result = str(1)

    i = 1 #Thanks Adam

    while i <= x:

        #result = result * i  #It's faster to use *=

        #result = str(result * result + i)

           #result = int(result *= i) #??????

        result str(int(result) * i)

        #result = int(str(result) * i)

        i = i + 1

    return result

print factorial(6)

Unix 程序员

import os

def fact(x):

    os.system('factorial ' + str(x))

fact(6)

Windows 程序员

NULL = None

def CalculateAndPrintFactorialEx(dwNumber,

                                 hOutputDevice,

                                 lpLparam,

                                 lpWparam,

                                 lpsscSecurity,

                                 *dwReserved):

    if lpsscSecurity != NULL:

        return NULL #Not implemented

    dwResult = dwCounter = 1

    while dwCounter <= dwNumber:

        dwResult *= dwCounter

        dwCounter += 1

    hOutputDevice.write(str(dwResult))

    hOutputDevice.write('\n')

    return 1

import sys

CalculateAndPrintFactorialEx(6, sys.stdout, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)

公司里的程序员

def new(cls, *args, **kwargs):

    return cls(*args, **kwargs)

class Number(object):

    pass

class IntegralNumber(int, Number):

    def toInt(self):

        return new (int, self)

class InternalBase(object):

    def __init__(self, base):

        self.base = base.toInt()

    def getBase(self):

        return new (IntegralNumber, self.base)

class MathematicsSystem(object):

    def __init__(self, ibase):

        Abstract

    @classmethod

    def getInstance(cls, ibase):

        try:

            cls.__instance

        except AttributeError:

            cls.__instance = new (cls, ibase)

        return cls.__instance

class StandardMathematicsSystem(MathematicsSystem):

    def __init__(self, ibase):

        if ibase.getBase() != new (IntegralNumber, 2):

            raise NotImplementedError

        self.base = ibase.getBase()

    def calculateFactorial(self, target):

        result = new (IntegralNumber, 1)

        i = new (IntegralNumber, 2)

        while i <= target:

            result = result * i

            i = i + new (IntegralNumber, 1)

        return result

print StandardMathematicsSystem.getInstance(new (InternalBase, new (IntegralNumber, 2))).calculateFactorial(new (IntegralNumber, 6))

 

摘自:来源