菜单

一点资讯程序员的开拓进取

2019年4月7日 - 一点资讯

转自: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)

 

大英国程序员

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会创立一个函数对象,但不会把那个函数对象赋给1个标识符,而def则会把函数对象赋值给2个变量。

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

下面是python lambda的格式

lambda x:表达式

lambda表明式在“:”后不得不有一个表明式。也正是说,在def中,用return能够重回的也足以放在lambda后边,无法用return重回的也不可能定义在python
lambda前面。因而,像if或for或print那种话语就不可能用来lambda中,lambda①般只用来定义简单的函数。

reduce()函数

reduce(func,seq[,init]),用二元函数func对队列seq中的成分举办拍卖,每趟处理八个数据项(三个是前次处理的结果,七个是系列中的下叁个要素),如此频繁的递归处理,最终对全体类别求出一个十足的重返值。

该函数最多一个参数,第八个参数为二元函数,第一个参数必须可迭代,能够没有第7个参数

例如:

reduce(lambda x, y: x+y, [1, 2, 3, 4,
5]) 总计的是一+2+三+肆+五

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

相关文章

发表评论

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

网站地图xml地图