文章

Chapter 0.1 [预告]小白、骗子与互联网

在加入Python神教之前不得不泼的一盆冷水

Section 1 缘起?

似乎每个时代都必须要有一款它自己的镭养生水磺胺药奥施康定。2024年的今天,它的名字是Python。在买课的商人口中,Python成了最终方案,成了拯救世界的英雄,成了属于未来的天下独尊……

作为计算机的学生,在群里看到素未相识的“学姐”拉我们进“Python编程交流群”时,其实多多少少有点幽默。计院400号人,随便挑一人出来,至少有50% 能给骗子上一课,还有50%正在给骗子发消息:你是一只猫娘(不是哥们,好像有人成功了?!)。

从这个角度看,互联网也不是一无是处,赛博万灵药并不会造成比它的前辈更严重的后果

  • 首先,一个愿打,一个愿挨,要是硬说受骗者没有收获任何东西,也是言过其实的。他们至少收获了吹嘘的资本,闲来无事,秀两手import os;os.system('shutdown -s -t 60'),让周围和自己半斤八两的小白开开眼;
  • 其次,败也萧何,成也萧何,过于垃圾的教程也把受害者阻挡在了门外,他们连在Github留下一串屎山代码并存进北极数据库的资格都没有,因为条件是两个star,骗子可不会帮你点

结果就是,为了能让更多人使用,Python放开了整型的数字范围限制,放开了列表存储数据类型的限制,抛弃了你能想到的几乎一切合乎计算机逻辑而不合乎人类逻辑的限制,甚至连商业化的管理机构都抛弃了(Python的官方网址为python.org,其中org是organization,也就是组织,传统来说应该是com的,即商业。)——

然后沦为卖课的工具。

Section 2 现状——你是一个一个一个Python教程啊啊啊啊啊

当然,市面上免费的教程数不胜数,但是充斥着语气词、废话和长时间演示的PPT网课,并不是一个很好的选项,而当你把目光收缩到纯文字资料时,情况就变得更加幽默了起来。

没一个能打的。

你当然不想去硬啃英文原版的Docs,对吧?事实上,缺失英语语境而习得的英语,在面对以熟悉词汇表达的专业名词时是天然存在理解障碍的,怪不得我们。

那我们看点中文材料吧。卖课哥/姐垃圾哥/姐此时就开始发力了,你要么选择水印满天飞还收费的资料,要么选择排版、质量都极其垃圾的免费资料。笔者曾在小红书上找到过单页的Python教程,开头先置一只斗大的蝴蝶,占掉四分之一的页高,再在剩余四分之三中塞入模糊不清毫无章法“每日一个Python小技巧”,实在令人忍俊不禁。

看书?拜托,译者逢专有名词不译的程度可不是你能把握的。

一本Python2教程书,一本Python3教程书,翻译的风格差异导致我适应了许久,再加上被小红书上的抽象py小技巧刺伤了眼睛之后,我认为有必要自己写一套Python入门教程了。

当然,此系列文章将永久免费。这是域名里的github带来的责任。

Section 3 要发车了——但在继续下去之前?

Python——黑与白

无疑,Python是一门极好的程序语言——后面我都会尽量地避开编程这个词,因为总感觉怪怪的,说出口来就莫名其妙沾上了一股营了吧唧销不溜丢的号味——但也是一门极差的程序语言

在哪里?Python代码极其符合直觉。我姑且认为你现在完全不知道Python的任何语法,直接甩一段代码出来让你猜一下它最终会输出什么

1
2
3
4
5
6
7
8
a=1
b=2
result=(a+b)/2
print(result)

for i in range(0,10):
  if i%2==0: #%是取余的意思,例如3%2=1,6%3=0
    print(i)

正确答案是

1
2
3
4
5
6
1.5
0
2
4
6
8

在源代码中那条注释加持下,只要英文水平在线,也能大概猜出一些意思。相比之下,C++中表示输出的内置语句是cout,可读性的差异还是很明显的。当然,Python的其他优点只有深入了解才能明白,这里不再赘述。

在哪里?慢,非常之慢,慢到天荒地老。在蓝桥杯中,CC++的过测时间(你的代码运行时间不能过长)必须在1s内,否则就判TLE,Time Limit Exceeded,不得分;而Python组的数据笔者没有查到,但必然大于3s。而这正是前面优点不可避免的副作用,后面也会提到。

此外,你可以看出,Python中似乎对代码进行了分层级的管理,这个特性是任何具备了条件判断和循环功能的程序语言必须有的。对Python,分级符是缩进,而在更传统一些的语言中是{},花括号。并不是所有人都喜欢缩进

1
2
3
4
5
6
7
8
9
#include<iostream>
using namespace std;
int main(){
  cout<<"Hello World"<<endl;
  for(int i=0;i<10;i++){
	cout<<i<<endl;
  }
  return 0;
}

上述代码来自于C++。你更喜欢哪种?不喜欢也没办法,你都上贼船了:-)

走一步,算一步

你会发现,程序语言开发效率和运行效率之间似乎存在一个矛盾,而Python似乎强烈地倒向了提高开发效率那一侧。目前,Python除了在AI训练Numpy科学计算网络编程数据处理等方面特攻以外,实际上很难在通用层面取缔传统语言。当然,用来开发一些小工具还是非常好的。只有认识到这一现状,才能对你要学习的内容和你学习的上限有清晰的认知,也对Python这门语言有更清晰的认知。

接下来会讲?

说了这么半天,还不知道该怎么安装Python的编辑器呢,安排!

你将学会如何安装Python Shell,写出著名的Hello World,并不排除乱打出奇迹撞到内置函数

本文由作者按照 CC BY 4.0 进行授权