Python第一天

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python第一天相关的知识,希望对你有一定的参考价值。

第一章:编程语言的介绍:                                           

  • 什么是编程语言?为什么要编程?

 

答:编程语言即语言,语言的本质就是沟通,编程语言则是程序员与计算机沟通的介质。计算机按照人们事先为其编写好的程序自动地去完成计算,这就是编程

  • 编程语言的种类:

编程语言的种类分为低级语言和高级语言:

1、低级语言

代表语言有机器语言、汇编语言。

优点:直接执行、运行速度快

缺点:源程序冗长、复杂、容易出错、对程序员计算机专业水平要求极高。

2、高级语言

优点:大大简化了程序中的指令。程序员不需要太多的计算机专业知识

缺点:高级语言所编译的程序不能直接被计算机识别,必须经过转换才能被执行。

和低级语言相比,高级语言去掉了与具体操作有关但与完成工作无关的细节,大大简化了程序中的指令,同时,也省略了很多细节,对程序员也不需要太多的专业计算机知识。高级语言不能直接被计算机识别,必须经过转换才能被计算机执行。按转换方式可将它们分为两类:

(1)编译型:

程序在执行之前,就将程序源代码“翻译”成机器指令,并保存成二进制文件

优点:编译后的代码可以直接在机器上运行,运行速度快

缺点:调试程序麻烦,程序一旦修改,必须先修改源代码,再重新编译后才能执行。

(2)解释型

程序执行的方式 类似生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码。

优点 :灵活、调试程序方便 ,程序一旦出错,立即调试立即可以测试结果

缺点:效率较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离解释器。运行速度相对编译型语言而言较慢。

总结:程序语言经历了机器语言、汇编语言、高级语言的过程。

开发效率从低到高排序:机器语言—————>汇编语言——————>高级语言。

执行效率从高到低排序:机器语言—————>汇编语言——————>高级语言。

掌握难度从难到易排序:机器语言—————>汇编语言——————>高级语言。

3、主流的高级语言

技术分享

第二章:Python语言的介绍                                         

1、python的介绍

技术分享
python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。

最新的TIOBE排行榜,Python赶超PHP占据第4, Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。

Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。
View Code

2、python的主要应用领域

技术分享
WEB开发——最火的Python web框架Django, 支持异步高并发的Tornado框架,短小精悍的flask,bottle, Django官方的标语把Django定义为the framework for perfectionist with deadlines(大意是一个为完全主义者开发的高效率web框架)

网络编程——支持高并发的Twisted网络框架, py3引入的asyncio使异步编程变的非常简单

爬虫——爬虫领域,Python几乎是霸主地位,Scrapy\\Request\\BeautifuSoap\\urllib等,想爬啥就爬啥

云计算——目前最火最知名的云计算框架就是OpenStack,Python现在的火,很大一部分就是因为云计算

人工智能——谁会成为AI 和大数据时代的第一开发语言?这本已是一个不需要争论的问题。如果说三年前,Matlab、Scala、R、Java 和 Python还各有机会,局面尚且不清楚,那么三年之后,趋势已经非常明确了,特别是前两天 Facebook 开源了 PyTorch 之后,Python 作为 AI 时代头牌语言的位置基本确立,未来的悬念仅仅是谁能坐稳第二把交椅。

自动化运维——问问中国的每个运维人员,运维人员必须会的语言是什么?10个人相信会给你一个相同的答案,它的名字叫Python
金融分析——我个人之前在金融行业,10年的时候,我们公司写的好多分析程序、高频交易软件就是用的Python,到目前,Python是金融分析、量化交易领域里用的最多的语言
科学运算—— 你知道么,97年开始,NASA就在大量使用Python在进行各种复杂的科学运算,随着NumPy, SciPy, Matplotlib, Enthought librarys等众多程序库的开发,使的Python越来越适合于做科学计算、绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比,Python是一门通用的程序设计语言,比Matlab所采用的脚本语言的应用范围更广泛
游戏开发——在网络游戏开发中Python也有很多应用。相比Lua or C++,Python 比 Lua 有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑,与 Lua 相比,Python 更适合作为一种 Host 语言,即程序的入口点是在 Python 那一端会比较好,然后用 C/C++ 在非常必要的时候写一些扩展。Python 非常适合编写 1 万行以上的项目,而且能够很好地把网游项目的规模控制在 10 万行代码以内。另外据我所知,知名的游戏<文明> 就是用Python写的。
View Code

3、python的应用

技术分享
谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬虫、Google广告等项目都在大量使用Python开发
CIA: 美国中情局网站就是用Python开发的
NASA: 美国航天局(NASA)大量使用Python进行数据分析和运算
YouTube:世界上最大的视频网站YouTube就是用Python开发的
Dropbox:美国最大的在线云存储网站,全部用Python实现,每天网站处理10亿个文件的上传和下载
Instagram:美国最大的图片分享社交网站,每天超过3千万张照片被分享,全部用python开发
Facebook:大量的基础库均通过Python实现的
Redhat: 世界上最流行的Linux发行版本中的yum包管理工具就是用python开发的
豆瓣: 公司几乎所有的业务均是通过Python开发的
知乎: 国内最大的问答社区,通过Python开发(国外Quora)
春雨医生:国内知名的在线医疗网站是用Python开发的
除上面之外,还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝 、土豆、新浪、果壳等公司都在使用Python完成各种各样的任务。
View Code

4、python的发展史

技术分享
1989年,Guido开始写Python语言的编译器。

 

1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。

 

Granddaddy of Python web frameworks, Zope 1 was released in 1999

 

Python 1.0 - January 1994 增加了 lambda, map, filter and reduce.

 

Python 2.0 - October 16, 2000,加入了内存回收机制,构成了现在Python语言框架的基础

 

Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 诞生

 

Python 2.5 - September 19, 2006

 

Python 2.6 - October 1, 2008

 

Python 2.7 - July 3, 2010

 

In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible

 

Python 3.0 - December 3, 2008 (这里要解释清楚 为什么08年就出3.0,2010年反而又推出了2.7?是因为3.0不向下兼容2.0,导致大家都拒绝升级3.0,无奈官方只能推出2.7过渡版本)

 

Python 3.1 - June 27, 2009

 

Python 3.2 - February 20, 2011

 

Python 3.3 - September 29, 2012

 

Python 3.4 - March 16, 2014

 

Python 3.5 - September 13, 2015

 

Python 3.6 - 2016-12-23 发布python3.6.0版
View Code

5、python是一种什么样的语言?

技术分享

 

Python代码是先编译成字节码,再交给python解释器执行的。

1. 首先需要知道,只有在import导入py文件时,才会产生pyc字节码文件,该字节码文件是可以代替源文件而直接执行的

2. 但每次执行py文件,产生的字节码并不会保留下来,也就是说,每次执行py文件,都是要重新经历一遍:py文件->字节码-->python解释器-->机器码,每次都是一个重新解释执行的过程。

6、Python语言与其它语言的对比

技术分享
C 和 Python、Java、C#

    C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作

其他语言: 代码编译得到 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行

CPython解释器是由C语言开发的

  对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.
  对于速度:Python的运行速度相较与C,绝逼是慢了

Python 和 Java、C#

  对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持
  对于速度:Python在速度上可能稍显逊色

1.速度永远不是关键

对大多数的应用程序来说,并不需要这么快的运行速度,因为用户根本感觉不出来。例如开发一个下载MP3的网络应用程序,C程序的运行时间需要0.001秒,而Python程序的运行时间需要0.1秒,慢了100倍,但由于网络更慢,需要等待1秒,你想,用户能感觉到1.001秒和1.1秒的区别吗?这就好比F1赛车和普通的出租车在北京三环路上行驶的道理一样,虽然F1赛车理论时速高达400公里,但由于三环路堵车的时速只有20公里,因此,作为乘客,你感觉的时速永远是20公里。

2.加密也不是关键

对于编译型语言如C语言来说,可以将编译后的代码发给用户,用户反解几乎是不可能的,相当于自带加密功能了。而解释型语言如python只能发布源码给用户,但其实这没什么问题,现在主流的思想是软件开源,千万别意淫你的软件有多么大的商业价值。
View Code

第三章:Python解释器安装及多版本共存(重点)      

Python解释器的种类:

技术分享
Cpython(最常用的版本)
    Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
Jyhton
    Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。
IronPython
    Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
PyPy(特殊)
    Python实现的Python,将Python的字节码字节码再编译成机器码。
RubyPython、Brython ...
View Code

除了PyPy之外,其它python解释器对应执行的关系图如下

技术分享

Python的安装与环境配置:

1、在windows下Python更新与多版本共存,具体操作如下:                                                                                 

(1)Windows下Python更新至最新版

  卸载重装即可

(2)Windows下Python多版本共存

  • 去python官网上下载windows版本的python2和python3
  • 安装python2和python3
  • 安装完python2.7后,打开安装路径,把python.exe执行文件改名为python2.exe

技术分享

  • 添加环境变量:此电脑--属性--高级系统设置--高级--环境变量--系统变量--Path--编辑

技术分享

技术分享

  • 测试是否成功:打开终端,在终端中输入分别python2和python测试是否成功

技术分享

 

2、Linux下Python版本更新与多版本共存                                                                                    

(1)linux下Python版本更新至最新版:

Linux的yum依赖自带的python,为了防止错误,此处更新其实就是再安装一个Python

查看版本:python -V

技术分享

步骤1:安装gcc,用于编译python源码:yum install gcc

技术分享

步骤2:下载并解压源码包:https://www.python.org/ftp/python/

安装python2.7.9源码包
cd /opt

wget --no-check-certificate https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz

tar xf Python-2.7.9.tar.xz 

cd Python-2.7.9

技术分享

技术分享

步骤3:编译安装python2.7.9

编译安装
./configure
make all
make install
/usr/bin/python2.7 -V

 技术分享

步骤4:修改默认python版本

修改默认Python版本
mv /usr/bin/python /usr/bin/python2.6
ln -s /usr/local/bin/python2.7 /usr/bin/python
python -V

技术分享

步骤5:防止yum执行出现异常,修改yum使用的python版本

vim /usr/bin/yum
将头文件#!/usr/bin/python改为#!/usr/bin/python2.6

技术分享

(2)linux下python多版本共存

步骤如下:

下载压缩包:https://www.python.org/downloads/release/python-361/

下载.tgz包

cd /opt
tar xf Python-3.6.1.tgz
cd Python-3.6.1
./configure
make all
make install

 如果报错:zipimport.ZipImportError: can‘t decompress data; zlib not available make: *** [install] Error 1

则要安装zlib相关依赖包再进行编译安装:

安装zlib相关包
yum -y install zlib*
编译安装
./configure
make && make install

技术分享

 

第四章:第一个Python程序                                         

执行python代码的2种方式:

1、解释器:即时调试代码,代码无法永久保存   

2、文件:永久保存代码 

 文件执行:python 代码名.py

交互器执行:在python交互器下输出,python交互器主要用来对代码进行调试的。

第五章:变量与内存管理                                            

1、什么是变量?为何要有变量?

答:程序当中,变量是计量某种状态的。变量是反映变化的过程,在变化的过程中记录某种状态。

例:

name = ‘william‘

name:变量名(标识符)

“=”  :赋值符号

‘william‘:变量的值

2、标识符命名规范:

  • 变量名不能太长且要有意义,不能是中文或拼音。
  • 变量名只能是字母、数字、下划线的任意组合。
  • 变量名的首字符不能是数字
  • 关键字不能声明为变量名:

[‘and‘, ‘as‘, ‘assert‘, ‘break‘, ‘class‘, ‘continue‘, ‘def‘, ‘del‘, ‘elif‘, ‘else‘, ‘except‘, ‘exec‘, ‘finally‘, ‘for‘, ‘from‘, ‘global‘, ‘if‘, ‘import‘, ‘in‘, ‘is‘, ‘lambda‘, ‘not‘, ‘or‘, ‘pass‘, ‘print‘, ‘raise‘, ‘return‘, ‘try‘, ‘while‘, ‘with‘, ‘yield‘]

3、定义变量的方式:

驼峰体和下划线方式。建议使用下划线方式。

如:william_age = 18

4、变量的赋值与修改

示例1:

name1 = william

name2 = knight  # 在内存的空间中开辟了两个空间,分别存放“william”和"knight"两个值

 技术分享

 

示例2

name1 = william

name2 = knight

name2 = name1  # 将name2指向name1的值,此时的“knigh”t这个值被python的内存回收机制回收了。

技术分享

第六章、输入输出                                                          

1、输入:

在python3中的输入的命令是input

技术分享

在python2中的输入命令是raw_input 

技术分享

2、输出:

(1)print

在python3中,print必须加上括号。python2中则可以不加括号

(2)getpass   非明文方式显示(在Pycharm下无效)

需要导入getpass模块

# 非明文方式显示
import getpass username = input("用户名:") password = getpass.getpass("密码:") print(username) print(password)

 技术分享

(3)占位符   %s

方式一:

技术分享

 方式二:

技术分享

第七章 什么是数据类型及运算符的简单介绍                    

1、数据类型

定义:

技术分享
我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字,否则它是分不清1和‘汉’的区别的,因此,在每个编程语言里都会有一个叫数据类型的东东,其实就是对常用的各种数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给它,你想让他处理文字,就传字符串类型给他。Python中常用的数据类型有多种,今天我们暂只讲3种, 数字、字符串、布尔类型
View Code
技术分享
1、数字
int(整型)
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。

注意:在Python3里不再有long类型了,全都是int
>>> a= 2**64
>>> type(a)  #type()是查看数据类型的方法
<type long>
>>> b = 2**60
>>> type(b)
<type int>
除了int和long之外, 其实还有float浮点型, 复数型,但今天先不讲啦

2、字符串
在Python中,加了引号的字符都被认为是字符串!
>>> name = "Alex Li" #双引号
>>> age = "22"       #只要加引号就是字符串
>>> age2 = 22          #int
>>> 
>>> msg = ‘‘‘My name is Alex, I am 22 years old!‘‘‘  #我擦,3个引号也可以
>>> 
>>> hometown = ShanDong   #单引号也可以
那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合
msg = "My name is Alex , I‘m 22 years old!"
多引号什么作用呢?作用就是多行字符串必须用多引号
msg = ‘‘‘
今天我想写首小诗,
歌颂我的同桌,
你看他那乌黑的短发,
好像一只炸毛鸡。
‘‘‘

print(msg)
字符串拼接
数字可以进行加减乘除等运算,字符串呢?让我大声告诉你,也能?what ?是的,但只能进行"相加""相乘"运算。
>>> name
Alex Li
>>> age
22
>>> 
>>> name + age  #相加其实就是简单拼接
Alex Li22
>>> 
>>> name * 10 #相乘其实就是复制自己多少次,再拼接在一起
Alex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex Li
注意,字符串的拼接只能是双方都是字符串,不能跟数字或其它类型拼接
>>> type(name),type(age2)
(<type str>, <type int>)
>>> 
>>> name
Alex Li
>>> age2
22
>>> name + age2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate str and int objects #错误提示数字 和 字符 不能拼接

3、布尔型(bool)
布尔类型很简单,就两个值 ,一个True(真),一个False(假), 主要用记逻辑判断
但其实你们并不明白对么? let me explain, 我现在有2个值 , a=3, b=5 , 我说a>b你说成立么? 我们当然知道不成立,但问题是计算机怎么去描述这成不成立呢?或者说a< b是成立,计算机怎么描述这是成立呢?
没错,答案就是,用布尔类型
>>> a=3
>>> b=5
>>> 
>>> a > b #不成立就是False,即假
False
>>> 
>>> a < b #成立就是True, 即真
True
计算机为什么要描述这种条件呢?因为接下来就可以根据条件结果来干不同的事情啦呀!比如
if a > b 
   print(a is bigger than b )

else 
   print(a is smaller than b )
上面是伪代码,但是不是意味着, 计算机就可以根据判断结果不同,来执行不同的动作啦?

4、列表类型

5、字典类型
View Code

2、运算符:

计算机运算符按种类可分为:

算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算。

 

算数运算

以下假设变量:a=10,b=20技术分享

比较运算

以下假设变量:a=10,b=20技术分享

赋值运算

以下假设变量:a=10,b=20技术分享

逻辑运算技术分享

 

  







以上是关于Python第一天的主要内容,如果未能解决你的问题,请参考以下文章

学习python的第一天

python第一天

学习python第一天

python第一天

学习Python第一天

Python - 3.6 学习第一天