开始IronPython之旅:交互式解释器与常用函数

译文
开发 后端
IronPython是Python与.NET平台的有机结合。本文对IronPython的环境搭建与配置进行了介绍,通过阅读本文,您便可以开始您的IronPython之旅了。

【51CTO精选译文】鉴于Python的强大以及.NET平台的良好发展势头,IronPython成为Python开发的一个十分值得关注的事物。上一篇文章中我们对IronPython进行了一番简单的介绍,接下来,我们将初步学习如何使用IronPython。一开始先简单介绍一下IronPython开发环境的搭建,然后会粗略的涉及一些基本语法——与Python一样的语法。

四、交互式解释器

学习IronPython最简单的方法就是使用它,我们建议您下载安装IronPython 2.6。下载的安装程序包含了二进制文件、Python标准程序库、用于Silverlight的IronPython和一个教程。此外,还有一个成为Pyc.py的工具,该工具可以把IronPython应用程序编译成二进制文件。

交互式解释器 

Ipy.exe可以用来执行IronPython程序,对于熟悉Python语言及探索.NET程序集来说非常有用。在本文中,交互会话使用>>> 来表示。

  1. >>> from System import Array  
  2. >>> help(Array.CreateInstance)  
  3. Help on built-in function CreateInstance:  
  4.  
  5. CreateInstance(...)  
  6.     Array CreateInstance(Type elementType, Array[int] lengths)  

五、与.NET的集成

IronPython本身是用C# 写成的。IronPython使用原生的.NET类型,例如IronPython中的字符串类型即.NET字符串类型,整数类型即Int32,等等。通过使用Python的导入手段,我们就能够访问.NET程序库和类。

在使用.NET framework时,通常要导入clr模块,该模块含有用来为程序集添加索引之类的函数。一旦为程序集添加了引用,我们就能够从该程序集的命名空间中导入类。下面以Windows Forms为例进行说明:

  1. >>> import clr  
  2. >>> clr.AddReference('System.Windows.Forms')  
  3. >>> from System.Windows.Forms import Application, Button, Form  
  4. >>>  
  5. >>> form = Form(Text="Hello World")  
  6. >>> button = Button(Text="Click Me")  
  7. >>> form.Controls.Add(button)  
  8. >>>  
  9. >>> def onClick(sender, event):  
  10. ...     print 'Ouch!' 
  11. >>> button.Click += onClick  
  12. >>> Application.Run(form)  
  13. Ouch!  
  14. Ouch!  
  15.  

[[6427]] 

下面我们对上述代码中有关的Python语法做相应的介绍。

1. 这里通过Form和Button构造函数的关键字参数来设置有关属性。

2. 事件处理函数(onClick)是一个标准的Python函数,IronPython会在幕后调用按钮单击处理程序(EventHandler)。

注意,在Python中,语句结构是用缩排表示的,而不是花括号。onClick函数体相对于其声明来说,要做缩进处理。

六、Dir函数与help函数

在通过交互式解释器进行学习的时候,有两个函数非常有用,它们分别是dir与help函数。Dir(some_object)常用来返回一个对象的所有成员,它们会作为字符串列表返回,而在Python中,我们可以根据需要对列表进行过滤或分割处理。例如,这里我们将显示系统命名空间中所有以字母“I”开头的成员:

  1. >>> import System  
  2. >>> for member in dir(System):  
  3. ...     if member.startswith('I'):  
  4. ...         print member  
  5. ...  
  6. IAppDomainSetup  
  7. IAsyncResult  
  8. ICloneable  
  9. IComparable  
  10. IConvertible  
  11. ICustomFormatter  
  12. IDisposable  
  13. IEquatable  
  14. IFormatProvider  
  15. IFormattable  
  16. (and so on...)  
  17. >>>  
  18.  

Help(some_object)函数能够为我们提供一个对象更为详细的信息。提供help函数,我们可以打印出对象的所有方法,并针对个别方法再次调用该函数以获取进一步的信息:

dir函数与help函数 

  1. >>> from collections import namedtuple  
  2. >>> help(namedtuple)  
  3. Help on function namedtuple in module collections:  
  4.  
  5. namedtuple(typename, field_names, verbose=False)  
  6.     Returns a new subclass of tuple with named fields.  
  7.  
  8.     >>> Point = namedtuple('Point''x y')  
  9.     >>> Point.__doc__                   # docstring for the new class  
  10.     'Point(x, y)' 
  11.     >>> p = Point(11, y=22)             # instantiate with positional args or keywords  
  12.     >>> p[0] + p[1]                     # indexable like a plain tuple  
  13.     33 
  14.     >>> x, y = p                        # unpack like a regular tuple 

Collections模块是Python标准程序库的一部分,namedtuple是一个类制造厂,我们可以使用它新建其行为类似枚举类型(Python没有内建的枚举类型)的类:

  1. >>> from collections import namedtuple  
  2. >>> Point = namedtuple('Point''x y')  
  3. >>> point = Point(13)  
  4. >>> point  
  5. Point(x=1, y=3)  
  6. >>> point.x  
  7. 1 
  8. >>> point.y  
  9. 3 
  10.  

在运行时新建类是动态语言的优点之一。

七、设置sys.path

使用交互式解释器时,一个重要因素是当我们执行导入语句或者为程序集添加引用时,Python需要到哪里去查找。默认时,所有标准.NET框架都可以被引用。另外IronPython安装程序也包含有Python标准程序库。对于别的东西,我们需要告诉IronPython到哪里查找python模块和程序集。

Python用于查找python模块时,需要用到称为sys.path的系统模块中的一个Python列表。对于IronPython来说,当我们为程序集添加引用的时候,IronPython也是通过sys.path来指出到哪里去寻找程序集的。为了将一个新目录添加到搜索路径,只需将该路径作为字符串附加上去就行,具体如下所示:

  1. >>> import sys  
  2. >>> path = 'c:\\Projects\\MyProject' 
  3. >>> sys.path.append(path)  
  4. >>> import clr  
  5. >>> clr.AddReference('MyAssembly'

由于字符串中的反斜杠被用作转义字符使用,因此我们必须在路径中使用双反斜杠。

到这里,对于IronPython所需要了解的基础知识也介绍的差不多了。如果你对于在.NET平台上运行Python感兴趣,那么就来试试看IronPython吧!

【编辑推荐】

  1. IronPython入门:什么是IronPython?
  2. Visual Studio 2010已配备IronPython预览版
  3. IronPython和C#执行速度对比
  4. 浅析.NET 4.0和Visual Studio 2010多定向支持
  5. 图解VS 2010与.NET 4.0多显示器支持
责任编辑:yangsai 来源: 51CTO.com
相关推荐

2013-09-22 16:22:21

2010-02-24 09:39:25

Python交互式

2015-10-14 17:59:53

Google数据探索交互开发

2011-06-13 18:54:12

2023-10-16 16:14:32

数据中心

2024-07-25 08:58:16

GradioPython数据应用

2022-02-22 10:59:24

Kile编辑器Linux

2020-12-18 08:00:00

Python开发Web

2011-12-27 20:12:56

平板

2021-10-18 13:31:28

Web应用交互式

2023-07-28 14:13:15

Streamlit开源Python库

2011-04-28 13:09:46

交互式智能白板投影机

2018-05-21 14:44:33

LinuxshellPython

2010-12-09 21:46:26

Scapy

2020-04-06 20:47:42

FishShellLinux

2018-05-08 08:35:34

LinuxDocker 容器管理器

2011-09-01 15:54:10

app应用

2013-02-18 08:39:15

powershell

2021-06-29 10:23:19

卡巴斯基交互防护VR

2011-08-31 12:09:47

投影仪方案解析
点赞
收藏

51CTO技术栈公众号