1、Python快速入门(0529)
学习来自马哥教育的视频,感谢马哥
编程语言:
用户:
问题空间
计算机:解决问题
解空间
抽象:
机器代码-->微码编程-->高级语言
(语言的高下级的是根据语言是否被人类容易理解或者更接近于人类的理解范围)
python:可当三种工具使用
shell编程:
编程语言:用于实现粘结
框架:web、Django
缺陷:
字节码:bytecode
python的执行流程
python的源程序都表现为.py的文件,源代码文件由编译器(Complier解释器)在第一次被执行时编译为格式为.pyc的字节码, 字节码在解释器(interpreter解释器)中运行,这是interpreter被成为PVM(python的虚拟机)。
当编译(complier)结束时,由PVM读取bytecode,而后在处理器(prosseor)上予以执行。
Python的实现:三种
1、CPython
原始、标准的实现方式
2、Jython
用于与Java语言集成的实现
3、IronPython
用于与.NET框架集成的实现
Python性能优化工具
1、Psyco
Python语言的一个扩展模块,可以即时对程序代码进行专业的算法优化,可以在一定程度上提高程序的执行速度,尤其是在程序中有大量循环操作时
目前开发工作已经停止,由PyPy所接替
2、PyPy
PyPy是用于python实现的python解释器
python语言的动态编译器,是Psyco的后继项目
可以运行在Linux的32位和64位、MacOSX和Windows的32位平台中
3、Shed Skin
python编译器,能够将python代码装换成优化的C++代码
编写、执行python代码
1、交互式解释器
直接启动python,其显示信息取决于程序版本及操作系统等
2、python程序文件
(1) 交互式模式下的程序执行完成后难以再次运行
(2) 将编写的程序保存指文件(.py)中方便多次运行
python的此类包含了一系列预编写好的语句的程序文件称作“模块”
能够直接运行的模块文件通常称作脚本(即程序的顶层文件)
python分为程序入口文件和模块文件(即函数文件),模块文件自己无法运行,要利用程序入口文件调用之后才能运行,模块文件可以编写一段代码自己检查是否有语法错误。
python程序文件
1、python源程序文件通常以.py为扩展名
(1)例如,新建一个名为firstpycode.py的文件,内容如下所示
#!/usr/bin/python
import platform
print platform.uname()
uname可以理解为platform模块提供的函数
(2)第一行为shebang,即执行脚本时通知内容要启动的解释器
(3)第二行通过import导入一个python模块platform
(4)第三行打印platform模块的uname方法的执行结果
2、给予此脚本以执行权限,并执行即可
shebang魔术:任何程序要想启动执行,通常表现为一个进程,这个进行要想启动,必须向内核注册,由内核给它生成一个进程描述机构,才能运行起来。所以内核必须要理解这是一个可执行程序,按照可执行程序内部的各种执行结构,了解它的执行入口,内核把执行入口放到CPU上,内核退出,程序执行。
#!/usr/bin/python:文本文件不是机器代码,就没办法执行,第一行(#!/usr/bin/python)就是生成一段特殊结构,内核通过读取这一行中的代码,就会知道这个文件不能拿到CPU上直接执行,而是先调用python程序,由python程序把print platform,username()这一段代码当作参数来执行。而python自己是能够在内核上执行的二进制应用程序,所以此处当python二进制应用程序执行起来以后,就由python把代码加载进来进行执行。
python程序文件
1、python程序可以分解成模块、语句、表达式和对象
(1)程序由模块构成
(2)模块包含语句
(3)语句包含表达式
(4)表达式建立并处理对象
表达式是”某事“,而语句是“做某事(即指令)”;
例:“3+4”是某事,而"print 3+4"则是做某事;
语句的特性:它们改变了事物,例如:赋值语句改变了变量,print语句改变了屏幕输出等;
python一切皆对象
Python IDE
1、IDLE
标准python环境提供
2、Eclipse和PyDev
3、Python Win
4、Komodo
5、Wingware
6、PyCharm
交互式解释器
python程序文件.py
面向过程
以指令为中心,由指令处理数据
如何组织代码解码问题
面向对象
以数据为中心,所有的处理代码都围绕数据展开
如何设计数据结构组织数据,并提供对此类数据所允许处理操作
使用高版本python简单方法:
1、编译安装新版本至某特定路径
2、pyenv
编译安装python
1、准备开发环境
Python-2.7.6.tar
ipython-1.2.1.tar
需要使用readline-devel
# yum install readline-devel
# tar xf Python-2.7.6.tar.xz
# ./configure --prefix=/usr/local/python27
#make && make install
2、测试
# /usr/local/python27/bin/python2.7
3、安装ipython
# tar xf ipython-1.2.1.tar.gz
# cd ipython-1.2.1
# /usr/local/python27/bin/python2.7 setup.py build //编译
# /usr/local/python27/bin/python2.7 setup.py install //安装
# ls /usr/local/python27/bin/ //安装目录
链接python2.7和ipython
# ln -sv /usr/local/python27/bin/python2.7 /usr/local/bin/python27 //为了调用方便,为安装程序创建软连接
# ln -sv /usr/local/python27/bin/ipython /usr/local/bin/ //同上
快速入门
数据结构
1、通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他的数据结构;
2、python的最基本数据结构是序列;
3、序列中的每个元素被分配一个序号-----即元素的位置,也称为索引:索引从0开始编号;
4、Python包含六种内建的数据序列:列表、元素、字符串、Unicode字符串、buffer对象和xrange对象。
Python的关键要素
1、基本数据类型
2、对象引用
3、组合数据类型
4、逻辑操作符
5、控制流语句
6、算术操作符
7、输入/输出
8、函数的创建与调用
要素1:基本数据类型
1、任何程序语言都必须能够表示基本数据项
2、python中的基本数据类型有:
Integral类型
整型:不可变类型
-257,201939249239239
布尔型
true,false
浮点类型
浮点数
3.1415
复数
3+6j
十进制数字
字符串
‘GNU is not Unix’,“hello”,“world”
变量分为可变类型和不可变类型,其中整型就是不可变类型,
布尔型不能加引号
python中所有的字符全都需要引号引起来,单双引号不加区别,但必须有引号,数值无需引号
不可变类型:变量num定义为对象2时,对象是不可以被修改的(注意2在python中被保存为对象),变量可以被修改
定义了变量num所引用的对象(2或3)在内存中的地址,即变量num的对象是2时,内存地址是18512976,是3时,地址就为18512952,id不一样就表示对象在内存中不是同一个位置,即对象不一样。
所以2没有动,3也没有动,只是变量所指向的内存空间发生改变了
字符串不加区别的用单双引号引起来,字符串在python中本身是一种序列,是把多个字符按照特定次序组织起来的一种数据结构,所以称为序列,所有序列可以通过索引、下标进行引用。
这里jerry就是一个序列
字符串是一个组合,可以只引用一个变量,是不可变类型
要素2:对象引用(变量)
python将所有数据存为内存对象;
python中,变量事实上是指向内存对象的引用;
动态类型:在任何时刻,只要需要,某个对象引用都可以重新引用一个不同的对象(可以是不同的数据类型);
内建函数type()用于返回给定数据项的数据类型;
“=” 用于将变量名与内存中的某对象绑定:如果对象事先存在,就直接进行绑定;否则,则由“=”创建引用的对象。
变量和对象是分开存放的
在内存空间中存储一个jerry字符串,jerry在内存要有地址,需要指定起始地址,
变量名称自身name也在内存中,让 name = jerry可以理解为声明了两个对象,name是一个指针指向了jerry的起始地址,
从而把Jerry这个内存对象中的值赋值给name了。
如果要把name改为等于tom,jerry是不可变的,所以一旦name=tom,那么就会在内存中再找一个空间存tom,
而后将name的指向结果指向tom的起始位置。jerry这个对象依然还在内存中。
各种内存对象在不被引用时有垃圾回收器回收,在内存对象计数为0时,就会被垃圾回收器回收
对象事先存在,直接绑定
要素2:对象引用(变量)
1、变量命令规则
只能包含字母、数字和下划线,且不能以数字开头
区分字母大小写
禁止使用保留字
python2与python3的保留字有所不同
2、命令惯例
以单一下划线开头变量名(__x)不会被from module import *语句导入;
前后有下划线的变量名(__x__)是系统定义的变量名,对python解释器有特殊意义;
以两个下划线开头但结尾没有下划线的变量名(__x)是类的本地变量;
交互式模式下。变量名“_”用于保存最后表达式的结果
注意:变量名没有类型,对象才有
保留字是系统中的关键字,变量名“_”用于保存最后表达式的结果
变量名没有类型,对象才有
变量可以引用任何对象,比如刚才引用的是对象3,下一次可以引用对象jerry,在python中变量名只是内存引用的标识。
要素3:组合数据类型
1、数据结构:通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合
2、python常用的组合数据类型
序列类型
列表:使用[]创建。如["call","me","Ishmael","."]
元组:使用()创建,如('one','two')
字符串也属于序列类型
集合类型
集合
映射类型
字典
列表:是可变对象,支持原处修改,可以对数据本身进行修改
元组:不可变对象
列表和元组的区别在于:
列表是可改变的,可以直接把列表中的字符改为别的,比如“pig”改为“tree”,但是l1的内存对象位置不会发生改变(但pig这个元素的引用位置已经发生改变,即指针的起始位置改到tree的起始位置了)。
sheep改为dog,dog改为tom是在原处修改,在内存中直接改掉。原处修改后,sheep、dog、tom本身各自是字符串,并没有被改掉,而是l1[3]这个引用被改掉了,元素引用位置被改变了
字符串可以做切片,切片本身又创建新的对象,原片不发生任何改变
2表示步进长度
使用 type() 获取函数的类型
使用 id() 获取内存的位置
使用 dir() 获取模块的子命令
使用 len() 获取元素内部的个数
使用 help() 获取函数详细信息
要素3:组合数据类型
1、列表是可变序列,元组是不可变序列;
2、python中,组合数据类型也是对象,因此其可以嵌套;
['hello','world',[1,2,3]]
3、实质上,列表和元组并不真正存储数据,而是存放对象引用;
4、python对象可以具有其可以被调用的特定“方法(函数)”;
5、元组、序列以及字符串等数据是“有大小的”,也即,其长度可使用内置函数len()测量;
列表和元素并不真正存储数据,而是存放对象引用?
B为列表,列表要用[]括起来,使用[]定义一个列表时,列表内部就会有好几个元素,但它存的不是元素自身,而是元素引用,所以写“this”并不是在列表中存了this,而是在内存中找了个地方存了this,然后,把this存储的位置放到了列表(B)中,所以每一次改变,字符串自身不可变,但前面把sheep改为dog,之所以可以改变是因为把引用(B中)改变了,即引用了新的内存对象,引用改变了,看上去也就改变了,所以说列表是可变对象。如果B中存了this,其实并不是this(B中),而是存的是指向this的指针(指向A,即内存中存的this对象的起始位置),所以B中存的是引用。
要素4:逻辑操作符
1、逻辑运算是任何程序设计语言的基本功能;
2、python提供了4组逻辑运算
身份操作符
is:判定左端对象引用是否相同于右端对象引用;也可以与None进行;
比较操作符
<,>,<=,>=,==
成员操作符
in或not in:测试成员关系
逻辑操作符
and,or,not
name和test引用了同一个对象
对象引用可以不同,但是对象所属类型有可能相同。
要素5:控制流语句
1、控制流语句是过程式编程语言的基本控制机制
2、python的常见控制流语句
要素6:算术操作符
1、python提供了完整的算术操作集;
2、很多的python数据类型也可以使用增强的赋值操作符,如+=、-=等;
3、同样的功能,使用增强型赋值操作符的性能较好;
4、python的 int 类型是不可变的,因此增强型赋值的实际过程是创建了一个新的对象来存储结果后将变量名执行了重新绑定;
要素7:输入输出
1、现实中,具有实际功能的程序必须能够读取输入(如从键盘或文件中),以及产生输出,并写到终端或文件中;
2、python的输入/输出
输出
python3:print()函数
python2:print语句
输入
input()
raw_input()
raw_input() //交互式时不知道有什么区别或不加区别时使用
交互式,通过键盘输入的方式创建一个内存对象,只不过创建之后,直接输出了,以后再也无法引用了,因此应该引用一个变量,将创建的结果保存下来,方便多次引用。
如:定义一个变量a
要素7:输入/输出
1、python解释器提供了3种标准文件对象,分别为标准输入、标准输出和标准错误,它们在sys模块中分别以sys.stdin、sys.stdout和sys.stderr形式提供;
2、python的print语句实现打印--一个对程序员友好的标准输出流接口;
3、从技术角度来讲,print是把一个或多个对象转换为其文本表达形式,然后发送给标准输出或另一个类似文件的流;
(1) 在python中,打印与文件和流的概念联系紧密;
文件写入方法是把字符串写入到任意文件;
print默认把对象打印到stdout流,并添加了一些自动的格式化。
(2) 实质上,print语句只是python的人性化特性的具体实现,它提供了sys,stdout,write()的简单接口,再加上一些默认的格式设置;
(3) print接受一个逗号分隔的对象列表,并为行尾自动添加一个换行符,如果不需要,则在最后一个元素后添加逗号。
1、Python快速入门(0529)的更多相关文章
- 2、Python快速入门(0529)
要素7:输入/输出 1.python解释器提供了3种标准文件对象,分别为标准输入.标准输出和标准错误,它们在sys模块中分别以sys.stdin.sys.stdout和sys.stderr形式提供: ...
- Python快速入门
Python快速入门 一.基础概要 命名:h.py Linux命令行运行:python h.py 注释.数字.字符串: 基本类型只有数字与字符串 #python注释是这样写的 ''' 当然也可以这样 ...
- python快速入门及进阶
python快速入门及进阶 by 小强
- Python快速入门PDF高清完整版免费下载|百度云盘
百度云盘:Python快速入门PDF高清完整版免费下载 提取码:w5y8 内容简介 这是一本Python快速入门书,基于Python 3.6编写.本书分为4部分,第一部分讲解Python的基础知识,对 ...
- Python快速入门之与C语言异同
代码较长,建议使用电脑阅读本文. 10分钟入门Python 本文中使用的是Python3如果你曾经学过C语言,阅读此文,相信你能迅速发现这两种语言的异同,达到快速入门的目的.下面将开始介绍它们的异同. ...
- python快速入门——进入数据挖掘你该有的基础知识
这篇文章是用来总结python中重要的语法,通过这些了解你可以快速了解一段python代码的含义 Python 的基础语法来带你快速入门 Python 语言.如果你想对 Python 有全面的了解请关 ...
- Python与C语言基础对比(Python快速入门)
代码较长,建议使用电脑阅读本文. 10分钟入门Python 本文中使用的是Python3 如果你曾经学过C语言,阅读此文,相信你能迅速发现这两种语言的异同,达到快速入门的目的.下面将开始介绍它们的异同 ...
- 第02章 Python快速入门
007.快速入门,边学边用 008.变量类型 print(type(变量)) 查看变量的了类型 现在常用的变量的类型有整型.浮点型.字符型 009.List基础模块 类型转换:str(8 ...
- 「数据挖掘入门系列」Python快速入门
Python环境搭建 本次入门系列将使用Python作为开发语言.要使用Python语言,我们先来搭建Python开发平台.我们将基于Python 2.7版本.以及Python的开发发行版本Anaco ...
随机推荐
- 在sublime3中docblockr插件配置apidoc接口文档注释模板
写在前面: 将进行3个步骤配置 1.在sublime3中安装插件docblockr,可以参考http://www.cnblogs.com/jiangxiaobo/p/8327709.html 2.安装 ...
- 2017php经典面试题
1.PHP语言的一大优势是跨平台,什么是跨平台?一.PHP基础: PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows.Linux等)上配置,不 ...
- 处理hash冲突
“处理冲突” 的实际含义是: 为产生冲突的地址寻找下一个哈希地址. 1. 开放定址法 2. 链地址法 ------------------------------------------------- ...
- 剑指offer3
输入一个链表,从尾到头打印链表每个节点的值. 思路:首先借助一个栈,遍历链表中的每一个值,然后存储到栈中,利用栈的先进后出特点,然后添加到数组中返回. package demo3; import ja ...
- cocos代码研究(2)Layer学习笔记
auto layer = Layer::create(); /*************华丽分割线*************/ auto layer = LayerColor::create(Colo ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON SetComprise1
zw版[转发·台湾nvp系列Delphi例程]HALCON SetComprise1 procedure TForm1.Button1Click(Sender: TObject);var image0 ...
- Linux命令: 在线练习网址
1.https://www.tutorialspoint.com/unix_terminal_online.php 2.从 这里 https://www.tutorialspoint.com/inde ...
- 首屏渲染时间获取 performance.now()
Performance — 前端性能监控利器 最近在写一个监控脚本,终于有机会接触到了这一块,整理后写下了本文.Performance是一个做前端性能监控离不开的API,最好在页面完全加载完成之后 ...
- Rapid 2D-to-3D conversion——快速2D到3D转换
https://blog.csdn.net/qq_33445835/article/details/80143598 目前想做一个关于2D转3D的项目,由于国内资料比较少而且大部分都是基于国外的研究 ...
- 根据wsdl,基于wsimport生成代码的客户端
根据wsdl,基于wsimport生成代码的客户端 wsimport是jdk自带的命令,可以根据wsdl文档生成客户端中间代码,基于生成的代码编写客户端,可以省很多麻烦. 局限性:wsimport ...