# 1. 语言特点 - 免费、开源 是FLOSS自由开放源代码之一。 - 跨平台 除了与平台库相关的模块,可以移植到目前市面绝大多数操作系统平台。 - 简单 一种简单主义思想的语言,没有那么多技巧。与Perl语言设计思想相反: ```txt Python: "There should be one-- and preferably only one --obvious way to do it." Perl: "There's more than one way to do it." ``` - 面向对象 支持面向对象编程。 - 模块化 符合模块化设计思想。轻松编写功能独立的模块,也可以方便地导入第三方库。 - 简洁 语法格式简洁,没有“{ }”,有严格的格式规范。 # 2. 开发环境 ![img](../../../../ff_internal_upload/img/2016/image-20160502194550834.png) - IDE - 交互式命令行。 - PyCharm:商用,支持整套开发流程。 - Eclipse + PyDev:满足基本开发需求。 - 选择版本 - 2.7:稳定,认可度高,目前仍在更新。 - 2.6:redhat 6.x自带版本。 - 3.x:不建议使用。标准变更较大,尚未走出混沌。 - PyInstaller - 把脚本编译成可脱离Python环境的可执行程序。免费,跨平台。 - GUI 图形用户界面 - Tkinter:标准的Python GUI库。 - wxPython:wxWindows开源的Pyhon接口。 - JPython:Python脚本无缝接入Java类库。 # 3. 实例 ## 引入第三方模块 Python导入第三方模块(Linux的.so或者Windows的.dll)。 主程序: ```python #! /usr/bin/env python #coding: utf-8 import multiprocessing from Tkinter import * import add ### Global param g_APPTitle = u"Hello World" ### App class class MyApp: def __init__(self, parent): global g_APPTitle parent.title(g_APPTitle) self.parent = parent ### main if __name__ == '__main__': multiprocessing.freeze_support() g_Root = Tk() g_MyApp = MyApp(g_Root) sta, val = add.Add(10, 20) print sta, val g_Root.mainloop() ``` 引入第三方模块的子模块: ```python #! /usr/bin/env python #coding: utf-8 import platform from ctypes import * ### a Add b def Add(a, b): state = True value = 0 try: os_name = platform.system() os_name = os_name.lower() print os_name if os_name == "linux": dll = CDLL("./add_linux.so") elif os_name == "windows": dll = CDLL("./add_win.dll") value = dll.Add(a, b) except: state = False return state, value ``` 案例源码:![下载](../../../../ff_internal_upload/archive/2016/py_sample.rar) ## 执行shell命令 执行shell命令方法: ```python # 方法1 import subprocess pSP = subprocess.Popen("ls -al", stderr=subprocess.STDOUT, stdout=subprocess.PIPE. shell=True, preexec_fn=None) # 方法2 import os os.system("ping 192.168.150.131") # 方法2 import commands (status, output) = commands.getstatusoutput("ls -al") ``` - 方法1:异步执行: - 方法2和3:同步执行;