【笔记ing】python
1 Python基础概念及环境搭建
1.1 python简介及发展史
之父Guido van Rossum。ABC语言的替代品。Python提供了高效的数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释性语言的本质,使之成为多数平台上写脚本和快速开发应用的语言。
Python解释器易于扩展,可以使用C或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。
Python2.7停更。Python3系列不兼容Python2.
1.2 Python定义及其理解
标准定义:Python是一门面向对象、解释型的计算机程序设计语言。
面向对象:指Python编程语言采用的思想。
解释型:指Python编程语言采用的程序编译方式。
1.3 Python对比其他同类编程语言的优劣势
优势:1、语法简单,易上手;高度语言话,摒弃传统语言的大部分标识语义,可读性好;2、可扩展性强;面向其他编程语言友好;3、开发效率极高;第三方库、组建丰富;Python生态完整;4、跨平台性好
劣势:1、太“高级”,过于趋近应用层,造成编译与执行效率较低(对比之下,比如对比C或C++);2、大部分面向底层的开发,不太建议使用Python,通常会选择性能更好的编程语言,比如C++;
1.4 Python的其他维度定义
Python是一门胶水语言。Python可以开发一个功能模块的公共接口,将其他编程语言实现的功能进行整合。
Python是数据科学领域首选的编程语言。数据科学注重模型的建立(数学建模)。
1.5 Python基础概念相关名词解释
解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次。因此效率较低。如Python语言,专门有一个解释器能够直接执行Python程序,每个语句都是执行的时候才翻译,。(效率较低,依赖解释器,跨平台性好)。
编译型语言:程序在执行之前需要有一个专门编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等。
解释器:又译为直译器,是一种电脑程序,能够把高级编程语言一行一行直接转译运行。解释器不会一次把整个程序转义出来,只像一位“中间人”,每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓慢。每转译一行程序叙述就立刻运行,然后再转译下一行,再运行,如此不停地进行下去。
解释器工作原理:解释器的工作原理及流程:1、执行xxx.py文件:开始运行一个Python程序;2、此时就会调用提前安装好的Python解释器对代码进行逐行解析;3、解析的过程中,解析一行,运行一行,如果出错,则终止解释运行,并返回错误信息;
1.6 Python环境搭建:解释器环境搭建、开发工具搭建
1.6.1 使用CPython解释器搭建Python环境
gzipped source tarball:用于Linux系统下通过编译源码的方式安装Python环境的Python源码包;
windows install(65-bit):用于Windows通过安装程序直接安装的安装包;
1.61.3 华为云服务器购买及配置选购参考
共建智能世界云底座-华为云
先看近期打折活动。
性能配置:CPU核心数、内存容量、带宽、是否有数据盘、云服务器使用时长。1核2G带宽1MB带一个40GB的系统盘大致可满足学习。
1.6.2 使用Anaconda3安装Python环境
1.6.2.1 Anaconda简介
Anaconda是凯源的python发行版本。包含了conda、python等180多个科学包及其以来项。如果只需要某些包或者节省带宽或存储空间,可使用Miniconda这个较小的发行版(仅包含conda和python)。
conda是一个开源包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换。
Anaconda将程序员日常开发中可能会用到的库、插件、扩展等,全部放在一起打包,然后封装为一个可执行文件用于安装。
Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
1.6.2.3 Linux&mac下安装Anaconda3开发环境
我是macbook m2。
打开终端,输入source ~/.bash_profile。让环境生效
参考:【Mac安装anaconda最新实用教程】_mac安装conda-CSDN博客
Linux测试环境:HUAWEI云耀服务器,操作系统:Centos 8
(学一下命令)
SSH远程连接云服务器,进入后开始安装:
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2020.11-Linux-x86_64.sh #版本就选择tsinghua查到的较新的linux-86版本
执行wget后等待下载完毕即可。
下载完毕后,进入Anaconda3文件所在目录,执行bash命令进行安装:
bash Anaconda3-2020.11-Linux-x86_64.sh
安装过程会多次提示相关操作,按照提示进行操作即可,等待安装完毕,Anaconda的安装即完成。
配置Anaconda3的环境变量:
vim /etc/profile
使用vim编辑器打开profile文件,点击键盘"i"进入编辑模式,添加如下内容:
export ANACONDA_HOME_PATH=/root/anaconda3
export PATH=$ANACONDA_HOME_PATH/bin:$PATH
添加完毕后,ESC退出编辑,输入“:wq”退出vim编辑;
最后再source一下生效即可:
source /etc/profile
1.6.3 编程工具IDE介绍:Pycharm的安装、配置及使用详解
Pycharm、Microsoft Visual Studio Code、subline Text3...集成其他的功能配合代码的高效编写与调试。
集成开发环境(IDE,Integrated Development Environment)用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务等。所有具备这一特性的软件或软件套(组)都可以叫集成开发环境。如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等。该程序可以独立运行,也可以和其他程序并用。
即:IDE其实就是一个应用程序(软件),这个程序把程序员写代码所需要的一切功能,包括编辑、调试、运行代码等全部集成在这个软件内,让程序员最大限度的,方便的进行成产开发。
1.6.3.1 Pycharm简介
jetbrains系列产品。
Pycharm Community 社区版,免费且开源
Pycharm Professional 专业版,付费且非开源
社区版不支持第三方库和组件
tb教育激活授权
1.6.3.2 Pycharm下载
PyCharm: the Python IDE for data science and web development
1.6.3.3 Pycharm安装
1.6.3.3 Pycharm初次使用及基本配置
设置Location,项目的存储路径
选择依赖的python库,会新建一个venv虚拟环境
也可以关联本地的python解释器
1.6.3.5 Pycharm常见配置1:如何更改界面主题
file->settings->editor->color scheme
1.6.3.6 Pycharm常见配置2:如何打开一个已有的项目或Python文件
file->open
如果项目或Python文件放在桌面,/users/username/Desktop
1.6.3.7 Pycharm常见配置3:如果突然配置好的Python解释器路径失效,重新配置
file-settings->Projects:项目名称->Python Interpreter
1.6.4 Conda虚拟环境
Pychon的环境搭建最简单的方式:直接使用CPython解释器安装环境并在Pycharm中直接配置本地Python环境即可。
并不是每一个项目所采用的Python版本都是一致的。Python多个版本无法高效的在同一台PC的本地环境下管理。
采用虚拟环境进行Python环境搭建,为每一个虚拟环境指定特定的Python版本,通过虚拟环境隔离本机物理环境,进行Python多版本共存管理,提升便捷性。
主流的有virtualenvwrapper虚拟环境和Conda虚拟环境。
virtualenvwrapper面向python开发。
Python的包管理工具pip。
1.6.4.1 pip包管理工具
Python的标准库是官方内置好的。第三方开发者(非官方技术人员)开发所需的额外的技术、工具、插件,封装为模块或包。
先在本机Python环境下安装好第三方库,然后在本机的python环境下使用第三方库。
pip包管理工具,是专门用来安装python的第三方库、包、组建及插件。该工具在安装python解释器的时候,已经自动安装好了,可以直接使用。
1.6.4.2 pip包管理工具基本使用
pip管理工具通过shell命令使用。打开终端。
使用pip安装一个库:
pip install 库名
使用pip卸载一个库:
pip uninstall 库名
查看当前环境下已经安装了哪些库:
pip list
查看当前pip包管理工具版本信息:
pip --version
pip无论是否在本机物理环境下,还是虚拟环境下,都可以使用。但是,对于linux系统,如果是直接在本机物理环境下使用,需要使用pip3命令,如:
pip3 install xxx
pip3 uninstall xxx
pip3 list
如果在虚拟环境下使用,因为创建虚拟环境时已经自动建立好了pip3的软连接,则使用pip或pip3都行。
1.6.4.3 下载第三方库时的国内镜像源
有些第三方库、包、组件及插件,并不是国人开发或没有上传至境内的网站进行托管,而是在国外的网站托管,下载就会很慢或无网络连接无法下载。即出现国内的景象地址,可以更快的下载到本地。国内镜像源地址:
清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/
腾讯源:https://mirrors.cloud.tencent.com/
阿里源:https://developer.aliyun.com/special/mirrors/notice
华为源:https://mirrors.huaweicloud.com/
中科大源:http://mirrors.ustc.edu.cn/
北京外国语大学源:https://mirrors.bfsu.edu.cn/
网易源:http://mirrors.163.com/
豆瓣Python PYPI镜像:http://pypi.doubanio.com/simple/
python主要使用的是:清华大学开源软件镜像站、中科大源、豆瓣Python PYP镜像。
在使用pip安装第三方库时,pip install xxx(需要安装的库名)。发现该库下载很慢时,可以选择添加某一个国内镜像源。一般情况下,使用pip进行第三方库安装时,一般选择豆瓣的镜像源下载,会很快。
pip install xxx(需要安装的库名) -i https://pypi.douban.com/simple
1.6.4.4 Conda虚拟环境的使用
在成功安装Anaconda3后且已经完成环境变量配置时,Conda虚拟环境就已经安装完毕了。验证如下,以下三个命令任意一个都可验证:
anaconda -V
conda -V
conda --version
只要能够顺利看到conda对应的版本号,说明conda已经配置生效了。
conda虚拟环境的几个常用命令:
查看conda版本号:
conda --version
conda -V
查看当前已有的conda虚拟环境:
conda env list
创建一个conda虚拟环境:
conda create -n [envs_name] python=版本号
# e.g.
conda create -n myFirstCondaEnvs python=3.6.5
激活(进入)一个conda虚拟环境:
# linux
source activate envs_name
# e.g.
source activate myFirestCondaEnvs
退出一个conda虚拟环境
# linux
source deactivate
conda虚拟环境下安装第三方依赖:
先添加Anaconda的TUNA镜像:
conda config --add channels https://mirrors.tuna.tsinghua.cn/ananoda/pkgs/free/
设置搜索时显示通道地址:
conda config --set show_channel_urls yes
安装某依赖包:
conda install [包名]
conda虚拟环境下也是可以通过pip进行第三方依赖安装的。
查看当前虚拟环境下已安装的依赖:
conda list
conda其他常用命令
删除一个已有的conda虚拟环境:
conda remove --name envs_name --all
删除环境中的指定包:
conda remove --name envs_name [包名]
克隆环境:
conda create --name envs_name --clone another_envs_name
查找软件包:
conda search [包名]
1.6.4.5 Conda虚拟环境在Pycharm中的配置
第一步:点击Pycharm主界面右下角
第二步:点击Interpreter Settings
第三步:弹出中点击Add
第四步:interpreter找到python.exe
第五步:勾选make available to all projects,点击ok。配置完成。
1.7 第一个Python程序:Hello Nudt!
1.7.1 交互式编码
交互式编码是指在操作系统的命令行中运行代码。
1.7.2 Pycharm主界面主要功能介绍
1、Pycharm的标题栏/工具栏:常用的功能、配置等。
file:文件相关操作及系统配置等操作
view:主界面的相关配置
run:运行/debugger一个程序的相关配置
2、Pycharm的项目目录结构。点击后即显示目录结构。该功能方便实时查看项目结构,点击可选择展开或关闭。
3、代码编辑区域
4、程序运行/debugger界面区域选项
termical:Pycharm集成好的终端shell,可在此像系统的终端一样通过shell运行一个程序。
5、当前项目配置好的Python解释器在右下角显示。如果Pycharm配置了多个解释器,点击可以随意切换。
1.7.3 Pycharm中新建一个Python文件
在左侧项目结构区域,选择一个Python文件创建目录
选择Python file后会提示给文件命名。命名时不用携带.py后缀名,只需要输入文件名称,回车后自动补齐后缀。
1.7.4 文件式编码:编写第一个程序Hello Nudt!
在新建的Python文件中输入代码:
print('Hello Nudt')
文件空白区域任意处右键单击,选择run
程序于控制台运行后返回结果。第一个Python程序完成。
1.7.5 Jupyter Notebook
Jupyter Notebook是基于网页的用于交互计算的应用程序。可被应用于全过程计算:开发、文档编写、运行代码和展示结果。
Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和代码,代码的运行结果也会直接在代码块下显示。Jupyter Notebook是一种“在线形式”的交互式编程环境。
在Python编程应用场景中,Jupyter Notebook是需要单独安装的:
pip install jupyter
之前已经安装好了Anaconda3,此时Jupyter Notebook已经安装好了,可以直接使用了。
1.7.5.1 Windows下本地开放Jupyter Notebook服务
终端输入命令:
jupyter notebook
等服务开启即可,且会自动打开浏览器进入到notebook界面
1.7.5.2 CentOS云服务器下远程开放Jupyter Notebook服务
第一步:云服务器开放8888(或任意其他数字)端口:
进入云服务器控制台,点击对应的名称/ID,点击安全组,点击“更改安全规则”,选择“如方向规则”后,点击添加规则,优先级(1)、策略(允许)、协议端口(TCP、端口号自定义,jupyter默认8888自定义端口号不要与其他端口号冲突)、源地址、描述、确定。
第二步:创建jupyter notebook配置文件:
jupyter notebook --generate-config
# 注意:终端中会显示文件所在路径: /root/.jupyter/jupyter_notebook_config.py
第三步:输入ipython,并在ipython中输入如下代码,完成密码设置:
# 注意:会生成一个密钥,从终端中将该密钥拷贝出来以备后续使用。
第四步:打开配置文件,输入如下配置信息后保存退出:
vim /root/.jupyter/jupyter_notebook_config.py
# 注意不要配置为localhost,‘*’代表任何ip均可访问
c.NotebookApp.password='*'
=u 'xxxx'
# 服务器本地不打开浏览器
c.NotebookApp.open_broswer=False
# 端口号默认为8888.想用其他端口号可在这里修改
c.NotebookApp.port=8888
# 指定Jupyter Notebook文件路径,也可以不设置
c.NotebookApp.notebook_dir='/root/DataMining_codes'
# 是否允许root用户登录
在云服务器下开启Jupyter notebook:
jupyter notebook --allow-root
打开浏览器,地址栏输入:
http://[云服务器主机ip]:[端口号]
即可进入jupyter notebook
1.7.5.3 Jupyter Notebook插件安装
Jupyter Notebook关联Conda环境:
conda install nb_conda
在实际使用时,为确保在Jupyter中能够关联(即使用)指定的Conda虚拟环境,一般的,最简单的方式是:
先终端下进入指定Conda虚拟环境:
conda activate xxx
再开启远程Jupyter服务:
jupyter notebook --allow-root
此时Jupyter中默认即使用该虚拟环境了;直接进入,在jupyter中再切换虚拟环境也是可以的。
Jupyter Notebook安装代码补全插件:在终端中依次执行命令:
pip install jupyter_contrib_nbextensions -i https://pypj.douban.com/simple
jupyter contrib nbextension install --user
pip install jupyter_nbextenssions_configurator -i https://pypi.douban.com/simple
jupyter nbextenssions_configurator enable --user
1.7.5.4 Jupyter Notebook插件安装
新建一个目录
目录重命名:先勾选目录,点击remove即可
新建一个Python文件
新文件的重命名
程序编写:在页面中每一个in之后编写代码
程序运行:每写一部分程序后可直接点击运行
虚拟环境切换:点击Kernel --Change Kernel,选择所需的虚拟环境即可
将代码保存至本地
1.7.6 补充知识:Pycharm建立SFTP协议共享Linux主机文件&实现SSH远程连接服务器Python环境
该需求主要面向生产环境下,该功能可实现:1、在Windows下远程连接Linux云主机共享文件,实现在Windows下Pycharm对Linux主机内文件进行编码;2、可实现Windows下对Linux主机文件编码后远程通过SSH连接服务器Python环境并执行Linux主机下脚本。基于此,Pycharm已提供相应的文件共享协议SFTP以及SSH远程登录功能。
Tools->Deployment->Configuration,+号,选择SFTP,新服务命名,...新增SSH远程连接配置,完成相关配置Host\User name\Password Test Connection.选择刚添加的ssh配置,点击mapping,Local path\Deployment path(选择本地路径) Web path(在linux里指定一个同步的路径)。全部操作完毕点击ok,SFTP文件共享服务配置完成。
Tools->Deployment->Broswe Remote Host.开启右侧服务器文件路径结构,方便直接查看,双击编辑。
Tools-Deployment->Upload here(手动)/Automatic Uploar(Always)(自动)
设置Windows下Pycharm可通过SSH远程连接云主机下的Pyhton环境并使用该环境运行Linux下python程序:
点击解释器配置,Settings->Project ..python Interpreter->add选择添加->SSH Interpreter-> Host\Username->Password->Interpreter选择路径->finish.配置完成。
2 变量及数据类型
2.1 计算机基本组成原理与编程基础预备知识
编译运行和解释运行。
编译与解释的过程中关注的不是程序如何检错,而是如何“编译(或解释)”
2.1.1 冯·诺依曼体系
1946年ta提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。
冯诺依曼体系结构、冯诺依曼理论的要点是:计算机的数制采用二进制,计算机应该按照程序顺序执行。人们把冯诺依曼这个理论成为冯诺依曼体系结构。冯诺依曼体系主要由5大部分组成:1、输入数据和程序的输入设备 2、记忆程序和数据的存储器 3、完成数据加工处理的运算器 4、控制程序执行的控制器 4、输出处理结果的输出设备。
现代计算机包括几十年前出来的计算机,仍然在沿用这样的体系进行设计。控制器控制执行的程序,就是现代计算机中软件开发所研究的方向。
计算机系统的组成结构
一台计算机首先要有硬件组成部分,在硬件上安装操作系统,在操作系统上安装使用各种应用程序。
操作系统,为用户提供一个可视化的GUI界面,用户可以依赖输入输出设备使用计算机的各种功能,为应用与硬件之间的交互提供了一个媒介。
高级程序语言(人看懂)-》编译器/解释器-〉机器码(01机器认识)-》硬件执行指令。
C++:编译型语言,编译流程:先一次性编译完毕,再直接执行机器码
JavaScript:解释型脚本语言,解释流程:运行时逐行解释为机器码,逐行执行机器码
2.1.2 Python解释器执行流程
1、开始执行xxx.py文件
2、系统调度python解释器
3、python解释器逐行读取xxx.py源文件,将其编辑成PyCodeObject字节码对象,写入同名的.pyc文件,存放于内存中;Python结束器的虚拟机从内存中读取.pyc文件的字节码对象,逐行读取、解释为机器码,逐行运行机器码。
4、Python解释器将PyCodeObject字节码对象写回pyc文件中。Python程序需多次运行时,每次运行前,先在存储中检索对应的pyc文件,若有则跳过第一步直接开始逐行解释,若无则重复。
Python先编译成字节码的好处:
跨平台特性。将Python程序先编译成字节码,不同的机器机器指令是不一样的,将代码编译成解释器能识别的机器码,运行时解释器就可以根据不同机器指令执行相应的操作。如此即可实现Python的跨平台特性。
提升运行性能。解释器的效率其实比编译器高很多,因为没有预编译的过程。Python源代码只需执行一次编译为字节码且持久化存储,后期解释器解释为机器码的过程可以反复使用该字节码,无需再预编译成字节码,弥补了Python执行效率低的缺点。
2.1.3 PEP-8编码规范
Python Enhancement Proposal #8(第八号Python增强提案),建成PEP-8,用于规范全球开发者所需遵循的统一Python编码风格。
缩进:代表代码的嵌套,包含与被包含的关系。用4个空格表示一次缩紧,可在settings->Editor->Code Style->Python->Tab size中设置tab键。
所有行限制的最大字数为79;
顶层函数和类的定义,前后用两个换行隔开;
源文件编码统一采用UTE-8;
模块或包导入语句单独一行。。。
2.1.4 注释及其使用
及注解,Python中只有单行注释。
# 我是一条注释
Pycharm中快捷键command+/
2.1.5 Pycharm常用快捷键
将光标移动到本行开头:command+《
将光标移动到本行末尾:command+》
快速注释/快速取消注释:command+/
复制光标所在行:command+d
删除光标所在行:command+Delete
移动光标所在行:shift+command+⬆️或⬇️
选中代码的格式化:command+option+L
2.1.6 基本常用函数
函数即一个具体的功能。
input():用于输出一定的内容,语法:
print(data) # data:要输出的数据
print(data1,date2,...) # 多条内容间使用“,”号隔开
常用参数:end,每条输出内容以何字符结束,语法:
print(data,end='结束符') # 输出一条内容,以xxx内容作为结尾
print默认结束符:
\n # 转义字符,代表以换行结束,即输出一条后换行,后续如果还有输出内容,则自动换到下一行。
# 输出一句Hello NUDT
print('Hello NUDT!')
# 输出一句Hello NUDT
# 输出一句2026 NUDT xukeda
print('Hello,NUDT!')
print('2026 NUDT xukeda')
# 输出一句“hello,nudt!”,同一行继续输出一句“hello,2026 nudt xcukeda”
print('hello,nudt!','hello 2026 nudt xukeda')
# 输出一句hello,nudt
# 输出一句hello,xukeda
# 两行输出一行提示
print('hello,nudt',end=' ')
print('hello,xukeda')

常用参数:sep,将多个同时输出的内容之间添加一个连接(/间隔)符号,语法:
print(data1,data2,...sep="连接/间隔符") # 以连接/间隔符隔开每一条输出内容
# 输出一句“hello,nudt”,同一行间隔一个&符号继续输出一句“hello,xukeda”
print('hello,nudt','hello,xukeda',sep='&')

input(),接收键盘输入的内容,语法:
data=input(输入提示) # 按照input内的提示,一句提示输入所需数据
# 提示:一段文本,提示这里可以输入什么数据
# 输入你的年龄
age = input('输入你的年龄')
# 输入你的性别
sex = input('输入你的性别')
# 输入你的手机号
phone = input('输入你的手机号')
# 输入你的身份证号码
id = input(''输入你的身份证号码)
# 一行输出:你的姓名,性别,手机号,身份证号码
print(age,sex,phone,id)
print(age,sex,phone,id,sep=',')
2.2 变量
2.2.1 定义
变量是一种使用方便的占位符,用于引用计算机内存地址,改地址可以存储数据对象。
2.2.2 变量定义的理解
变量是一个存储空间,为了存储一个具体的对象,这个具体对象所在的空间用一个名字命名,即变量。
2.2.3 变量的声明赋值语句
语法:
变量名 = 数据对象 # 声明单个变量,绑定耽搁对象
变量名1 = 变量名2 = 变量名3 = 。。。 = 变量名n = 数据对象 # 声明多个变量,绑定同一个对象
变量名1,变量名2,变量名3,。。。,变量名n = 数据对象1,数据对象2,数据对象3,。。。,数据对象n # 声明多个变量,绑定多个哦对象
声明一个变量,命名为xx,赋值为xx。
a = 1
b = 2
c = 1.5
d = 'hello nudt'
student = 'xukeda'
创建一个变量的时候,称这个过程为声明一个变量。
=表示为赋值,创建对象与变量之间的引用关系
==表示等于、相等,数学中的=
先声明(创建一个变量,包含该变量的存储地址及命名的名称),后赋值(将该变量与对象之间创建引用关系)。
2.2.4 有关“=”赋值操作的理解
————————————
仅用于本人学习
来源:网络