设为首页 收藏本站
查看: 940|回复: 0

[经验分享] [翻译] python Tutorial 之五(结束篇)

[复制链接]
发表于 2015-4-23 07:00:31 | 显示全部楼层 |阅读模式
Tutorial 5: 扩展 IronPython
  本tutorial 估计耗时: 25- 60 分钟
  本tutorial 的目标是实现一个无缝绑定到IronPython 环境的类. 您可以选择练习1-C# 实现, 练习2-Visual
Basic, 或两者都选择. 两个tracks 会生成相应的功能.

  •   Extending using C#
  •   Extending using Visual Basic.NET
Exercise 1: 使用 C# 扩展
  本练习中,您将会使用C#语言创建一个支持遍历的类, 自定义操作符和delegates.然后您将会在IronPython
中使用那个类. 值得注意的是Python并不包含类保护成员, 当引入Python中时,这些成员会提示到类公有成员.
而类私有成员在Python 中是不可见的.


Task 1: 实现简单类 - 构造和ToString函数

  •   从“开始”菜单打开"SDK Command Prompt" 或 "Visual Studio 2005 Command Prompt".
  •   用记事本程序打开 "csextend.cs" 文件(笔者注:没有则创建). 该文件开始为空
  notepad csextend.cs

  •   在文件开始处添加“using” 子句:

using System;
using System.Collections;  

  •   定义一个简单类:

public class Simple {
    private int data;

    public Simple(int data) {
        this.data = data;
    }

    public override string ToString() {
        return String.Format("Simple", data);
    }
}  

  •   切换回“SDK Command Prompt window” 并使用csx.bat (C# extension)来构建代码:
  csx

  •   在tutorial 路径下打开IronPython 控制台.

  •   加载您刚才创建的csextend.dll到IronPython. 然后使用内置的dir() 来显示这个简单类:
  import clr
  clr.AddReferenceToFile("csextend.dll")
  clr.AddReferenceToFile("csextend_5.1.1.dll")
  import Simple
  dir(Simple)

  您会看到如下输出:
  >>> import clr
>>> clr.AddReferenceToFile("csextend.dll")
>>> import Simple
>>> dir(Simple)
  ['Equals', 'Finalize', 'GetHashCode', 'GetType', 'MemberwiseClone', 'ReferenceEquals',
'ToString', '__class__', '__delattr__', '__doc__', '__getattribute__', '__hash__',
'__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
'__str__']



  •   创建这个简单类的实例:
  s = Simple(10)
  print s
  IronPython 输出:
  >>> s = Simple(10)
>>> print s
  Simple>> import clr
>>> clr.AddReferenceToFile("csextend.dll")
>>> import Simple
>>> dir(Simple)

  >>> s = Simple(10)
  
  >>> for i in s: print i
  Simple import Simple
>>> dir(Simple)
>>> a = Simple(10)
>>> b = Simple(20)
  >>> a + b
>> import clr
>>> clr.AddReferenceToFile("vbextend.dll")
>>> import Simple
>>> a = Simple(10)
>>> def X(i):
  ...     return i + 100
...
>>> a.Transform(X)
  110

  •   该练习包括Visual Basic 扩展例子. 您如果有兴趣, 一个有趣的练习将“调试”例子与“扩
    展”例子结合起来. 如果您乐于这样做, 尝试调用您刚敲入的脚本. 调试脚本"debugvbx.py" 文件位
    于Tutorial 路径下,在“X”函数上设置一个断点 - 您会看到C# 和 Python 的混合调用堆栈(mixed
    call stack).
  Tutorial 总结
  csextend.cs 和 vbextend.vb 文件的完整版本位于Tutorial路径下,与这两个文件在一起的还有
csxtest.py 和vbxtest.py 两个文件。而后面的这两个文件就是相应的C# 与 Visual Basic .NET扩展
测试代码.
  The code to experiment with debugging of Python and C# or Visual Basic code, use Python scripts debugcsx.py and debugvbx.py respectively.
  本tutorial 中您做了如下练习.

  •   Extending IronPython using C# code
  •   Extending IronPython using Visual Basic .NET
  本tutorial 中, 您实现了一个简单类,并在IronPython 中使用该类. 您为IronPython 添加了遍
历类的功能, 添加了操作符和对delegate 的支持. 这里有C# 和 Visual Basic 两种实现.


Tutorial 6: 使用Visual Studio 编辑“.py”文件并进行调试
  除了.NET的调试支持之外,Visual Studio也支持简单地编辑“.py”文件(no coloring or expression
completion).  本tutorial 告诉您如何用Visual Studio 配置 Python 脚本工作.(This tutorial shows
you how to quickly set up Visual Studio to work on Python scripts in a directory.)


  本tutorial 估计耗时: 5 分钟
  本tutorial 的目标是配置Visual Studio,一些用于调试的基本工具.



  •   Setting up Visual Studio for IronPython Debugging
Exercise 1: 配置 Visual Studio 用于IronPython 调试
  本练习中,您将会配置Visual Studio 解决方案,编辑路径中的“.py”文件并使用Visual Studio
.NET debugger 进行调试. 我们将Tutorial 路径做为例子, 另外您可在别处保存您的解决方案.
Task 1: 配置 Visual Studio 用于IronPython 调试

  •   打开Visual Studio 并关闭其它解决方案和项目.
  •   使用“File->Open->Project/Solution ... ”命令并浏览到IronPython 路径下的ipy.exe (比如您
    的路径c:"IronPython"ipy.exe).
  •   我们使用Tutorial 路径做为例子, 然后我们将该路径设置为“工作路径” (working directory)用
    于加载“.py” 脚本. 在“Visual Studio's solution explorer ” 右击ipy.exe 项目结点,选择“属性”
    (Properties).
  •   在属性对话框中, 添加两个属性:命令行参数(Command Arguments)和工作路径(Working Directory).  
    在命令行参数(Command Arguments)中, 敲入"first.py". 在工作路径(Working Directory)中, 敲入Tutorial
    路径(c:"IronPython"Tutorial" is where we assume you have it).  单击应用和“OK”确认修改.
  •   现在使用“File->Save All ... ”命令保存修改.  保存它到Tutorial 路径.
  •   为测试我们的配置, 使用“Ctrl+O”打开一个文件.  浏览到Tutorial 路径下的 "first.py" 文件.  
    放置^ (caret) 到 reads "def add(a, b):" 行上, 接着按 F9 设置一个断点.
  •   按下 F5 运行脚本, 接着点击该断点. 如您按下 F10, 您会步进(step through)这个文件, 所执行
    的都是加载定义和设置变量直到结束.
  •   为了了解更多的步骤 (stepping), 我们对这个文件添加一行并设置另一个断点.  在文件底部添加
    一行并调用factorial 函数("factorial(5)").  在行reads "if n < 1: return 1" 添加断点. 现在按下F5
    运行脚本. 反复按下F10 观察&#8220;locals window&#8221; 参数 "n" 减少到 0 。then goes back up to 5 as the
    recursion unwinds.  您也可以将鼠标放在 "n" 上面, 每次运行到断点处暂停时,得到该变量的数据提示.
  为了运行其它脚本, 只要修改&#8220;ipy.exe&#8221;项目的命令参数,以及其它的script. 您可能也看到&#8220;工具->
选项&#8221;对话框,改变&#8220;环境->文档&#8221;上的属性来显示打开的脚本文件.  如选择"Show Miscellaneous Files
in the Solution Explorer", 然后您会得到正在编辑的&#8220;.py&#8221;文件列表.  以后每次您打开这个解决方案时,

  您会看到解决方案下所有开发的&#8220;.py&#8221;文件.
  
  
  Tutorial 总结:
  本tutorial 中,您做了如下练习.

  •   Setting up Visual Studio for IronPython Debugging,配置Visual Studio 用于IronPython 调试
  本tutorial 中,您配置Visual Studio 运行 Python scripts 脚本并调试它们.




     好了,到这里终于翻译完了,也快&#8220;吐血&#8221;了。


  感兴趣的朋友可以通过EMAIL或在回复中与我联系。
  
  作者:代震军 (daizhj)        
  博客:http://daizhj.iyunv.com

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-59747-1-1.html 上篇帖子: Python开发_python的安装 下篇帖子: 使用python selenium进行自动化functional test
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表