菜单

程序员的向上

2019年4月14日 - 2017赌博网站开户送金

转自:http://www.oschina.net/news/15319/evolution-of-a-python-programmer

在综合消息栏中看到这么些帖子,觉得很风趣,转上来,最前面丰盛些自身的知识补遗~~~

==========================================================================================

 

本文是从 The 埃沃lution of a Python Programmer 那篇作品翻译而来。

近年,在互连网上边世了1篇有趣的作品,讲的是对此同一个标题,差别层次的程序员编出的Phthon代码呈现出了差异的风格,代码都很容易,有趣。那篇文章的原有出处在此地,笔者把它整理了一晃,并修改了几处错误。

编制程序新手

def
factorial(x):
  if x == 0:
    return 1
  else:
    return x *
factorial(x – 1)
print
factorial(6)

 

一年编制程序经验(学帕斯Carl的)

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)

 

懒惰的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)

 

大United Kingdom程序员

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

 

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))

lambda使用:

python
lambda是在python中动用lambda来创造匿名函数,而用def创造的措施是著名称的

1 python
lambda会创制贰个函数对象,但不会把这几个函数对象赋给四个标识符,而def则会把函数对象赋值给3个变量。

二 python lambda它只是2个表明式,而def则是3个口舌。

下面是python lambda的格式

lambda x:表达式

lambda表明式在“:”后只好有四个表明式。也正是说,在def中,用return可以回去的也能够置身lambda前边,无法用return再次来到的也不能定义在python
lambda前面。由此,像if或for或print这种话语就无法用来lambda中,lambda1般只用来定义不难的函数。

reduce()函数

reduce(func,seq[,init]),用二元函数func对队列seq中的成分进行处理,每趟处理三个数据项(2个是前次处理的结果,1个是连串中的下三个要素),如此反复的递归处理,最终对全部系列求出3个纯净的重回值。

该函数最多一个参数,第壹个参数为贰元函数,第三个参数必须可迭代,能够未有第八个参数

例如:

reduce(lambda x, y: x+y, [1, 2, 3, 4,
5]) 总结的是1+二+三+4+5

reduce(lambda x, y: x+y, [1, 2, 3, 4,
5], 2) 总计的是二+壹+贰+三+肆+伍

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图