一、python介绍
Python简介及应用领域编辑
Python是一种解释型脚本语言,可以应用于以下领域: [2]
Web 和 Internet开发
科学计算和统计
人工智能
桌面界面开发
软件开发
后端开发
网络爬虫
1989年圣诞节:Guido von Rossum开始写Python语言的编译器
Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。
Python的优缺点
Python的优点很多,简单的可以总结为以下几点。
- 简单和明确,做一件事只有一种方法。
- 学习曲线低,跟其他很多语言相比,Python更容易上手。
- 开放源代码,拥有强大的社区和生态圈。
- 解释型语言,天生具有平台可移植性。
- 对两种主流的编程范式(面向对象编程和函数式编程)都提供了支持。
- 可扩展性和可嵌入性,例如在Python中可以调用C/C++代码。
- 代码规范程度高,可读性强,适合有代码洁癖和强迫症的人群。
Python的缺点主要集中在以下几点。
- 执行效率稍低,因此计算密集型任务可以由C/C++编写。
- 代码无法加密,但是现在很多公司都不销售卖软件而是销售服务,这个问题会被弱化。
- 在开发时可以选择的框架太多(如Web框架就有100多个),有选择的地方就有错误。
目前Python主要应用领域:
云计算: 云计算最火的语言, 典型应用OpenStack
WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
系统运维: 运维人员必备语言
金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
图形GUI: PyQT, WxPython,TkInter
语言类型
编译型 | 解释型 | 混合型 |
---|---|---|
C | Python | Java |
C++ | JavaScript | C# |
Go | Ruby | |
Swift | Php |
编译型
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果要修改就需要修改整个模块崇信编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
解释型
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以了,可以快速部署,不需要停机维护。
缺点:每次运行的时候都需要解释一遍,性能上不如编译型语言。
要在电脑上运行python就必须安装python环境即安装python解释器
Windows环境
可以在Python官方网站下载到Python的Windows安装程序(exe文件),需要注意的是如果在Windows 7环境下安装Python 3.x,需要先安装Service Pack 1补丁包(可以通过一些工具软件自动安装系统补丁的功能来安装),安装过程建议勾选“Add Python 3.x to PATH”(将Python 3.x添加到PATH环境变量)并选择自定义安装,在设置“Optional Features”界面最好将“pip”、“tcl/tk”、“Python test suite”等项全部勾选上。强烈建议选择自定义的安装路径并保证路径中没有中文。安装完成会看到“Setup was successful”的提示。如果稍后运行Python程序时,出现因为缺失一些动态链接库文件而导致Python解释器无法工作的问题,可以按照下面的方法加以解决。
如果系统显示api-ms-win-crt*.dll文件缺失,可以参照《api-ms-win-crt*.dll缺失原因分析和解决方法》一文讲解的方法进行处理或者直接在微软官网下载Visual C++ Redistributable for Visual Studio 2015文件进行修复;如果是因为更新Windows的DirectX之后导致某些动态链接库文件缺失问题,可以下载一个DirectX修复工具进行修复。
Linux环境
Linux环境自带了Python 2.x版本,最新的系统版本都安装了python3.x版本,一般是python3.5,但是如果要更新到3.x的版本,可以在Python的官方网站下载Python的源代码并通过源代码构建安装的方式进行安装,具体的步骤如下所示(以CentOS为例)。
- 安装依赖库(因为没有这些依赖库可能在源代码构件安装时因为缺失底层依赖库而失败)。
yum -y install wget gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
- 下载Python源代码并解压缩到指定目录。
wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tar.xz
xz -d Python-3.7.6.tar.xz
tar -xvf Python-3.7.6.tar
- 切换至Python源代码目录并执行下面的命令进行配置和安装。
cd Python-3.7.6
./configure --prefix=/usr/local/python37 --enable-optimizations
make && make install
- 修改用户主目录下名为.bash_profile的文件,配置PATH环境变量并使其生效。
cd ~
vim .bash_profile
# ... 此处省略上面的代码 ...
export PATH=$PATH:/usr/local/python37/bin
# ... 此处省略下面的代码 ...
- 激活环境变量。
source .bash_profile
macOS环境
macOS也自带了Python 2.x版本,可以通过Python的官方网站提供的安装文件(pkg文件)安装Python 3.x的版本。默认安装完成后,可以通过在终端执行python
命令来启动2.x版本的Python解释器,启动3.x版本的Python解释器需要执行python3
命令。
运行Python程序
确认Python的版本
可以Windows的命令行提示符中键入下面的命令。
python --version
或者是在Linux或macOS系统的终端中键入下面的命令。
python3 --version
由于我是使用的anaconda,所以用的是python --version
当然也可以先输入python或python3进入交互式环境,再执行以下的代码检查Python的版本。
import sys
print(sys.version_info)
print(sys.version)
在这里插入图片描述
编写Python源代码
可以用文本编辑工具(推荐使用Sublime、Visual Studio Code等高级文本编辑工具)编写Python源代码并用py作为后缀名保存该文件,代码内容如下所示。
print('hello, world!')
指定解释器
在编写的脚本中添加#!/usr/bin/env python
,明确的指出脚本由python解释器来执行。使用./xxx.py
来执行。
变量
#_*_coding:utf-8_*_
name = smallpotato
age = 23
上述代码申明了两个变量,name,age。使用命令type()
检查变量类型。可以使用Python中内置的函数对变量类型进行转换。
-
int()
:将一个数值或字符串转换成整数,可以指定进制。 -
float()
:将一个字符串转换成浮点数。 -
str()
:将指定的对象转换成字符串形式,可以指定编码。 -
chr()
:将整数转换成该编码对应的字符串(一个字符)。 -
ord()
:将字符串(一个字符)转换成对应的编码(整数)。
变量定义的规则
- 变量名只能是字母、数字或下划线的任意组合
- 变量名第一个字母不能是数字
- 关键字不能作为变量名
中文编码
ASCII、GB2312、GBK、GB18030,显然ASCII码无法将世界上各种字符全部显示,所以,就需要一种可以代表所有的符号的编码:Unicode。
注释
单行注释:#注释部分
多行注释:”“”注释部分“”“
Test
import this
”python之禅“不仅适用于python,还适用于其他编程语言。
在这里插入图片描述
用户输入
#!/usr/bin/env python
#_*_coding:utf-8_*_
name = input("Please input your name:")
print("Hello" + name)
模块
python的强大之处在于他有非常丰富和强大的标准库和第三方库。
像我们输入密码时,如果不想显示,可以利用标准库getpass模块。
在这里插入图片描述
sys模块
在这里插入图片描述
os模块
在这里插入图片描述
turtle模块
import turtle
turtle.pensize(4)
turtle.pencolor('red')
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.mainloop()
在这里插入图片描述
指令和程序
计算机的硬件系统通常由五大部件构成,包括:运算器、控制器、存储器、输入设备和输出设备。其中,运算器和控制器放在一起就是我们通常所说的中央处理器,它的功能是执行各种运算和控制指令以及处理计算机软件中的数据。我们通常所说的程序实际上就是指令的集合,我们程序就是将一系列的指令按照某种方式组织到一起,然后通过这些指令去控制计算机做我们想让它做的事情。今天我们大多数时候使用的计算机,虽然它们的元器件做工越来越精密,处理能力越来越强大,但究其本质来说仍然属于“冯·诺依曼结构”的计算机。“冯·诺依曼结构”有两个关键点,一是指出要将存储设备与中央处理器分开,二是提出了将数据以二进制方式编码。二进制是一种“逢二进一”的计数法,跟我们人类使用的“逢十进一”的计数法没有实质性的区别,人类因为有十根手指所以使用了十进制(因为在数数时十根手指用完之后就只能进位了,当然凡事都有例外,玛雅人可能是因为长年光着脚的原因把脚趾头也算上了,于是他们使用了二十进制的计数法,在这种计数法的指导下玛雅人的历法就与我们平常使用的历法不一样,而按照玛雅人的历法,2012年是上一个所谓的“太阳纪”的最后一年,而2013年则是新的“太阳纪”的开始,后来这件事情被以讹传讹的方式误传为”2012年是玛雅人预言的世界末日“这种荒诞的说法,今天我们可以大胆的猜测,玛雅文明之所以发展缓慢估计也与使用了二十进制有关)。对于计算机来说,二进制在物理器件上来说是最容易实现的(高电压表示1,低电压表示0),于是在“冯·诺依曼结构”的计算机都使用了二进制。虽然我们并不需要每个程序员都能够使用二进制的思维方式来工作,但是了解二进制以及它与我们生活中的十进制之间的转换关系,以及二进制与八进制和十六进制的转换关系还是有必要的。如果你对这一点不熟悉,可以自行使用维基百科或者百度百科科普一下。
数据类型
- 数字
int(整型)
在32位机器上,整数的位数为32位,取值范围为-231~231-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-263~263-1,即-9223372036854775808~9223372036854775807
long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点型)
先扫盲 http://www.cnblogs.com/alex3714/articles/5895848.html
浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注:Python中存在小数字池:-5 ~ 257
- 布尔型:布尔值只有
True
、False
两种值,要么是True
,要么是False
,在Python中,可以直接用True
、False
表示布尔值(请注意大小写),也可以通过布尔运算计算出来(例如3 < 5
会产生布尔值True
,而2 == 1
会产生布尔值False
)。 - 字符串
name = "nkonk"
#print("i am %s " % name)
print("i am {}".format(name))
Test
温度转换
#!/usr/bin/env python
#_*=coding:utf-8_*_
f = float(input('请输入华氏温度: '))
c = (f - 32) / 1.8
print('%.1f华氏度 = %.1f摄氏度' % (f, c))
在这里插入图片描述
输入圆的半径计算计算周长和面积
import math
radius = float(input('请输入圆的半径:'))
perimeter = 2 * math.pi * radius
area = math.pi * radius * radius
print('周长:%.2f' % perimeter)
print('面积:%.2f' % area)
在这里插入图片描述
判断是否是闰年
while True:
year = int(input('请输入年份: '))
is_leap = (year % 4 == 0 and year % 100 != 0) or \
year % 400 == 0
if is_leap == True:
print("%d是闰年" % year)
else:
print("%d不是闰年" % year)
在这里插入图片描述
网友评论