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
下载
安装
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。