Python概述、数据运算及流程控制

一、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  "你好,世界"
 
2 )指定python解释器(Python3版本不需要),用什么编码来执行源代码, 
#!/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)                  #打印输入的内容

7Python常用模块初始 

(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  in  range ( 10 ):
    print ( "loop:" ,i )

(2)for循环用法举例

需求一:还是上面的程序,但是遇到小于5的循环次数就不走了,直接跳入下一次循环

for  in  range ( 10 ):
    if  i< 5 :
        continue  #不往下走了,直接进入下一次loop
    print ( "loop:" ,i )

需求二:还是上面的程序,但是遇到大于5的循环次数就不走了,直接退出

#!/bin/env python
#-*-coding:utf-8-*-
# Author:Dayi123
for  in  range ( 10 ):
    if  i> 5 :
        break        #不往下走了,直接跳出整个loop
    print ( "loop:" ,i )

猜年龄游戏:

#!/bin/env python
#-*-coding:utf-8-*-
# Author:Dayi123
age  =  21                      #定义一个年龄的变量
count  =  0                    #定义一个计算器
for  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

猜你喜欢

转载自www.linuxidc.com/Linux/2017-04/142875.htm