【100 种语言速成】第 1 节:Python(1)

本文介绍了Python编程中的FizzBuzz问题实现,展示了列表推导式和装饰器的用法,强调了Python的特性如无限精度整数,并提到数据科学中的JupyterNotebook和Python生态。同时,作者分享了面向不同水平的学习资源链接。
摘要由CSDN通过智能技术生成

让我们开始一些编码。首先,fizzbuzz:


#!/usr/bin/env python3



def fizzbuzz(i):

  if i % 15 == 0:

    return "FizzBuzz"

  elif i % 3 == 0:

    return "Fizz"

  elif i % 5 == 0:

    return "Buzz"

  else:

    return str(i)



for i in range(1,101):

  print(fizzbuzz(i))



Python 的一项不错的功能是列表推导式。这涵盖了块 - .map、.flat_map和.filter- 的许多用途,在某些情况下,它比 Ruby 中的块等价物更具可读性。


#!/usr/bin/env python3



r = range(1, 101)

fizzbuzz = {

  k: v

  for d in

  [

    [(i, i) for i in r],

    [(i, "Fizz") for i in r if i % 5 == 0],

    [(i, "Buzz") for i in r if i % 3 == 0],

    [(i, "FizzBuzz") for i in r if i % 15 == 0]

  ]

  for (k,v) in d

}



for value in fizzbuzz.values():

  print(value)



好吧,也许这不是最易读的,但是如果您使用大量 Python,我强烈建议您进行一些列表理解练习,因为您会遇到比 FizzBu​​zz 复杂得多的列表理解。

另一个有趣的特性是装饰器。你把一个块写成一个函数,然后装饰器把它变成你真正想要的函数。这是一个简单的 fib 函数,由于记忆化,它是 O(n),即使它看起来是 O(n^2):


#!/usr/bin/env python3



from functools import cache



@cache

def fib(n):

  if n < 2:

    return n

  else:

    return fib(n-1) + fib(n-2)



for i in range(1, 100):

  print(fib(i))



我们可以在这里看到,默认情况下 Python 具有无限的精度整数 - 即使在较新的语言中,这一特性仍然非常少见。

我们也可以用装饰器做更多有趣的事情:


#!/usr/bin/env python3



def override(value, condition):

  def decorator(func):

    def wrapper(*args, **kwargs):

      if condition(*args, **kwargs):

        return value

      else:

        return func(*args, **kwargs)

    return wrapper

  return decorator



@override("FizzBuzz", lambda i: i%15 == 0)

@override("Buzz", lambda i: i%5 == 0)

@override("Fizz", lambda i: i%3 == 0)

def fizzbuzz(i):

  return str(i)



for i in range(1,101):

  print(fizzbuzz(i))



接受参数的装饰器具有这种奇怪的三重嵌套函数结构(functools.wraps如果您希望装饰器与 Python 帮助系统配合得很好,实际上还有更多样板文件)。所以它们不是最易读的,但它们对用户来说很棒。

Python 是一种相当“高质量”的语言,因为您经常需要考虑的不一致之处相对较少。例如,所有这些代码完全符合您的期望:


print(len("😉")) # 1

print([1,2] == [1,2]) # True



Python 在数据科学家中非常流行。Jupyter 笔记本允许非常方便的数据探索。您可以在 Jupyter notebook 中使用多种语言,但 Python 拥有迄今为止最丰富的生态系统。最近笔记本与 VSCode 集成,这是非常令人兴奋的发展,因为应该可以在没有任何额外工具的情况下在同一个笔记本上工作!(我还没试过)

总的来说,Python 是一种每个人都应该知道的语言。它非常平易近人,无论您进行何种编码,您迟早都会遇到 Python 代码。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

nvert/9f49b566129f47b8a67243c1008edf79.png)

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值