跳到主要内容

🐍Python in YOUR COMPUTER

提示

由于Python迭代较快,管理它的环境是一个非常复杂的问题。

在本篇教程中,我会以Python3为基础,使用Poetry环境来作为示例。

请务必注意,管理自己电脑上的运行时/编译器环境是非常好的习惯,不好好管理环境的孩子都会被🐍吃掉!

备注

不需要太过于纠结具体的Python版本号问题,这套教程应该在Python3.9之后的所有版本都是通用的。

听说一直写Python的话,电脑里就会爬出来🐍(Python)噢!
关于Python的冷笑话真的是永远都开不完

在正式开始学习Nonebot之前,当然还是需要先把Python这个大坑先趟过去。

在这一章节中,我会带你快速的走一遍Python的基本流程和语法教学,假如你已经事先学习过了Python相关的妙妙小知识的话......You know the Rules, and so do I!

HAHAHAHA

🧩安装Python

屁眼通红Python从搜索引擎里爬了出来!

请认准python.org,正品保障,假一赔十!

虽然Python应该没有什么能让人点错的广告,但是还是先放个官网以防万一。

Python官网的下载链接

在官网找到Downloads选项就可以看到Python3的下载啦~

Python的整个安装过程基本只需要你一路点点点过去,不过请务必记得要把Python添加到PATH里!

当然,你也可以手动在环境变量的Path变量中添加如下的项:

"C:\Users\YourUserName\AppData\Local\Programs\Python\Python312\Scripts\"
"C:\Users\YourUserName\AppData\Local\Programs\Python\Python312\"
提示

看不懂安装程序?没关系!

快看廖雪峰老师的博客,老师讲的要比我清楚很多噢!

总而言之,在你完成安装之后,重新打开终端,执行python --version应该就能看到输出的Python版本了。

Python版本

什么?你打这个显示没有这个命令?那肯定是你前面安装的时候做错了,从头重新开始吧~

🛵Python速通

Python的语法是真的真的真的特别简单,虽然展开讲也可以讲很多很多的篇幅,但是假设你天资聪颖,只消看一遍一些基础的概念和语法,再在实践中配合教学文档其实就可以理解的差不多了。

提示

你真的相信我一介普通学生🐕能教会你Python吗?后面的内容顶多算是个速览,除非你天赋异禀或者有其他编程语言的基础,否则还是安安分分的看廖雪峰老师的博客比较好噢?

首先,Python是一门面向对象的,秉承“万物皆对象”的理念进行设计的一种动态类型编程语言。

在这里抛出了Python的两个核心设计:

  • 面向对象
  • 万物皆对象

面向对象?

如果你对编程相关的东西有过了解的话,那你应该多多少少有听到过面向对象(Object-oriented programming,OOP)这个概念。

对象?显然我没对象,那我怎么面向对象?

对象的确是一种抽象的概念,但是其实也没听起来那么高级,简单来讲对象就是一组属性、特性、方法(函数)的组合......好吧它听起来还是很无聊。

简而言之,对于一个人类👴,它具备身高体重年龄等等的属性,还具备吃饭睡觉WC的行为,这时,我们就可以将其看待为一个对象。

而在代码中,我们可以这样去形容它:

class Human:
age: int = 20
height: int = 175
weight: float = 78.5

def sleep():
time.sleep(28800)

# ......

对象是对一类抽象概念的组合,所以,在Python中,这样的一个对象叫做(Class)。

但是,仅仅只是定义了人的属性和行为,还不能称之为一个人,这个世界上有很多很多20岁身高1m75体重78.5kg的人但是睡足28800秒真的不容易,如何使之成为一个具体的、具备这些属性和行为的👴呢?

这就要交给实例化了:

me = Human()

现在,me成为了一个具体的实例,它具备Human这个类定义的所有属性和行为。现在,困得要死还熬夜没睡的me终于可以睡一觉了:

me.sleep()

这样的方法可以延申到其他的事物上,这样的编程思维也就是面向对象编程。

万物皆对象?

🐘Yep,Python中的一切都是对象

你可能会感到很抽象,什么叫一切都是对象?

天啊,简直要看不清象这个字了。

在Python的设计中,你定义的每个变量都是一个实例,比如:

text = "Hello, Nonebot!"
print(text)
# 输出:Hello, Nonebot!

你会发现,你刚刚定义的这个text变量,可以使用str类的方法。

不相信?那么你可以试试:

text = "Hello, Nonebot!"
text.replace("!", "。")
print(text)
# 输出:Hello, Nonebot。

不仅如此,你还可以跳过赋值的步骤本身:

print("Hello, Nonebot!".replace("!", "。"))
# 输出:Hello, Nonebot。

在运行上述代码的过程里,发生的事情其实是:

  • 你通过""实例化了一个str类的实例,并且为其赋值了一个字符串作为属性,然后这个实例被存储在了内存中。
  • 你新建了一个text实例(属于Object类),它在内存中新开了一个位置,并且复制了刚才你实例化的字符串的内存
  • 你调用了__builtin__模块中的print函数,这个函数获取了text的属性,将字符串传入到了默认的输出流中,将其打印到了命令行里面。

没法理解?很正常,Python通过万物皆对象的方法,将很多方法的具体实现封装在了对应的数据类型中,使其从用户的眼前被藏了起来,让Python看起来无比简洁轻快。

不仅是你定义的变量,连你引入的模块,你运行的.py文件本身,在运行的过程中其实都是各种各样的对象。

虽然现在你可能还难以理解,不过随着你继续深入Python,很快你就会体验到万物皆对象的快乐确信

动态类型?

Python中一般不需要显式的声明变量的类型,解释器会自动根据你赋予的值来确定类型,所以在Python里定义一个变量只需要这样:

a = 1
b = 1.1
c = "Hello,World!"

不过在Python3.9中引入了类型注解的功能,虽然并不强制,但是允许你通过和其他编程语言相似的方式来手动告诉解释器变量属于什么类型。

对变量的类型进行控制有助于在编程过程中减少错误,是好习惯噢。

a: int = 1
b: float = 1.1
c: str = "Hello,World!"

当然,动态类型不仅是不需要显示声明变量的类型,还有不同类型变量之间的自动转换:

a = 1
b = 1.1
print(a + b)
# 输出:2.1

当然,并非什么变量都可以自动转换,比如intstr就没法直接这样拼在一起(

提示

Python的动态类型虽然有些时候非常方便,但是在使用的时候请务必要确保你理解了过程中每个量的类型的关系,在可能的情况下通过int()str()float()等类型转换函数手动转换类型更加安全合理!

语法Cheatsheet!

语法部分说多不多说少不少,不如直接把基础的语法都放在这里,看一遍有个数就可以了,Python本身的语法简单到不太需要单独学习,在你理解了Python作为编程语言的一些概念之后跟进开发其实会学的更快。

欸,你问我怎么现在不说要先去学Python了?

你都看到这里了肯定是不想好好跟着正经教程学啊kora
a = 1
b = 5
c = 9

# 基本算数运算
print(a + b) # 6
print(a - b) # -4
print(a * b) # 5
print(a / b) # 0.2
print(c % b) # 4(余数除法)
print(c // b) # 1(整除)
print(c ** b) # 59049(求n次方幂)

# 比较运算,返回布尔值
print(a < b) # True
print(a > b) # False
print(a <= b) # True
print(a >= b) # False
print(a == b) # False
print(a != b) # True

# 逻辑运算,返回布尔值
print(a == 1 and b == 5) # True
print(a != 2 or b == 5) # True
# 取反
print(not b > c) # True

# if语句
if not a > b and b < c:
# 当a<b且b<c的时候执行
n = a + b + c
elif a > b and b < c:
# 当a>b且b<c的时候执行
n = a * b * c
else:
# 当输入的值不满足以上条件的时候
n = 0
# 输出:n=15

# for语句,遍历传入的值并循环执行代码块,直到被打断或者遍历了全部数值。
for num in [3, 4, 5, 6, 7]: # 除了列表List类型之外也可以是元组Tuple类型。
if num == 6:
print(num)
break
# 输出:3 4 5 6

# while语句,如果其后的表达式不为False则循环
# 请尽量少用while,用if和for进行替代更好!因为while语句非常容易产生无限循环直接卡死整个进程,且python的while语句实现本身性能很差!
while a < c:
a += b
# 输出 a=11

好了,说的再多都不如直接敲几行代码来的快,火速进入下一个章节吧(