100 种语言速成第 1 节:Python
Posted 海拥✘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了100 种语言速成第 1 节:Python相关的知识,希望对你有一定的参考价值。
🌊 作者主页:海拥
🌊 作者简介:🏆CSDN全栈领域优质创作者、🥇HDZ核心组成员
🌊 粉丝福利:👉 粉丝群 👈每周送6-9本书,不定期送各种小礼品(往期获奖记录)
直接跳到末尾 去评论区领书
从今天开始打算做 100 种编程语言的速通。频率大概一周两篇,我会发布有关不同编程语言的信息,尝试每种语言的有趣之处。
我将为此系列创建的一些编程语言。因此,如果你继续学习,你不仅会看到许多不同的编程语言,而且你还可能会学到关于如何创建自己的编程语言的一两件事,欢迎大家在评论中分享自己的想法。
每一节都将是独立的。目标受众是懂编程但不知道 100 种不同语言的人,所以如果我认为这样的读者更清楚,或者如果它能让我更好地展示特定语言功能,我会经常使用一些不太惯用的做事方式. 对于未强制执行的语言,我将主要坚持最佳实践跨语言代码格式(2 个空格缩进、双引号字符串、无分号等),即使该语言通常使用其他内容。
Python
没有什么是比 Python 更好的语言开始的,Python 是其中最中间派且最无异议的,编程语言领域的中间派。它并不是特别适合任何事情,但对于大部分需求来说已经足够了。在懂多种编程语言的人中,很少有人喜欢 Python,也很少有人对它有强烈的负面情绪——比如一致的 4/5 星评级。除了只知道 Python、R、Matlab 等的数据科学家——他们通常真的很喜欢 Python。
它有点像面向对象的编程,但它在每种方法中都需要大量笨拙和不必要的样板。它有点做基本的函数式编程,但如果你坚持几个常见的模式而不尝试任何异国情调的东西,它会更喜欢。它有点像 Unix 脚本和正则表达式编程,但缺乏像 Ruby 或 Perl 这样更专注于它的语言的便利功能。它有点做繁重的数字处理,但你需要跳过很多圈子,主要是用子语言编写代码。等等。
与 Python 最接近的语言是 Ruby,它们的哲学非常不同。Ruby 有块和对象,你基本上可以用它做任何事情(加上大量的语法糖)。Python 拒绝添加块,而是每个版本都添加了另一块功能,从 Ruby 的角度来看,它看起来像“好吧,如果你只有块,你就不需要这样做”。从我与编程初学者(和数据科学家)的互动来看,这些块替代品对他们来说往往是 Python 中最困难的部分,所以我认为现在 Python 甚至在简单性方面都没有获胜,即使 Python 1 是一个比 Ruby 1 更易于学习的语言。幸运的是,初学者(和数据科学家)可以选择忽略所有这些块替代,而大多数人就是这样做的,
让我们开始一些编码。首先,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,我强烈建议您进行一些列表理解练习,因为您会遇到比 FizzBuzz 复杂得多的列表理解。
另一个有趣的特性是装饰器。你把一个块写成一个函数,然后装饰器把它变成你真正想要的函数。这是一个简单的 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 代码。
🥇 评论区抽粉丝送书啦
💌 欢迎大家在评论区提出意见和建议! (抽三位幸运儿送书,实物图如下)💌
《Python数据分析与大数据处理从入门到精通》
【内容简介】
《Python数据分析与大数据处理从入门到精通》主要讲解数据分析与大数据处理所需的技术、基础设施、核心概念、实施流程。从编程语言准备、数据采集与清洗、数据分析与可视化,到大型数据的分布式存储与分布式计算,贯穿了整个大数据项目开发流程。本书轻理论、重实践,目的是让读者快速上手。
全面:数据分析与大数据处理所需的所有技术,包含基础理论、核心概念、实施流程,从编程语言准备、数据采集与清洗、数据分析与可视化,到大型数据的分布式存储与分布式计算等。
有觉得自己运气差想自己买的同学可以参考下面的链接
京东自营购买链接:
《Python数据分析与大数据处理从入门到精通》- 京东图书
当当自营购买链接:
《Python数据分析与大数据处理从入门到精通》- 当当图书
📣 注意:
大家点赞关注,三天后也就是 1月24日 从评论区留言的同学中抽取两位送书
🌊 面试题库:Java、Python、前端核心知识点大全和面试真题资料
🌊 办公用品:精品PPT模板几千套,简历模板一千多套
🌊 学习资料:2300套PHP建站源码,微信小程序入门资料
如果中奖了联系不上则视为放弃,可以从下方卡片里找到作者的联系方式,每周都会送6~9本书,后面送书力度还会加大,一年送几百上千本不是问题,备注【进群】领书不迷路。备注【资源】可获取上面的资料👇🏻👇🏻👇🏻
以上是关于100 种语言速成第 1 节:Python的主要内容,如果未能解决你的问题,请参考以下文章