python历史
1,1989年圣诞节,Guido von Rossum开始编写python语言编译器
2,1991年2月,第一个python编译器诞生,是c语言实现的,后面又出现了c#和java版本,可以调用c库函数
3,1994年python1.0正式诞生
4,2000年10月 python2.0发布,实现完整版的垃圾回收,unicode支持,开发过程更加透明,社区影响力扩大,生态圈慢慢形成
5,2008年12月 python3.0发布,并不兼容2.0和之前的版本,但是许多项目还在2.0运行和维护,后来3.0的许多特性被移植到了2.6/2.7版本
python优点
1,简单明确,一件事只用一种方法
2,学习门槛低,容易上手
3,代码开源,社区和生态圈强大,不用重复造轮子
4,解释性语言,天生的平台移植性
5,支持主流编程范式(面向对象和面向函数)
6,扩展性强和可嵌入性,调用c/c++,也可以反向调用
7,代码规范度高,适合代码洁癖的强迫症人群
python缺点
1,执行效率低,计算密集型任务最好由c/c++编写
2,代码无法加密,但是现在的软件公司都是卖服务而不是卖软件,这个问题很淡化了
3,可选框架太多,旧web框架就有100多个,有选择的地方就有错误
python应用领域
云基础设施,DevOps,网络爬虫,数据分析挖掘,机器学习等场景;Web后端开发,数据api开发,自动化运维,自动化测试,科学计算和可视化,数据分析,量化交易,机器人开发,图像识别和处理等职位
环境搭建
......
基础语法
1,计算机硬件组成:运算器,控制器,存储器,输入输出设备。运算器和控制器组成cpu,用来执行各种运算和控制指令以及处理计算机中的数据。程序就是指令的集合,将指令按照一定的方式组织到一起。
2,变量类型
整形(python2.x有int和long两种类型,python3.x只有一种int类型),支持二进制、八进制、十进制、十六进制转换
浮点型 支持科学技术法
字符串型 单引号和双引号中的任意文本比如'hello'和"hello",字符串还有原始字符串表示法、字节字符串表示法、Unicode字符串表示法,而且可以书写成多行的形式(用三个单引号或三个双引号开头,三个单引号或三个双引号结尾)
布尔型 True和False,注意大小写
复述型 形如3+5j,跟数学上的复数表示一样,唯一不同的是虚部的i换成了j
变量命名
字母数字下划线组成,不能用字符串开头
大小写敏感
不能跟关键字冲突
PEP8要求(小写字母,下划线拼接;受保护的实例属性用下划线开头;私有实例属性用双下划线开头)
运算符
[] [:] ~ + - * / % // << >> & ^ ` >= <= > < == != is (is_not)in (not in) not or and
分支循环
if elif else 不使用花括号,使用缩进区分代码块
for in 循环
while循环
字符串 列表 元组 的操作和相互转换,字典 集合
面向对象基础
1,面向对象:把一组数据结构和处理他们的方法组成对象,相同的行为对象归纳为类,通过类的封装隐藏内部细节,通过继承实现类的特化和泛化,通过多态实现基于对象类型的动态分派
2,封装:隐藏一切可以隐藏的实现细节,只向外界暴露(提供)简单的编程接口
3,类之间的关系 is-a(继承/范化) has-a(关联) use-a(依赖)
4,继承、多态:在已有的类的基础上创建新类,将已有类的属性和方法直接继承下来,减少重复代码(父类 超类 基类 子类 派生类 衍生类)。我们经常用子类对象去替换父类对象,叫做里氏替换原则。子类可以替换父类的方法(重写)。这样不同的子类对象会出现不同的行为(多态)
图形界面
1,基于tkinter模块的GUI,python默认的GUI开发模块是tkinter,基于TK(跨平台GUI控件),python并不擅长开发GUI应用,还有wxPython、pyQt、pyGTK等
2,GUI通常是事件驱动的,进入主事件循环就要监听鼠标键盘等,并对应代码逻辑处理不同的事件,处理之后继续监听。
3,TK为控件的摆放提供三种布局(Placer,Packer,Grid)
4,Pygame是开源的游戏开发python模块,用于多媒体应用的开发,包含对图像,声音,事件,视频,碰撞等支持,基于SDL(跨平台多媒体库c实现)。
文件和异常
1,文件操作符 w r a x b t +
2,异常处理 try exxept ; with上下文环境管理
正则表达式
1,python提供re模块支持正则表达式
进程和线程
1,进程是系统执行的程序,操作系统以进程为单位分配存储空间,每个进程有自己的地址空间,数据栈和辅助数据,操作系统管理调度进程的执行,分配进程的资源。fork来创建新的进程,进程之间的通信通过IPC实现,包括管道、信号、套接字、共享内存区等
2,线程cpu的执行单元,一个进程可以有多个并发的线程。线程在同一个进程下所以事共享上下文的,数据共享比较简单。
3,python可以通过multiprocessing来进程多进程管理,multiprocessing的queue类可以被多个进程共享的队列,底层信号通过管道和信号量机制实现的
4,python的多线程通过thread模块,但是太过底层很多功能没有,所以大家用的比较多的事threading
5,多线程并不能发挥cpu的多核特性,python解释器有一个全局解释器锁,任何线程执行前都必须获得GIL锁,每执行100字节码,就会释放锁,让别的线程执行
网络编程
1,http协议,requests库是python基于http协议的第三方库,安全,方便
2,套接字,c语言实现的库文件,用于进程之间通信和网络编程,实际开发中套接字分为三类:流套接字,数据报套接字,原始套接字
3,SMTP协议,是简历在TCP协议之上的可靠数据传输的应用级协议,python通过smptlib模块实现
图像和办公文档处理
1,python的OpenPyXL模块,LibreOffice Calc和OpenOffice Calc能够处理excel表格
 
 
 

一,python简介 笔记的更多相关文章

  1. python学习笔记1之-python简介及其环境安装

    python学习笔记之-python简介及其环境安装 最近几年python之火不用多说,最近开始利用时间自学python,在学习的过程中,按照自己的思路和理解记录下学习的过程,并分享出来,如果正好你也 ...

  2. Python 学习笔记(一)Python 简介

    Python 简介 Python  1989年 吉多 · 范罗苏姆(Guido van Rossum)发明 Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言 Python 应用于众 ...

  3. Python学习笔记之发展史、简介以及特点

    Python发展史 Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的. Python 本身也是由诸多其他语言发展而来的,这包括 ...

  4. python学习之路-1 python简介及安装方法

    python简介 一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. 目前最新版本为3.5.1,发布于2015年12月07日 ...

  5. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

  6. Python学习笔记基础篇——总览

    Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...

  7. 近期Python学习笔记

    近期Python 学习笔记--一篇文入门python 作者:Pleiades_Antares(www.cnblogs.com/irischen) 写在前面的话 想学Python已经许久,一年多以前(应 ...

  8. Deep learning with Python 学习笔记(9)

    神经网络模型的优化 使用 Keras 回调函数 使用 model.fit()或 model.fit_generator() 在一个大型数据集上启动数十轮的训练,有点类似于扔一架纸飞机,一开始给它一点推 ...

  9. python学习笔记目录

    人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...

随机推荐

  1. python对列表中名字进行修改,在每个名字后面加入‘the Great’

    第一种方法:使用enumerate函数 def make_great(magicians): for i ,name in enumerate(magicians): magicians[i] = m ...

  2. 190628 - 解决新版本LastPass没有谷歌套件时打开就闪退的问题.md

    目录 解决新版本LastPass没有谷歌套件时打开就闪退的问题 可用解决方案 可用解决方案3 可用解决方案2 可用解决方案1 尝试安装 碰到的问题列表 问题现象 解决新版本LastPass没有谷歌套件 ...

  3. char与varchar的区别

    char的长度是不可变的,而varchar的长度是可变的,也就是说, 定义一个char[10]和varchar[10],如果存进去的是‘csdn’, 那么char所占的长度依然为10, 除了字符‘cs ...

  4. strip使用

    strip作用:去掉空格.以及想要去掉的字符,实例如下: In [42]: import subprocess In [42]: output=subprocess.check_output([&qu ...

  5. Botanical Dimensions:借助第九代智能英特尔® 酷睿™ 处理器实现独特沉浸式体验

    本文介绍位于洛杉矶的互动体验设计工作室 Master of Shapes (MOS) 打造 Botanical Dimensions 时所做出的技术努力.在这种互动式多世界体验中,参与者将穿越丛林,寻 ...

  6. 利用WatchService监控C盘根目录下的文件情况

    public static void main(String[] args) throws IOException, InterruptedException { WatchService watch ...

  7. java-循环变量定义问题

    第15行,这样就会报错.

  8. 【DSP开发】【VS开发】PCIE设备扫描过程

    初步了解完PCI总线标准之后,我们接下来正式开始PCIe设备的漫游之旅.从我们按下PC的电源按钮开始,BIOS就接管系统控制权开始工作,它会先进行一些内存和设备的初始化工作(当然,也包括我们的PCI设 ...

  9. 【VS开发】【DSP开发】TCP和UDP数据包结构

    TCP (Transport Control Protocol)传输控制协议: 1.TCP数据包的分组格式: A,源端口:标识源端应用进程. B, 目的端口:标识目的端应用进程. C, 序号:在SYN ...

  10. vue中 Vue.set 的使用

    Vue.set(vm.items, indexOfItem, newValue) 1.vm.items :源数据:2.indexOfItem : 要修改的数据的键3.newValue : 要修改的数据 ...