開發者的發展 一個 Python 程序員的進化

不久前,在互聯網上出現了一篇有趣的文章,講的是對於同一個問題,不同層次的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))

摘自:http://dev.yesky.com/170/33859170.shtml

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章