您的位置:首页 > 编程语言 > Python开发

一个Python程序员的进化

2011-11-17 19:28 387 查看
不久前,在互联网上出现了一篇有趣的文章,讲的是对于同一个问题,不同层次的Python程序员编出的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:          resultresult = result * i          ii = 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)

懒惰的Python程序员
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 专家
fact = lambda x: reduce(int.__mul__, xrange(2, x + 1), 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')

专家级程序员
from c_math import fact  print fact(6)

大英帝国程序员
from c_maths import 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)

企业级程序员
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))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: