文章目录
  1. 1. Python 程序员的演化
    1. 1.1. 编程新手
    2. 1.2. 一年编程经验(学Pascal的)
    3. 1.3. 一年编程经验(Python)
    4. 1.4. 懒惰的Python程序员
    5. 1.5. 更懒的Python程序员
    6. 1.6. Python 专家
    7. 1.7. Python 黑客
    8. 1.8. 专家级程序员
    9. 1.9. 大英帝国程序员
    10. 1.10. Web 设计人员
    11. 1.11. Unix 程序员
    12. 1.12. 企业级程序员
  2. 2. 总结

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)

一年编程经验(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 设计人员

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 程序员

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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)

企业级程序员

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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)) //面向对象!

总结

我好像是第三种程序员哦 !使用一种语言完成基本的功能,这个相信大家都可以完成,并且完成的都很好,不过程序写的漂亮不漂亮还是另外一回事, 加油, to be beautiful  ... 
文章目录
  1. 1. Python 程序员的演化
    1. 1.1. 编程新手
    2. 1.2. 一年编程经验(学Pascal的)
    3. 1.3. 一年编程经验(Python)
    4. 1.4. 懒惰的Python程序员
    5. 1.5. 更懒的Python程序员
    6. 1.6. Python 专家
    7. 1.7. Python 黑客
    8. 1.8. 专家级程序员
    9. 1.9. 大英帝国程序员
    10. 1.10. Web 设计人员
    11. 1.11. Unix 程序员
    12. 1.12. 企业级程序员
  2. 2. 总结