%Appdata%
?AppData是一个文件夹的名称。
%Appdata%
是Windows设定的变量,默认情况下指向应用程序存储数据的位置。
它的作用是提供一个统一的路径,用于存储应用程序的配置文件、临时文件、日志文件等数据。
%Appdata%
就代表了C:Users\用户名\AppData
这个文件夹。
%
是系统变量的一种表示方法。
以查找requests
库的安装源文件为例。
【win】+【R】打开【运行】。
在【打开(O)】后的框中输入:
%Appdata%
点击打开的文件夹的上一级文件夹,即点击【AppData】。
点击【Local】文件夹。
点击【Programs】文件夹。
点击【Python】文件夹。
点击【Python39】文件夹。
点击【lib】文件夹。
lib:库文件。
site [saɪt]:站点。
packpage[ˈpækɪdʒ]:包。
在Python的安装目录下面,有个专门的文件夹叫做【site-packpae】,用于安装各种Python工具包。
这些直接安装在【site-packpage】里面的工具包,就叫做站点包。
我们安装的各种包的源文件可以就可以在这个文件夹里找到。
【备注】
这里要点击的文件夹就是库的名称。
如果你要查找numpy库,那你就需要找到【numpy】文件夹。
requests
文件夹里存放的就是requests的源文件。如下图所示:
【总结】
每安装一个第三方库都会在【site-packages】文件夹形成一个新文件夹。
已经安装的库或模块以源代码的形式存放在【Python39】-【lib】-【site-packages】文件夹里。
第三方库中的可以执行的程序存放在【Python39】-【Scripts】文件夹里。
Scripts[skrɪpts]:脚本。
【实操练习】
大家安装一个没有安装过的第三库,观察【Scripts】和【site-packages】文件夹的变化。
这里以安装numpy
为例。
numpy
是一个用来处理多维数组的包。
安装前大家检查【Scripts】里是否有f2py.exe
的文件。
【site-packages】文件夹里是否有numpy
文件夹。
【步骤流程】
先打开【Scripts】和【site-packages】文件夹。
点击任务栏中的放大镜
。
在搜索框中输入【cmd】。
右键单击【命令提示符】。
选择【以管理员身份运行】。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ numpy
【命令解析】
install [ɪnˈstɔːl]:安装。
pip
: 是Python的包管理工具,用于安装、升级和卸载Python包。install
: 是pip的一个子命令,用于安装Python包。-i
: 是pip install的一个选项,用于指定包的索引地址。https://pypi.tuna.tsinghua.edu.cn/simple/
: 是一个包的索引地址,指定了从该地址下载包,可以替换成其它地址。numpy
是库名,这里替换成你要安装的任何库名。【Scripts】文件夹多了一个f2py.exe
的程序,这是一个可以执行的numpy工具。
【site-packages】文件夹多了一个numpy
的文件夹,numpy
的文件夹里面有多个.py
文件。
大家用本节第一点的方法找到bs4
库的安装源文件夹,并保存到桌面或其他盘备用。
【得到的bs4文件夹如下所示】
【代码示例】
下面的代码向某网页发送了一个请求,并返回了网页的源代码。
大家注意看最后一行代码。
import requests
url = 'http://python123.io/ws/demo.html'
# r是变量名,数据类型为Response对象
r = requests.get(url)
# 查看对象的属性语法:对象.属性
# r是对象名
# text是Response对象的属性,作用是输出网页源代码,类型为字符串数据
html = r.text
# bs4是库名
# BeautifulSoup是bs4库的类
# 导入bs4库的BeautifulSoup类
from bs4 import BeautifulSoup
# BeautifulSoup是类名
# html是要解析的对象,这里存储的HTML网页源代码
# html.parser是解析器的名称
soup = BeautifulSoup(html, "html.parser")
print(soup.prettify)
大家观察最后一行代码:
print(soup.prettify)
假设我们不知道prettify
的作用,我们可以这样做:
这里以vscode编辑器为例。
将鼠标光标移动到该单词上面,我们可以看到如下的界面:
全选这段英文释义,复制如下:
(method)
def prettify(
encoding: str,
formatter: str | Formatter = "minimal"
) -> bytes: ...
def prettify(
encoding: None = None,
formatter: str | Formatter = "minimal"
) -> str: ...
Pretty-print this PageElement as a string.
:param encoding: The eventual encoding of the string. If this is None,
a Unicode string will be returned.
:param formatter: A Formatter object, or a string naming one of
the standard formatters.
:return: A Unicode string (if encoding==None) or a bytestring
(otherwise).
去源文件中查找该方式的释义:
用vscode编辑器打开【bs4】文件夹。
任意打开里面的.py文件。
按【CTRL+F】。
在打开的搜索框中输入【prettify】。
如果.py文件里没有【prettify】想关内容,会显示无结果。
大家可以依次打开.py文件,查找相关内容。
我最终在【element.py】文件中找到该方法的相关内容,代码如下:
def prettify(self, encoding=None, formatter="minimal"):
"""Pretty-print this PageElement as a string.
:param encoding: The eventual encoding of the string. If this is None,
a Unicode string will be returned.
:param formatter: A Formatter object, or a string naming one of
the standard formatters.
:return: A Unicode string (if encoding==None) or a bytestring
(otherwise).
"""
if encoding is None:
return self.decode(True, formatter=formatter)
else:
return self.encode(encoding, True, formatter=formatter)
对比上下两段代码,我们发现内容是一致的。
prettify[ˈprɪtɪfʌɪ]:使…表面看上去美丽;粉饰。
PageElement页面元素。
param [ˌpærəˈm]:参数。
因为源文件的代码是上下联系的,多个.py文件也是相互联系的,且我水平有限,对上面的代码仅做一个大概的解析。
【英文注释部分的翻译】
这段代码定义了一个名为prettify的方法,用于将PageElement对象以漂亮的格式打印为字符串。
该方法有两个参数:encoding和formatter。encoding参数用于指定字符串的编码方式,如果为None,则返回一个Unicode字符串;否则返回一个字节字符串。formatter参数用于指定格式化的方式,可以是一个Formatter对象或者一个字符串表示的标准格式化方式。
如果encoding为None,则调用PageElement对象的decode方法,并传入True和formatter参数,返回一个Unicode字符串。
否则,调用PageElement对象的encode方法,并传入encoding、True和formatter参数,返回一个字节字符串。
【感受代码】
def prettify(self, encoding=None, formatter="minimal"):
if encoding is None:
return self.decode(True, formatter=formatter)
else:
return self.encode(encoding, True, formatter=formatter)
大家可以感受下上面这段代码的框架,参数。
认真分析下来好像也很简单,是不是你也能写。
【碎碎念】
个人建议大家有空可以多看看源文件中的代码。目标不是看懂,有空就看一段,看一个它定义的类,定义的方法,感受它的框架结构,参数的设定,类、方法的调用引用。
我喜欢看源代码,经常看对编写程序有一定的作用,思维方面、语法方面都会有很大的进步。
这感觉有点像高中时看优秀的文章一样,多看多写总能进步的。
读书破万卷下笔如有神,在学习Python中我感觉也有用。