Python介绍

Python的前世今生

    Python(英语发音:/ˈpaɪθən/), 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年,使用c语言开发的。

 

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 ...

 

用处

    胶水语言,可以做web,或者和其他配合来完成

    数据分析

    系统编程

    组件集成

    网络服务

    数据计算和科学计算

选择原因

    提供了大量类库

    上手比较容易

    Linux原装python

Python环境准备

安装

Windows

下载

https://www.python.org

安装

    Windows安装非常简单,根据提示下一步就可以。

设置环境变量

    【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】

    如:原来的值;C:\python27,切记前面有分号

   

Linux

    [root@node1 Python-2.7.11]# tar xf Python-2.7.11.tgz

    [root@node1 Python-2.7.11]# cd Python-2.7.11 

    [root@node1 Python-2.7.11]# ./configure

    [root@node1 Python-2.7.11]# make

    [root@node1 Python-2.7.11]# make install

    [root@node1 Python-2.7.11]# /usr/local/bin/python2.7 –V

    [root@node1 Python-2.7.11]#  mv /usr/bin/python /usr/bin/python2.6

[root@node1 Python-2.7.11]# ln -s /usr/local/bin/python2.7 /usr/bin/python

防止yum执行异常,修改yum使用的Python版本

    vi /usr/bin/yum

    将头部 #!/usr/bin/python 修改为 #!/usr/bin/python2.6

 python基础

打印输出

    2.x

    print "hello"

    3.x

    print ("hello word")

    2.7同时兼容两个版本

解释器

#!/usr/bin/env python   放在文件的第一行,表示使用python解释

[root@salt-minion-node3 python]# cat a.py

#!/usr/bin/env python

print "hello"

[root@salt-minion-node3 python]# ./a.py  

hello

编码

    python解释器在加载 .py 文件中的代码时,会对内容进行编码,默认ascill,不能读取中文,

    ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。

    Unicode:最少是16位,在存英文的时候就会出现浪费。   万国码

    Utf-8:相当于unicode的一个分支,英文就用8位存,中文就用3个字节存。

    中文需要用三个字节,也就是24位才能表达。

    [root@node1 tools]# cat hello.py

    #!/usr/bin/env python

    print '你好'

    [root@node1 tools]# ./hello.py

    File "./hello.py", line 3

    SyntaxError: Non-ASCII character '\xe4' in file ./hello.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

    [root@node1 tools]# cat hello.py

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    print '你好'

    [root@node1 tools]# ./hello.py  

    你好

注释

   单行注释就是#

   多行注释开始三个引号,结尾三个引号”””   单引号和双引号都行

变量

声明变量

#!/usr/bin/env python

#-*- coding=utf-8 -*-

name = "zhangtie"

上面是一个变量的声明,变量名为name,内容为zhangtie,

 

带引号的,不管事单引号,双引号,都是字符串

 

变量定义的规则:

变量名只能是 字母、数字或下划线的任意组合

变量名的第一个字符不能是数字

以下关键字不能声明为变量名
['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']

变量的赋值:

字符串重新赋值,会在内存中重新开辟空间

占位符和格式转换

name=input("input you name:") 
age=input("input you age:") 
job=input("input you job:") 
msg=''' 
information of %s: 
----------------- 
name: %s 
age : %s 
job : %s  
''' %(name,name,age,job) 
print(msg)

 

%s 字符串

%d数字

%f

我们使用input接受到的输入,默认都是字符串,如果我们想要数字或者其他格式的,需要转换

name=input("input you name:") 
age=int(input("input you age:"))    #转换数据类型 
job=input("input you job:") 
msg=''' 
information of %s: 
----------------- 
name: %s 
age : %d 
job : %s 
__________________ 
''' %(name,name,age,job) 
print(msg)

常用模块

OS模块

>>> import os      (加载os模块)

>>> os.system("df -h")       (调用shell命令)

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G  9.0G  8.6G  52% /

tmpfs           242M     0  242M   0% /dev/shm

/dev/sda1       190M   28M  153M  16% /boot

0

>>> os.system("ls -l")

total 305648

-rw-------.  1 root root      1982 Jan 10 23:05 anaconda-ks.cfg

-rw-r--r--.  1 root root     63202 Jan 10 23:05 install.log

-rw-r--r--.  1 root root     11949 Jan 10 23:02 install.log.syslog

 

>>> cmd_res = os.popen("df -h").read()   将返回的内容保存

>>> print cmd_res

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G  9.0G  8.6G  52% /

tmpfs           242M     0  242M   0% /dev/shm

/dev/sda1       190M   28M  153M  16% /boot

 

>>> os.mkdir("zhangtie")  创建文件

 

我们自己写的模块,需要存放在指定位置,才可以在任意时候调用,都调用到,在调用模块是,先回找当前目录

>>> import sys

>>> print (sys.path)

['', '/usr/lib64/python26.zip', '/usr/lib64/python2.6', '/usr/lib64/python2.6/plat-linux2', '/usr/lib64/python2.6/lib-tk', '/usr/lib64/python2.6/lib-old', '/usr/lib64/python2.6/lib-dynload', '/usr/lib64/python2.6/site-packages', '/usr/lib64/python2.6/site-packages/gst-0.10', '/usr/lib64/python2.6/site-packages/gtk-2.0', '/usr/lib64/python2.6/site-packages/webkit-1.0', '/usr/lib/python2.6/site-packages', '/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info']

在手动执行*.py的时候,不会生产*.pyc的文件,只有在模块被被人导入的时候才会生成。

再次加载模块的时候,会先对比*.py和*.pyc的时间,如果修改后,会重新生产*.pyc。