认识python-个人笔记篇
认识python
1 .python 的发展历史
一种广泛使用的解释型、高级编程、通用型编程语言,由"龟叔"吉多·范罗苏姆创造,第一版发布于1991年。
Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。相比C++或Java,Python让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。
2、Python语言的优缺点
Python是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。
Python的特点如下:
1、简单
Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。
2、易学
Python极其容易上手,因为Python有极其简单的说明文档 。
3、速度快
Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的,运行速度非常快。
4、免费、开源
Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。
5、高层语言
用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
6、可移植性
由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE
PocketPC、Symbian以及Google基于linux开发的android平台。
7、解释性
一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。
8、面向对象
Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。
9可扩展性
如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。
10、可嵌入性
可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。
11、丰富的库
Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
Python优缺点:
Python采用强制缩进的方式使得代码具有较好可读性。而Python语言写的程序不需要编译成二进制代码。
优点:简单易上手、代码风格极简、 免费开源、完善的基础代码库、众多的第三方库、代码可读性高、 程序可移植
缺点:相比于编译型语言,速度会慢 点、代码不能加密
Python的应用及就业场景
国际互联网公司有哪些公司使用python开发应用的?
著名404网站YouTube、谷歌旗下的许多应用、拼多多、阿里巴巴、bilibili、yy等
Python的主要应用场景有哪些 ?
网络爬虫、数学处理、web编程、人工智能、机器学习、自动化运维、数据分析、数据挖掘、大数据领 域、自动化测试
3.python的版本和开发环境
1.python3.0
官网:http://www.python.org/download/下载安装包
特别要注意勾选:Add Python 3.5 to PATH,这样就可以不用配置环境变量了,然后选择立即安装
2、也可手动进行配置环境变量
进入电脑系统变量--path,如:C:\python36\
3、验证是否安装成功可以使用
在命令行里输入python,回车。如果看到诸如以下提示表示可以正常使用了
但是我在安装过程中还碰到了这样的问题:提示我计算机丢失python34.dll
重新下载python34.dll文件将其放到对应的目录下
python34.dll复制到C:\Windows\System32目录下(对应32位系统)
python34.dll复制到C:\Windows\SysWOW64目录下(对应64位的系统)
2.Anacond下载
下载地址:https://www.anaconda.com/download/
Anaconda 是跨平台的,有 Windows、macOS、Linux 版本,我们这里以 Windows 版本为例,点击那个 Windows 图标。
我这里选择下载
Python 2.7 version *--Python 2.7 版 *
64-Bit Graphical Installer (564 MB) --64位图形安装程序(564 MB)
当然,你也可以根据自己的实际情况,选择 Python 3.6版的,或者 32-Bit 版本的。
安装包有 564MB,因为网速的关系,下载时间可能会比较长,请耐心等待。我这里下载完成 Anaconda2-5.2.0-Windows-x86_64.exe文件了。
安装 Anaconda
双击下载好的 Anaconda2-5.2.0-Windows-x86_64.exe文件,出现如下界面,点击 Next 即可。
点击Next
点击 I Agree (我同意),不同意,当然就没办法继续安装啦。
Install for: Just me还是All Users,假如你的电脑有好几个 Users ,才需要考虑这个问题.其实我们电脑一般就一个 User,就我们一个人使用,如果你的电脑有多个用户,选择All Users,我这里直接 All User,继续点击 Next 。
Destination Folder 是“目标文件夹”的意思,可以选择安装到什么地方。默认是安装到 C:\ProgramData\Anaconda2文件夹下。你也可以选择 Browse... ,选择想要安装的文件夹。我这里 C 盘空间充裕,所以我直接就装到默认的地方。
这里提一下,Anaconda 很强大,占用空间也不小啊,2.6GB,差不多是一部高清电影的体积了。不过,为了学习,这点硬盘空间算什么呢。
继续点击 Next> 。
这里来到 Advanced Options 了,所谓的“高级选项”。如果你英文好,有一定背景知识的话,肯定明白这界面上的意思。两个默认就好,第一个是加入环境变量,第二个是默认使用 Python 2.7,点击“Install”,终于开始安装额。
安装时间根据你的电脑配置而异,电脑配置高,硬盘是固态硬盘,速度就更快。安装过程其实就是把 Anaconda2-5.2.0-Windows-x86_64.exe文件里压缩的各种 dll 啊,py 文件啊,全部写到安装目标文件夹里。
过程还是很漫长的,毕竟 2.6GB 的无数个小文件啊,请耐心等待。
经过漫长的等待,终于安装完成 Installation Complete (安装完成)了,点击最后一个 Next>。
点击Install Microsoft VSCode
点击 Finish,那两个 √ 可以取消。
4 .python 的编程规范
一 代码编排
1 缩进。4个空格的缩进(编辑器都可以完成此功能),不要使用Tap,更不能混合使用Tap和空格。
2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。
3 类和top-level函数定义之间空两行;类中的方法定义之间空一行;函数内逻辑无关段落之间空一行;其他地方尽量不要再空行。
二文档编排
1 模块内容的顺序:模块说明和docstring—import—globals&constants—其他定义。其中import部分,又按标准、三方和自己编写顺序依次排放,之间空一行。
2 不要在一句import中多个库,比如import os, sys不推荐。
3 如果采用from XX import XX引用库,可以省略‘module.’,都是可能出现命名冲突,这时就要采用import XX。
三空格的使用
总体原则,避免不必要的空格。
1 各种右括号前不要加空格。
2 逗号、冒号、分号前不要加空格。
3 函数的左括号前不要加空格。如Func(1)。
4 序列的左括号前不要加空格。如list[2]。
5 操作符左右各加一个空格,不要为了对齐增加空格。
6 函数默认参数的赋值符左右省略空格。
7 不要将多句语句写在同一行,尽管使用‘;’允许。
8 if/for/while语句中,即使执行语句只有一句,也必须另起一行。
四注释
总体原则,错误的注释不如没有注释。所以当一段代码发生变化时,第一件事就是要修改注释!
注释必须使用英文,最好是完整的句子,首字母大写,句后要有结束符,结束符后跟两个空格,开始下一句。如果是短语,可以省略结束符。
1 块注释,在一段代码前增加的注释。在‘#’后加一空格。段落之间以只有‘#’的行间隔。
2 行注释,在一句代码后加注释。比如:x = x + 1 # Increment x
但是这种方式尽量少使用。
3 避免无谓的注释。
五文档描述
1 为所有的共有模块、函数、类、方法写docstrings;非共有的没有必要,但是可以写注释(在def的下一行)。
2 如果docstring要换行,参考如下例子
"""Return a foobang
Optional plotz says to frobnicate the bizbaz first.
"""
六命名规范
总体原则,新编代码必须按下面命名风格进行,现有库的编码尽量保持风格。
1 尽量单独使用小写字母‘l’,大写字母‘O’等容易混淆的字母。
2 模块命名尽量短小,使用全部小写的方式,可以使用下划线。
3 包命名尽量短小,使用全部小写的方式,不可以使用下划线。
4 类的命名使用CapWords的方式,模块内部使用的类采用_CapWords的方式。
5 异常命名使用CapWords+Error后缀的方式。
6 全局变量尽量只在模块内有效,类似C语言中的static。实现方法有两种,一是__all__机制;二是前缀一个下划线。
7 函数命名使用全部小写的方式,可以使用下划线。
8 常量命名使用全部大写的方式,可以使用下划线。
9 类的属性(方法和变量)命名使用全部小写的方式,可以使用下划线。
9 类的属性有3种作用域public、non-public和subclass API,可以理解成C++中的public、private、protected,non-public属性前,前缀一条下划线。
11 类的属性若与关键字名字冲突,后缀一下划线,尽量不要使用缩略等其他方式。
12 为避免与子类属性命名冲突,在类的一些属性前,前缀两条下划线。比如:类Foo中声明__a,访问时,只能通过Foo._Foo__a,避免歧义。如果子类也叫Foo,那就无能为力了。
13 类的方法第一个参数必须是self,而静态方法第一个参数必须是cls。
七编码建议
1 编码中考虑到其他python实现的效率等问题,比如运算符‘+’在CPython(Python)中效率很高,都是Jython中却非常低,所以应该采用.join()的方式。
2 尽可能使用‘is’‘is not’取代‘==’,比如if x is not None 要优于if x。
3 使用基于类的异常,每个模块或包都有自己的异常类,此异常类继承自Exception。
4 异常中不要使用裸露的except,except后跟具体的exceptions。
5 异常中try的代码尽可能少。比如:
try:
value = collection[key]
except KeyError:
return key_not_found(key)
else:
return handle_value(value)
要优于
try:
# Too broad!
return handle_value(collection[key])
except KeyError:
# Will also catch KeyError raised by handle_value()
return key_not_found(key)
6 使用startswith() and endswith()代替切片进行序列前缀或后缀的检查。比如
Yes: if foo.startswith(‘bar’):优于
No: if foo[:3] == ‘bar’:
7 使用isinstance()比较对象的类型。比如
Yes: if isinstance(obj, int): 优于
No: if type(obj) is type(1):
8 判断序列空或不空,有如下规则
Yes: if not seq:
if seq:
优于
No: if len(seq)
if not len(seq)
9 字符串不要以空格收尾。
10 二进制数据判断使用 if boolvalue的方式。
5 .python 的导库和拓展库
python中的对象大概可以分为三类:内置对象、标准库对象和扩展库对象。其中内置对象是直接编译进解释器的可以直接使用,没有对应的Python源代码;标准库对象是随Python安装的,但是需要导入才能使用,相应的Python源代码在安装目录中的Lib目录中;扩展库需要单独安装之后再导入才能使用,其Python源代码在安装目录的Lib\site-packages目录中,也有一些扩展库的核心代码编译成为dll或pyd的动态链接库。关于扩展库的安装请参考Python扩展库安装工具pip的高级用法和Python安装扩展库与打包成exe可执行文件的方法
本文重点介绍标准库对象和扩展库对象的导入和使用。
1)import 模块名 [as 别名]
使用这种方式导入以后,使用时需要在对象之前加上模块名作为前缀,必须以“模块名.对象名”的形式进行访问。如果模块名字很长的话,可以为导入的模块设置一个别名,然后使用“别名.对象名”的方式来使用其中的对象。
>>> import math #导入标准库math
>>> math.sin(0.5) #求0.5(单位是弧度)的正弦
0.479425538604203
2)from 模块名 import 对象名[ as 别名]
使用这种方式仅导入明确指定的对象,并且可以为导入的对象起一个别名。这种导入方式可以减少查询次数,提高访问速度,同时也可以减少程序员需要输入的代码量,不需要使用模块名作为前缀。
>>> from math import sin #只导入模块中的指定对象
>>> sin(3)
0.1411200080598672
>>> from math import sin as f #给导入的对象起个别名
>>> f(3)
0.1411200080598672
3)from 模块名 import *
这是上面用法的一种极端情况,可以一次导入模块中通过__all__变量指定的所有对象。
>>> from math import * #导入标准库math中所有对象
>>> sin(3) #求正弦值
0.1411200080598672
>>> gcd(36, 18) #最大公约数
18
4)模块导入时的搜索路径
不管以哪种形式导入模块并使用其中的对象,Python首先在当前目录中查找需要导入的模块文件,如果没有找到则从sys模块的path变量所指定的目录中查找,如果仍没有找到模块文件则抛出异常提示模块不存在。可以查看sys模块中path变量的值来获知Python导入模块时搜索模块的路径,也可以使用append()方法向其中添加自定义的文件夹以扩展搜索路径。
Python还支持从zip文件中导入模块。假设当前文件夹中有个内含Vector3.py文件的testZip.zip文件,首先导入sys模块,然后执行sys.path.append(‘testZip.zip’),然后即可导入Vector3.py文件作为模块来使用。
>>> import sys
>>> sys.path.append('testZip.zip')
>>> import Vector3
>>> Vector3.__file__ #查看已导入模块对应的程序文件
'testZip.zip\\Vector3.py'