栏目:Python3基础
Python : 大蟒蛇
荷兰人 Guidovan Rossum(吉多·范罗苏姆) 于1989年发明了🐍🐍🐍
Q: 这是在喝枸杞奶茶吗?
一些关于Python的News
- 2019年1月,它被 TIOBE 编程语言排行榜评为2018年度语言。
- 2021 年 8 月 TIOBE 指数
Python之禅——zen
导入这个库:没错就是这个:this
>>> import this
下面导入this就是执行了this.py
"""this.py模块的源码"""
s = """Gur Mra bs Clguba, ol Gvz Crgref
Ornhgvshy vf orggre guna htyl.
Rkcyvpvg vf orggre guna vzcyvpvg.
Fvzcyr vf orggre guna pbzcyrk.
Pbzcyrk vf orggre guna pbzcyvpngrq.
Syng vf orggre guna arfgrq.
Fcnefr vf orggre guna qrafr.
Ernqnovyvgl pbhagf.
Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
Nygubhtu cenpgvpnyvgl orngf chevgl.
Reebef fubhyq arire cnff fvyragyl.
Hayrff rkcyvpvgyl fvyraprq.
Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
Abj vf orggre guna arire.
Nygubhtu arire vf bsgra orggre guna *evtug* abj.
Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!"""
d = {}
for c in (65, 97):
for i in range(26):
d[chr(i+c)] = chr((i+13) % 26 + c)
print("".join([d.get(c, c) for c in s]))
有好事者翻译了:
优美胜于丑陋
明了胜于晦涩
简洁胜于复杂
复杂胜于凌乱
扁平胜于嵌套
间隔胜于紧凑
可读性很重要
即便假借特例的实用性之名,也不可违背这些规则
不要包容所有错误,除非你确定需要这样做
当存在多种可能,不要尝试去猜测
而是尽量找一种,最好是唯一一种明显的解决方案
虽然这并不容易,因为你不是 Python 之父 (hahaha
做也许好过不做,但不假思索就动手还不如不做
如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然
命名空间是一种绝妙的理念,我们应当多加利用
Python最没用的特点
Easy
Python一些较为简单的特点
- 高级语言:用 Python语言编写程序时无须考虑如何管理你的程序使用的内存等这类底层细节。
- 免费、开源:Python是自由软件之一。
Python一些较为难理解的特点
- Python是
完全
面向对象的语言。
函数、模块、数字、字符串都是对象,并且完全支持 继承、重载、派生,有益于增强源代码的复用性。Python支持重载运算符和动态类型。 - 可扩展性:
如果需要一段关键代码运行得更快或者希望某些算法不公开,
可以 部分程序用 C或 C++编写,然后在 Python程序中使用它们。
反过来也可以把 Python 嵌入 C/C++程序,从而向程序用户提供脚本功能。 - 丰富的库:Python标准库很庞大。
感觉很多情况就是学习库的使用,不要让自己变成机械的调用机器!
Python在执行时,
首先会将“.py”文件中的源代码翻译成 Python的 byte code(字节码),
然后再由 Python Virtual Machine(Python虚拟机)来执行这些翻译好的 byte code。
基于 C的 Python翻译出的字节码文件,通常是“.pyc”格式。
来看看.cpy的字节码文件
算了,没什么好看的,反正不是这个年纪能看的东西
但可以解释一下 .cpython-93.pyc
是什么意思。
cpython:c语言实现的Python解释器,
-93:代表的是python3.9版本
.cpy的由来——Python解释器的具体工作
- 完成模块的加载和链接;
- 将源代码编译为PyCodeObject对象(即字节码),写入内存中,供CPU读取;
- 从内存中读取并执行,结束后将PyCodeObject写回硬盘当中,也就是复制到.pyc或.pyo文件中,以保存当前目录下所有脚本的字节码文件。
之后若再次执行该脚本,
它先检查【本地是否有上述字节码文件】和【该字节码文件的修改时间是否在其源文件之后】,
是就直接执行,否则重复上述步骤。
这些 .cpy
的文件存在和 .py
文件相同的文件夹下,
的一个名为 __pycache__
的文件夹下。如图:(我用来爬王者皮肤的scrapy框架的相关文件)
第一次执行代码之后
,
Python解释器已经把编译的字节码放在__pycache__文件夹中,
这样以后再次运行的话,如果被调用的模块未发生改变,
那就直接跳过编译这一步,
直接去__pycache__文件夹中去运行相关的*.pyc文件,
大大缩短了项目运行前的准备时间。
end