Python
一、概述及编码规范
1.1学习参考资料:
1.1.1 书籍:
《python编程:从入门到实践》
《从python开始学编程》
《python基础教程》
《python核心编程》
1.1.2 教程:(补充学习)
廖雪峰:python教程
菜鸟教程:python3教程
1.2概述
1.2.1python语言特点:
解释型、面向对象、开源免费、支持交互式、可移植、拥有广泛的库、功能强大、可扩展、可嵌入、运行慢、代码不能加密
1.2.2典型应用:
web开发:
Django,TurboGears,web2py等框架;
自动化脚本:
大多数Linux发行版以及NetBSD、OpenBSD和MacOSX都集成了python,可以在终端下直接运行python;
桌面软件:
PyQt,PySide,wxPython,PyGTK是Python快速开发桌面应用程序的利器;
游戏:
很多游戏使用C+编写图形显示等高性能模块,而使用Python或者Lua编写游戏的逻辑、服务器等;
服务器软件:
Python对于各种网络协议的支持很完善,因此经常变用来编写服务器软件、网络爬虫;
科学计算:
NumPy,SciPy,Matplotlib可以让Python程序员编写科学计算程序;
1.2.3Python的应用方向
人工智能:
Python在人工智能大范畴领域内的机器学习、神经网络、深度学习等方面都是主流的编程语言,得到了广泛的支持和应用;
网络爬虫:
大数据行业获取数据的核心工具。Python是编写网络爬虫的主流编程语言,Scrapy爬虫框架应用非常广泛。
web开发:
基于Python的web开发框架很多,如Diango、Flash等;
数据分析:
对数据进行清洗、去重、规格化和针对性的分析是大数据行业的基石。Python是数据分析的主流语言之一。
科学计算:
随着Numpy、SciPy,Matplotlib等众多程序库的开发,Python越来越适合于做科学计算、绘制高质量的2D和3D图形;
常规软件开发:
支持函数式编程和OOP面向对象编程,适用于常规的软件开发、脚本编写、网络编程;
1.3编码规范
1.缩进:
Python严格使用缩进来体现代码的逻辑从属关系。以4个空格为一个缩进单位。tab和空格不要混合使用。
2.空格和空行:
每个类、函数定义或者完整代码之后添加一个空行。
一般在二元运算符两侧各增添一个空格,逗号后面加空格,让代码适当的松散一些,提高阅读性。
一元前缀运算符后不加空格,括号前后不加空格,逗号、分号、冒号前不加空格,一般在其后加。在实际使用中,要灵活使用,不要过于死板,唯一目的是让代码可读性更好。
3.标识符命名:
开头:必须英文、汉字或下划线,注意虽然支持了汉字但是尽量不要使用。
名字中:可以包含汉字、英文字母、数字、和下划线,不能有其他任何标点符号。
不能使用关键字,如:yield , lambda , def , for , break , if , while , try , return等。
区分大小写。
不建议使用系统内置的模块名、类型名、函数名,以及导入的模块名及其其他成员名或者变量名或者自定的函数名。如:type , max , len , list , math , random , datetime , re等;
4.续行:
当一句代码过长,为了增加可读性,可以续行编写。
在行尾使用续行符"",表示下一行代码仍属于本条语句;
使用圆括号把多行代码括起来表示一条语句。
如:expression1 = 1 + 2 + 3\
+ 4 + 5
expression2 = (1 + 2 + 3
+ 4 + 5)
5.注释:
两种常用的注释形式:
井号#
井号#用于单行注释。对所选内容注释快捷键:CTRL+/
三引号
‘’’ ***** ‘’’,适用于大段说明性文本注释。
建议:对代码关键部分或者复杂部分进行注释,不做无意义注释;较为重要的注释段,可以使用多个等号隔开增加醒目突出重要性。
6.圆括号()
用来表示多行代码为一条语句;
用来修改表达式计算顺序或者增加代码可读性避免歧义.
二、Python开发环境安装
简介:IDLE、Anaconda、Spyder、Jubpter、Notebook(都只针对Windows下安装)
IDLE
默认与Python一起安装;
安装步骤 :python官网——downloads——for Windows——选择最新版本下载——双击安装——自定义安装+勾选path——全部勾选——高级选项:for all users+修改安装位置,add python to environment variables必须勾选——安装完成。
点击win“开始”,可以看到一些程序:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QWmGuZAZ-1583498563096)(2020-03-06_11-04-56.png)]
IDLE:就是Python的GUI编译环境IDLE,全称“Integrated Development and Learning Environment”,意思是集成开发与学习环境;
Python3.8 Module Docs:就是python的模块文档;
Python3.8 Manuals:就是python的用户手册;
Python 3.8:就是python的默认解释器;
关于IDLE的使用和注意事项,留意:保存文件时必须带上.py后缀。
Anaconda
1.特点
用Python语言进行机器学习和数据分析的绝佳平台;
可以快速下载1500+python语言数据科学包;
使用Conda管理库、依赖包和环境,好处是可以使用多个python开发环境;
可开发和训练机器学习、深度学习库,如scikit-leran,Tensor Flow等;
性能强大且可扩展的数据分析包,包括pandas(数据分析)、SciPy(科学计算)、NumPy(数据处理)等;
以及Matplotlib,Datashader等数据可视化扩展库;
2.安装
安装下载3.*版本——开始安装,关闭杀毒软件,选择just me——设置安装路径——不勾选“add anaconda to my path environment variable”,如果不打算使用多个版本的anaconda请勾选“register anaconda as my default python3.7”——安装完成;
检查是否完成:开始——Anaconda3(64-bit)→Anaconda Navigator,若成功启动anaconda navigator 则说明安装成功。
3.使用
Anaconda包含一个基于GUI的导航应用程序,使得开发变得容易;缺省应用包括spyder IDE、jupyter notebook、JupyterLab、Qt Console、Orange App、Glueviz等;
Spyder配置使用:
Spyder是一个用于科学计算的使用python编程语言的集成开发环境。它结合了综合开发工具的高级编辑、分析、调试功能、交互式执行等功能;
特点:
类MATLAB设计、自动补全、函数调用提示、随时访问多种工具的使用文档、工具丰富、功能强大。
其他的知识参考Spyder使用手册。
Jupyter Notebook使用
JupyterNotebook是基于网页的用于交互计算的应用程序,其可被应用与全过程计算:开发、文档编写、运行代码和展示结果。
简单来说:JupyterNotebook 是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示的程序。
特点:
高亮、缩进、tab补全、浏览器运行代码、以富媒体格式展示计算结果,富媒体格式包括:HTML、LaTeX、PNG、SVG等、对代码编写说明文档或语句时,支持Markdown语法,支持使用LaTex编写数学性说明。
三、扩展库安装与使用
3.1python环境管理
3.1.1Anaconda环境管理概述
Anaconda提供Python环境管理和包管理给你,可以方便在多个版本python之间切换和管理第三方包,而且方便安装、更新、卸载工具包,安装时可以自动安装相应的依赖包,同时还能使用不同的虚拟环境隔离不同要求的项目。
3.1.2打开管理终端
win:打开Anaconda Prompt
3.1.3创建新环境
conda create --name <env_name> <package_names>
注:env_name即创建的环境名,packgage_names即安装在环境中的包名。名称两边都不加尖括号<>。
补充:
如果需要安装指定的版本号,则可以在包名后面接=+具体版本号,如上例,即创建一个名为python3的环境,环境中安装版本为3.8.1的python。conda create --name python3 python=3.8.1
如果在新建的环境中创建多个包,则直接在包名后面以空格隔开,添加多个包名即可,如:conda create -n python3 python3.7 numpy pandas
即创建一个python3环境,环境中安装3.7版本python同时安装pandas。
3.1.4默认安装位置
默认情况下,新环境会被保存在/user/<user_name>/anaconda3/env目录下,其中user_name为系统当前用户的用户名。
3.1.5激活/退出环境
激活就是切换到该环境下:conda activate python3
激活成功后,在环境命令的开头处将显示新环境的环境名;
退出:conda deactivate
退出成功后,在环境命令的开头处讲显示base。
3.1.6删除环境
conda remove --name python3 --all
即移除环境名为python3的所有环境
3.1.7python扩展库安装
Python扩展库对象:
openpyxl 读写Excel文件
python-docx 读写Word文件
numpy 数组计算和矩阵计算
scipy 科学计算
pandas 数据分析
matplotlib 数据可视化或科学计算可视化
scrapy 爬虫框架
shutil 系统运维
pyopengl 计算机图形学编程
pygame 游戏开发
sklearn 机器学习
tensorflow 深度学习
添加清华大学Anaconda镜像
即TUNA(清华大学开源软件镜像站)提供了anaconda仓库的镜像,运行以下命令:conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
即可添加anaconda python 免费库
查询可供安装的扩展库版本:
在Anaconda Powershell Promptconda search --full-name pandas
即全名查索pandas这个库,从获取的版本中进行下载;
获取当前环境中已经安装的扩展库信息:
conda list
在指定的环境中安装包:
方法一:先进入想要安装的目标环境,然后输入安装命令,如:conda activate python3
conda install numpy
方法二:在输入安装命令时指定安装的环境名,如:conda intall -n python3 numpy
该方法在前面的新建anaconda环境时说到过该格式。
在当前环境中卸载包
conda remove <package_name>
在指定环境中卸载包
conda remove --name <env_name> <package_name>
3.2.导入与使用
3.2.1简介:
Python所有的内置对象不需要做任何的导入操作就可以直接使用,但是标准库对象必须先导入才能使用,扩展库则需要正确安装后才能导入和使用其中的对象。
3.2.2标准库导入:
方式一:import 模块名 [as 别名]
必须以“模块名.对象名”(“别名.对象名”)的形式访问对象。
例子:
import math
import random
import posixpath as pathprint(math.sqrt(16))
print(math.cos(math.pi/4))
print(random.choices(‘abcd’,k=8))
print(path.isfile(r’C:\Windows\notepad.exe’))#测试指定路径是否为文件
方式二:from 模块名 import 对象名[as 别名]
不需要使用模块名作为前缀,导入方式可以减少查询次数,提高访问次数。
form math import pi as PI
from os.path import getsize
from random import chice
r = 3
print(round(PIrr,2))#计算半径为3的圆面积
print(getsize())#计算文件大小,单位为字节
print(choice(‘Python’))#从字符串中随机选择一个字符
方式三:from 模块名 import *
一次性导入模块所有对象,简单粗暴,但一般不推荐使用。
建议
建议一:编写代码时,一般先导入标准库对象再导入扩展库对象;
建议二:程序中只导入确实需要的标准库和扩展库对象,确定用不到的没必要进行导入,这样可以提高加载和运行速度,减少打包后的可执行文件体积。
补充知识:pip扩展库安管理工具
pip freeze
列出已安装模块及其版本号pip install package[==version]
在线安装指定模块(的指定版本)pip install package.whl
离线安装扩展模块pip install package1 package2
依次在线安装模块1、模块2pip install --upgrade package
升级模块pip uninstall package[==version]
卸载模块
如果计算上安装多个版本的python或希望在虚拟环境中安装模块,最好切换至相应环境的scripts文件夹下再执行命令。
3.3.常用标准库
3.3.1.Python内置对象:
即Python核心数据类型,数字、字符串、列表、字典、元组、集合、文件,以及类型、None、布尔型、程序单元类型(函数、模块、类)、python实现相关类型(已编译代码、调用栈追踪)
3.3.2Python标准库:
字符串:
re
正则表达式。用来判断字符串是否是你指定的字符串。StringIO
提供以文件形式来读写字符串struct
以二进制字节序列来解释字符串。可以通过格式化参数,指定类型、长度、字节序(大小端)、内存对齐等。
例子:
import re
print(re.findall(rf[a-z]*
,‘which foot hand fell fastest’))
结果为[‘foot’,‘fell’,‘fastest’]
数据类型:
datetime
pprint
:提供了“整洁打印”功能,具有打印任意Python数据结构的能力。collections
:高性能容器数据类型,实现了Python的通用内置容器、字典、列表、集合和元组专门的数据类型。
数学运算:
math
:数学函数。提供了由C标准的数学函数访问,该库的函数不适用于复数。cmath
:为复数提供的数学函数。operator
:重载运算符。random
:各种分布的伪随机数的生成器。
文件和目录:
os.path
:常用路径名操作;filecmp
:文件或目录的比较;shutil
:高级的文件操作,支持文件复制和删除;
操作系统
time
:时间获取和转换,各种与时间相关的函数。argparse
:命令行选项、参数和子命令的解析器。io
:提供接口处理IO流。logging
:python的日志工具,提供日志的记录的API。logging.config
:python日志配置,用于配置日志模块的API。os
:提供丰富的与MAC、NT、Posix等操作系统进行交互的能力。
os提供了不少与操作系统相关联的函数
import os
print(os.getcwd()) #返回当前的工作目录
os.chdir(r’C:\Users\winner\Python3Learn\Lesson1Code’) #修改当前的工作目录
os.system(‘mkdir today’) #执行系统命令mkdir
print(os.getcwd())#返回当前的工作目录
建议使用“import os”,而不是“from os import *”,这样可以保证随操作系统不同而有所变化的os.open()不会覆盖内置函数open()。
在使用os这样的大规模模块时,内置的dir()和help()函数非常有用。
sys
:提供访问和维护python解释器的能力。这包括了提示信息、版本、整数的最大值、可用模块、路径钩子、标准错误、标准输入输出的定位和解释器调用的命令行参数。
来源:CSDN
作者:GRIT张
链接:https://blog.csdn.net/GRIT_zhang/article/details/104689873