Python第一讲

  • 一、计算机程序设计语言/编程语言
  • 二、编程语言分类
  • 三、目前主流编程语言介绍
  • 四、Python介绍
  • 五、Python安装、环境变量配置及第一个Python程序
  • 六、Python变量以及基本数据类型
    • 变量
    • 变量的定义规范
    • 常量
    • 注释
    • 头文件
  • Python的基本数据类型
    • 数字
    • 字符串
    • 列表
    • 元组
    • 字典
    • 布尔值

由于芥末工作比较忙,跟新会比较慢,写该文章主要作为个人笔记和同行交流

一、计算机程序设计语言/编程语言

Python是一门计算机程序设计语言(编程语言,以下简称编程语言)。有句古话叫:工欲善其事,必先利其器。在正式开始学习Python语言之前,我们需要搞清楚的是:1.编程是什么?2.编程语言是什么?3为什么要编程

  1. 编程是什么?

    编程是编定程序的中文简称,就是让计算机代为解决某个问题,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。

  2. 编程语言是什么?

    能够被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质。
    编程语言俗称“计算机语言”,种类非常的多,总的来说可以分成机器语言、汇编语言、高级语言三大类。

  3. 为什么要编程?

    计算机的发明,是为了用机器取代/解放人力,而编程的目的则是将人类的思想流程按照某种能够被计
    算机识别的表达方式传递给计算机,从而达到让计算机能够像人脑/电脑一样自动执行的效果。

学习一门计算机语言与我们学习一门人类语言是一样的,需要学习的东西无非是这些:

词语---------->Python中的关键字
语法---------->Python的语法
句子---------->用Python写出的一段代码
逻辑---------->计算机思维

注意!!!你听得懂老师讲课,但是这并不代表你会写程序。老师在上课教与学生的是信息而非知识,如果想要把信息转化成知识需要学生自己去思考,并且用实践将老师给予的信息转化成知识!!!

二、编程语言分类

    编程语言俗称“计算机语言”,种类非常的多,总的来说可以分成机器语言、汇编语言、高级语言三大类。

机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件;
汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作硬件;
高级语言:站在人的角度,说人话,即用人类的字符去编写程序,屏蔽了硬件操作

    高级语言更贴近人类语言,因而造成了:它必须被翻译成计算机能读懂二进制后,才能被执行,按照翻译方式分为

1. 编译型(需要编译器,相当于用谷歌翻译):如C,执行速度快,调试麻烦
2. 解释型(需要解释器,相当于同声传译):如python,执行速度慢,调试方便


特点:

机器语言									
优点是最底层,执行速度最快					
缺点是最复杂,开发效率最低							
																														
汇编语言																		
优点是比较底层,执行速度最快									
缺点是复杂,开发效率最低											

高级语言												
编译型语言执行速度快,不依赖语言环境运行,跨平台差
解释型跨平台好,一份代码,到处使用,缺点是执行速度慢,依赖解释器运行

学习难度从高到低
执行效率从高到低
开发效率从低到高

三、目前主流编程语言介绍

    世界上的编程语言有600多种,但真正大家主流在使用的最多二三十种,不同的语言有自己的特点和擅长领域,随着计算机的不断发展,新语言在不断诞生,也同时有很多老旧的语言慢慢无人用了。有个权威的语言排名网站,可以看到主流的编程语言是哪些

2019年5月和2018年5月数据(该网站每年都更新):

年度最佳编程语言:

这里咱么一笔带过,芥末不想花太长的时间在这里,想要找到更加详细的资料,百度上有很多,让我们赶紧进入正题

四、Python介绍

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

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

Python的主要应用领域

1. WEB开发——最火的Python web框架Django, 支持异步高并发的Tornado框架,短小精悍的flask,bottle, Django官方的标语把Django定义为the framework for perfectionist with deadlines(大意是一个为完全主义者开发的高效率web框架)
2. 网络编程——支持高并发的Twisted网络框架, py3引入的asyncio使异步编程变的非常简单
3. 爬虫——爬虫领域,Python几乎是霸主地位,Scrapy\Request\BeautifuSoap\urllib等,想爬啥就爬啥
4. 云计算——目前最火最知名的云计算框架就是OpenStack,Python现在的火,很大一部分就是因为云计算
5. 人工智能——谁会成为AI 和大数据时代的第一开发语言?这本已是一个不需要争论的问题。如果说三年前,Matlab、Scala、R、Java 和 Python还各有机会,局面尚且不清楚,那么三年之后,趋势已经非常明确了,特别是前两天 Facebook 开源了 PyTorch 之后,Python 作为 AI 时代头牌语言的位置基本确立,未来的悬念仅仅是谁能坐稳第二把交椅。
6. 自动化运维——问问中国的每个运维人员,运维人员必须会的语言是什么?10个人相信会给你一个相同的答案,它的名字叫Python
7. 金融分析——我个人之前在金融行业,10年的时候,我们公司写的好多分析程序、高频交易软件就是用的Python,到目前,Python是金融分析、量化交易领域里用的最多的语言
8. 科学运算—— 你知道么,97年开始,NASA就在大量使用Python在进行各种复杂的科学运算,随着NumPy, SciPy, Matplotlib, Enthought librarys等众多程序库的开发,使的Python越来越适合于做科学计算、绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比,Python是一门通用的程序设计语言,比Matlab所采用的脚本语言的应用范围更广泛
9. 游戏开发——在网络游戏开发中Python也有很多应用。相比Lua or C++,Python 比 Lua 有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑,与 Lua 相比,Python 更适合作为一种 Host 语言,即程序的入口点是在 Python 那一端会比较好,然后用 C/C++ 在非常必要的时候写一些扩展。Python 非常适合编写 1 万行以上的项目,而且能够很好地把网游项目的规模控制在 10 万行代码以内。另外据我所知,知名的游戏<文明> 就是用Python写的

Python在一些公司的应用

谷歌:Google App Engine 、code.google 、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完成各种各样的任务。

Python的种类:

我们现在知道了Python是一门解释型语言,代码想运行,必须通过解释器执行,Python的解释器本身也可以看作是个程序(翻译官司是哪国人不重要),这个程序是什么语言开发的呢? 答案是好几种语言? what? 因为Python有好几种解释器,分别基于不同语言开发,每个解释器特点不同,但都能正常运行我们的Python代码,下面分别来看下:

#CPython:CPython是使用最广且被的Python解释器。本教程以CPython为准。
当我们从Python官方网站下载并安装好Python 2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

#IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

#PyPy
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

#Jython
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

#IronPython
IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

Python2.X or Python3.X

Python的3​​.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。
为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。
许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行。
为了照顾现有程式,Python 2.6作为一个过渡版本,基本使用了Python 	2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。
新的Python程式建议使用Python 3.0版本的语法。
除非执行环境无法安装Python 3.0或者程式本身使用了不支援Python 3.0的第三方库。目前不支援Python 3.0的第三方库有Twisted, py2exe, PIL等。
大多数第三方库都正在努力地相容Python 3.0版本。即使无法立即使用Python 3.0,也建议编写相容Python 3.0版本的程式,然后使用Python 2.6, Python 2.7来执行。

具体可到菜鸟教程查看《Python2.x和Python3.x版本区别》.

五、Python安装、环境变量配置及第一个Python程序

如何安装Python环境我们这里就不提了,网上有许许多多的教程,如果依旧还是有需求的,请点击下面这个链接

Python安装和环境变量设置(菜鸟教程)

#进入解释器的交互式模式:调试方便,无法永久保存代码
#脚本文件的方式(使用nodpad++演示):永久保存代码

    python解释器执行程序是解释执行,即打开文件读内容,因此文件的后缀名没有硬性限制,但通常定义为.py结尾
市场上主流计算机语言的第一个程序,相对而言还是Python的比较精简

六、Python变量以及基本数据类型

变量

变量是什么?

“变量”分开看,“变”就是变化,“量”就是状态,变量合在一起的意思就是变化的状态。

什么可以是变量呢?

数学中:变量是表示数字的符号,通常是求解的未知数。
	例如:x+2=8,得解x=6
科学中:科学中的变量并不是指变化的状态,而是指“还没有确定的量”。

自然中有什么可以是变量呢?

例子:
	天气、雨量、风速、时间(这个世界是没有时间的,时间的概念是人类创造出来的)……
	
游戏中的变量有哪些呢?
例子:
	英雄的等级,英雄的血量,英雄的武力值,英雄的防御力……
	敌人的血量、存活状态(活着/死亡)等等

如何python中定义一个变量呢?

格式:
name='芥末Frank'
sex='male'
age=22
hobby=["吃饭","睡觉","玩游戏"]

变量的定义规范

1. 变量名只能是 字母、数字或下划线的任意组合
2. 变量名的第一个字符不能是数字
3. 关键字不能声明为变量名['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']
(不用去背这些关键字,在IDE/IDLE中打出关键字,关键字就会显示特殊的颜色)

书写规范

驼峰命名法
LevelOfHero = 56 
NumberOfStudents = 80
下划线法(推荐使用)
level_of_hero = 56 
number_of_students = 80

定义变量名不好的方式

1. 变量名为中文、拼音
2. 变量名过长
3. 变量名词不达意

变量的:id、type、value

1 等号比较的是value,
2 is比较的是id
id相同,意味着type和value必定相同
value相同type肯定相同,但id可能不同,如下
>>> x='Info Frank:22'
>>> y='Info Frank:22'
id(x)
4365731312
>>> id(y)
4365769328
>>> x == y
True
>>> x is y
False

课外补充:小整数池

1、在交互式模式下
Python实现int的时候有个小整数池。为了避免因创建相同的值而重复申请内存空间所带来的效率问题, Python解释器会在启动时创建出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被GC回收

每创建一个-5到256之间的整数,都是直接从这个池里直接拿走一个值,例如
>>> y=4
>>> id(y)
>>> 
>>> x=3
>>> x+=1
>>> id(x)
在pycharm中
但在pycharm中运行python程序,pycharm出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也都包含在内一便采用相同的方式处理了,我们只需要记住这是一种优化机制,至于范围到底多大,无需细究

常量

    常量即指不变的量,如pai 3.141592653…, 或在程序运行过程中不会改变的量
    举例,假如老师的年龄会变,那这就是个变量,但在一些情况下,他的年龄不会变了,那就是常量。在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量

注释

    随着学习的深入,用不了多久,你就可以写复杂的上千甚至上万行的代码啦,有些代码你花了很久写出来,过了些天再回去看,发现竟然看不懂了,这太正常了。 另外,你以后在工作中会发现,一个项目多是由几个甚至几十个开发人员一起做,你要调用别人写的代码,别人也要用你的,如果代码不加注释,你自己都看不懂,更别说别人了,这产会挨打的。所以为了避免这种尴尬的事情发生,一定要增加你代码的可读性。
    代码注释分单行和多行注释, 单行注释用#,多行注释可以用三对双引号""" “”"

#这是单行注释,只能注释一行
'''
两对三个'这是多行注释
就像现在这样
'''
"""
两对三个双引号也是可以的
"""
  1. 根据自己的需求加上注释
  2. 注释可以用中文或英文,但不要用拼音

头文件

#!/usr/bin/env python
# -*- coding: utf-8 -*- 
#Python文件在创建时会出现以上这两行代码

第一行, 加上这行, 这个py就处于了可执行模式下, (当然是针对linux类的操作系统), 这个hint, 告诉操作系统要使用哪个python解释器来执行这个py. 在linux上执行一下命令 /usr/bin/env python ,就知道这行其实是call一下python解释器. 这种写法比#! /usr/bin/python要好, 后者是hard coding 了python的路径。

第二行, 是告诉python解释器, 应该以utf-8编码来解释py文件, 对于python 2.6/2.7, 如果程序中包含中文字符, 又没有这一行, 运行将会报错. 但python3.1没有这行, 也会成功运行的。

Python的基本数据类型

在内存中存储的数据可以有多种类型。
例如,一个人的年龄可以用数字来存储,他的名字可以用字符来存储。
本人之前学过C,short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。
而Python有五个标准的数据类型:
Numbers(数字)
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)

数字

数字数据类型用于存储数值。
他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。
Python支持四种不同的数字类型:
int(有符号整型)
long(长整型[也可以代表八进制和十六进制])
float(浮点型)
complex(复数)
注意:long 类型只存在于 Python2.X 版本中,在 2.2 以后的版本中,int 类型数据溢出后会自动转为long类型。在 Python3.X 版本中 long 类型被移除,使用 int 替代。本人用的是3.X的版本,所以自动忽略long

#int整型
定义:age=10 #age=int(10)
用于标识:年龄,等级,个数
#float浮点型
定义:salary=3.1 #salary=float(3.1)
用于标识:工资,身高,体重,
#int(整型)32位机器上,整数的位数为32位,取值范围为-2**312**31-1,即-2147483648214748364764位系统上,整数的位数为64位,取值范围为-2**632**63-1,即-92233720368547758089223372036854775807
#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'>

#complex复数型
>>> x=1-2j
>>> x.imag
-2.0
>>> x.real
1.0

字符串

字符串或串(String)是由数字、字母、下划线组成的一串字符。
在python中,加了引号的字符就是字符串类型,python并没有字符类型。
定义:
    name=‘egon’     #name=str(‘egon’)
用于标识:描述性的内容,如姓名,性别,国籍,种族
它是编程语言中表示文本的数据类型。

python的字串列表有2种取值顺序:
    从左到右索引默认0开始的,最大范围是字符串长度少1
    从右到左索引默认-1开始的,最大范围是字符串开头

如果你要实现从字符串中获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符。

>>> s = 'abcdef'
>>> s[1:5]
'bcde'
#那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合
msg = "My name is Egon , I'm 18 years old!"

#多引号什么作用呢?作用就是多行字符串必须用多引号
msg = '''
今天我想写首小诗,
歌颂我的同桌.
………………
………………
'''
print(msg)

#数字可以进行加减乘除等运算,字符串呢?让我大声告诉你,也能?what ?是的,但只能进行"相加"和"相乘"运算。
>>> name='egon'
>>> age='18'
>>> name+age #相加其实就是简单拼接
'egon18'
>>> name*5 
'egonegonegonegonegon'

#注意1:字符串相加的效率不高
字符串1+字符串3,并不会在字符串1的基础上加字符串2,而是申请一个全新的内存空间存入字符串1和字符串3,相当字符串1与字符串3的空间被复制了一次,

#注意2:只能字符串加字符串,不能字符串加其他类型

列表

元组

字典

布尔值

更多推荐

Python第一讲(个人学习与总结)