一、Python概述
python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。
1、目前Python主要应用领域:
(1)云计算: 云计算最火的语言, 典型应用OpenStack
(2)WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
(3)科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthoughtlibrarys,pandas
(4)系统运维: 运维人员必备语言
(5)金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
(6)图形GUI: PyQT, WxPython,TkInter
2、 Python在一些公司的应用:
(1)谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬虫、Google广告等项目都在大量使用Python开发
(2)CIA: 美国中情局网站就是用Python开发的
(3)NASA: 美国航天局(NASA)大量使用Python进行数据分析和运算
(4)YouTube:世界上最大的视频网站YouTube就是用Python开发的
(5)Dropbox:美国最大的在线云存储网站,全部用Python实现,每天网站处理10亿个文件的上传和下载
(6)Instagram:美国最大的图片分享社交网站,每天超过3千万张照片被分享,全部用python开发
(7)Facebook:大量的基础库均通过Python实现的
(9)豆瓣: 公司几乎所有的业务均是通过Python开发的
(10)知乎: 国内最大的问答社区,通过Python开发(国外Quora)
(11)春雨医生:国内知名的在线医疗网站是用Python开发的
除上面之外,还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝 、土豆、新浪、果壳等公司都在使用Python完成各种各样的任务。
3、编译和解释的区别
(1)编译器:是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
(2)解释器:则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)
4 python的优缺点
(1)python的优点
1)简单易懂
2)开发效率非常高,非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。
3)高级语言:当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
4)可移植性:开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。
5)可扩展性
6)可嵌入性
(2)python的缺点
1)速度慢,
2)代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的
3)线程不能利用多CPU问题
5 python的解释器
(1)CPython:当我们从Python官方网站下载并安装好Python 2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
CPython是使用最广的Python解释器。
(2)IPython:IPython是基于CPython之上的一个交互式解释器, CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。
(3)PyPy:PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
(4)Jython:Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
(5)IronPython:IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
二、Python应用基础
1、Python安装
(1)windows的安装
1)、下载安装包(https://www.python.org/downloads/)
2)、安装:默认安装路径:C:\python27
3)、配置环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】。如:原来的值;C:\python27,切记前面有分号
(2)linux、Mac下安装
无需安装,原装Python环境 (ps:如果自带2.6,请更新至2.7)
yum install tk-devel
yum install readline-devel
cd /home/dayi123/tools/Python-2.7.12
./configure --prefix=/usr/local/python
yum install gcc -y
./configure --prefix=/usr/local/python
make
make install
python -V
mv /usr/bin/python /usr/bin/python-2.6.6
ln -s /usr/local/python/bin/python /usr/bin/python
ll /usr/bin/python*
python -V
sed –i “s@#!/usr/bin/python@#!/usr/bin/python-2.6.6@g” /usr/bin/yum
2、Python操作基础
(1)第一个python程序输出”hello world!”程序
在linux 下创建一个文件叫hello.py,并输入然后执行命令:python hello.py ,输出
localhost:~ dayi123$ vim hello.py
print("Hello World!")
localhost:~ dayi123$ python hello.py
Hello World!
(2)指定解释器
上一步中执行 python hello.py 时,明确的指出 hello.py 脚本由 python 解释器来执行。如果想要类似于执行shell脚本一样执行python脚本,例:./hello.py ,那么就需要在 hello.py 文件的头部指定解释器,如下:
#!/usr/bin/env python
print
"hello,world"
如此一来,执行: ./hello.py 即可。(ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py)
(3)在交互器中执行
除了把程序写在文件里,还可以直接调用python自带的交互器运行代码,
localhost:~ dayi123$ python
Python 2.7.10 (default, Oct 23 2015, 18:05:06)
[GCC 4.2.1 Compatible AppleLLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for moreinformation.
>>> print("Hello World!")
Hello World!
3、变量
(1)声明变量
#!/bin/env python
#-*- coding:utf-8 -*- #制定字符编码
name
=
"dayi"
#声明变量
user,name
=
‘dayi’,’dayi123’
#同时声明两个变量
(2)变量定义的规则:
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']
(3)变量的赋值
name
=
"dayi123"
#申明一个变量name
name2
=
name
#将变量name赋值给变量name2
print
(name,name2)
name
=
"Jack"
#给变量name重新赋值给jack
print
(
"What is thevalue of name2 now?"
)
#name2的值依然是dayi123
(4)常量:Python中没有定义常量,定义常量时常量名全部大写
4、字符编码
(1)ASCII码:
python解释器在加载 .py 文件中的��码时,会对内容进行编码(默认ascill)ASCII(AmericanStandard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:
(2)Unicode(统一码、万国码、单一码、标准万国码)是业界的一种标准,它可以使电脑得以体现世界上数十种文字的系统。
(3)UTF-8是一种针对Unicode的可变长度字符编码(定长码),UTF-8使用一至四个字节为每个字符编码。
(4)Python中字符编码使用注意事项
1)ascii码无法表示中文
#!/usr/bin/env python
print
"你好,世界"
#!/usr/bin/env python #指定Python解释器
# -*- coding: utf-8-*- #指定字符编码
print
"你好,世界"
5、Python的注释
(1)单行注视:# 被注释内容
(2)多行注释:"""被注释内容 """
6、用户输入
(1)、用户输入
#!/usr/bin/env python
#_*_coding:utf-8_*_
#name =raw_input("What is your name?") #Python2.7中用户输入的写法
name
=
input
(
"Whatis your name?"
)
#接受用户的输入,并赋值给变量name
print
(
"Hello "
+
name )
(2)、将输入内容按格式批量输出:
#!/bin/env python
#-*-coding:utf-8-*-
# Author:Dayi123
name
=
input
(
"please input your name:"
)
age
=
int
(
input
(
"please input your age:"
))
job
=
input
(
"please input job:"
)
msg
=
'''
InFormation of user %s:
--------------------------------
Name: %s
Age: %d
Job: %s
-------------End----------------
'''
%
(name,name,age,job)
print
(msg)
(4)、输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法
#!/usr/bin/env python
# -*- coding: utf-8-*-
import
getpass
pwd
=
getpass.getpass(
"请输入密码:"
)
#将用户输入的内容赋值给pwd变量,输入的内容不显示
print
(pwd)
#打印输入的内容
7、Python常用模块初始
(1)模块的使用
Import os #引入os模块
import tab #引入tab补全模块
os.system(“df -h”) #通过os模块调用系统命令
os.mkdir(‘yourdir’)
cmd_res = os.popen(‘ls -l’).read() #将命令的执行结果保存到变量中
import sys #引入sys模块
print(sys.path) #查看包含模块的目录
Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持。
(2)常用模块
1)sys
#!/usr/bin/env python
# -*- coding: utf-8-*-
import
sys
print
(sys.argv)
#输出
$ python test.py heloworld
[
'test.py'
,
'helo'
,
'world'
]
#把执行脚本时传递的参数获取到了
2)os
#!/usr/bin/env python
# -*- coding: utf-8-*-
import
os
os.system(
"df -h"
)
#调用系统命令
三、Python数据运算
1、算术运算
运算符 |
描述 |
实例 |
+ |
加运算 |
a=20,b=10 a+b=30 |
- |
减法运算 |
a=20,b=10 a-b=10 |
* |
乘运算 |
a=20,b=10 a*b=200 |
/ |
除运算 |
a=20,b=10 a/b=2 |
% |
取模运算 |
a=20,b=10 a%b=0 |
** |
幂运算 |
a=2,b=12 a**b=4 |
// |
取整数,返回商的整数部分 |
a=20,b=10 a//b=0 |
2、比较运算
运算符 |
描述 |
实例 |
== |
等于,判断两个对象是否相等 |
a=20,b=10 ,(a == b)返回False |
!= |
不等于,比较两个对象是否不相等 |
a=20,b=10 ,(a != b)返回True |
<> |
不等于,比较两个对象是否不相等 |
a=20,b=10 (a <> b)返回True |
> |
大于 |
a=20,b=10 (a > b)返回True |
< |
小于 |
a=20,b=10 (a < b)返回False |
>= |
大于等于 |
a=20,b=10 (a >= b)返回True |
<= |
小于等于 |
a=20,b=10 (a <= b)返回False |
3、赋值运算
运算符 |
描述 |
实例 |
= |
赋值运算 |
c=a+b即将a+b结果赋值给c |
+= |
加法赋值运算 |
a+=b等同于a=a+b |
-+ |
减法赋值运算 |
a-=b等同于a=a-b |
*= |
乘法赋值运算 |
a*=b等同于a=a*b |
/= |
除法赋值运算 |
a/=b等同于a=a/b |
%= |
去摸赋值运算 |
a%+=b等同于a=a%b |
**= |
赋值运算幂 |
A**=b等同于a=a**b |
//= |
取整数赋值运算 |
a//=b等同于a=a//b |
4、逻辑运算
运算符 |
描述 |
and |
布尔与,如果a为False,b为False,a and 为False |
or |
布尔或,如果a为True,b为False,a or b 为True,有一个为True则为True |
not |
布尔“非”,如果a为True,not a 为False |
>>> a = '333'
>>> if not a.isdigit():print(ddd)
...
>>> a.isdigit()
true
5、成员运算
运算符 |
描述 |
in |
如果在指定的序列中找到值返回True,否则返回False |
not in |
如果在指定的序列中没有找到值返回True,否则返回False |
>>> a = [1,2,3,4]
>>> a
[1, 2, 3, 4]
>>> if 1 not in a: print('not')
...
>>> if 31 not in a:print('not')
...
not
>>> if 31 in a:print('yes')
...
>>> type(a) is list
True
6、身份运算
运算符 |
描述 |
is |
判断两个标识是否应用自同一个对象,x is y,如果id(x)等于id(y),返回1 |
is not |
同is判断相反 |
7、位运算
运算符 |
描述 |
& |
按位与运算符 |
| |
按位与运算符 |
^ |
按位与运算符 |
~ |
按位与运算符 |
<< |
按位与运算符 |
>> |
按位与运算符 |
8、运算符优先级(从高到低)
(1)**(指数运算)最高优先级
(2)- + ~ (一元加号和减号,按位翻转)
(3)* / % // (乘、除、去摸、去整数)
(4)+ - (加法、减法)
(5)>> << (左移、右移)
(6)& (位‘AND’)
(7)^| (位运算)
(8)<= < > >= (比较运算符)
(9)= %= /= //= -= += *= **=(赋值运算符)
(10)is ,is not (身份运算符)
(11)in not in (成员运算符)
(12)not or and (逻辑运算符)
四、Python流程控制语句
1、if ... else
用法举例:
# 提示输入用户名和密码,验证用户名和密码
# 如果错误,则输出用户名或密码错误
# 如果成功,则输出 欢迎,XXX!
#!/usr/bin/env python
# -*- coding: encoding-*-
import
getpass
name
=
raw_input
(
'请输入用户名:'
)
pwd
=
getpass.getpass(
'请输入密码:'
)
if
name
=
=
"dayi123"
and
pwd
=
=
"cmd"
:
print
(
"欢迎,dayi123"
)
else
:
print
(
"用户名和密码错误"
)
2、for loop
(1)for循环用法:
#_*_coding:utf-8_*_
for
i
in
range
(
10
):
print
(
"loop:"
,i )
(2)for循环用法举例
需求一:还是上面的程序,但是遇到小于5的循环次数就不走了,直接跳入下一次循环
for
i
in
range
(
10
):
if
i<
5
:
continue
#不往下走了,直接进入下一次loop
print
(
"loop:"
,i )
需求二:还是上面的程序,但是遇到大于5的循环次数就不走了,直接退出
#!/bin/env python
#-*-coding:utf-8-*-
# Author:Dayi123
for
i
in
range
(
10
):
if
i>
5
:
break
#不往下走了,直接跳出整个loop
print
(
"loop:"
,i )
猜年龄游戏:
#!/bin/env python
#-*-coding:utf-8-*-
# Author:Dayi123
age
=
21
#定义一个年龄的变量
count
=
0
#定义一个计算器
for
i
in
range
(
10
):
#forx循环10此
if
count <
3
:
#如果count的值小于3,则执行下面语句
guess_num
=
int
(
input
(
"iniput your guess num:"
))
#提示用户输入猜的数字
if
guess_num
=
=
age:
#如果猜对了执行下面语句
print
(
"Congratulations!you got it......"
)
break
elif
guess_num >age:
#如果猜大了,执行下面语句
print
(
"thinksmall"
)
else
:
#如果猜小了,执行下面语句
print
(
"thinkbig........."
)
else
:
#如果猜了三次还没才对,则执行下面语句
continue_confirm
=
input
(
"Doyouwant to continue you are stupid:"
)
if
continue_confirm
=
=
'y'
:
#如果还想猜,则执行下面语句
count
=
0
#将count的值初始化为0
continue
else
:
#如果不想猜了,则执行下面语句
print
(
"bye"
)
break
#退出整个循环
count
+
=
1
3while loop
(1)海枯石烂死循环:
#!/bin/env python
#-*-coding:utf-8-*-
# Author:Dayi123
count
=
0
while
True
:
#条件为真,一直循环
print
(
"你是风儿我是沙,缠缠绵绵到天涯..."
,count)
count
+
=
1
(2)上面的代码循环100次就退出吧:
#!/bin/env python
#-*-coding:utf-8-*-
# Author:Dayi123
count
=
0
while
True
:
count
+
=
1
#每循环一次,count加1
if
count >
50
and
count <
60
:
#如果count大于50小于60则跳过本次循环
continue
print
(
"你是风儿我是沙,缠缠绵绵到天涯"
,count)
if
count
=
=
100
:
#如果count等于100,则退出整个循环
print
(
"去你妈的风和沙"
)
break