# Python控制结构（带有示例）

### 循环​

与C和ST相对，Python中的for循环不计算循环变量，而是在序列上进行迭代。这种序列可以是字典，列表，元组，字符串中的字符或文件中的行。

以下示例显示了一些for循环：以下示例显示了典型循环:

> 例如： loops.py

> from __future__ import print_function

> print("Enumerating over a simple list:")
> for i in (1,2,3,4):
> print(i, end=", ") # end =将换行符替换为“，”
> print() # 但是在本案例的结尾，我们仍然需要换行符。

> print("Enumerating over the characters in a string:")
> for i in "MetaFacture": # 字符表示为长度为1的字符串。
> print(i, end=", ")
> print()

> print("Enumerating over the integers 1 to 4:")
> for i in range(1, 5): # 上界是唯一的。
> print(i, end=", ")
> print()

> print("Enumerating using xrange:")
> for i in xrange(5): # xrange与range相似，但是大范围需要较少的内存。
> print(i, end=", ")
> print()

> print("Enumerating including the item number:")
> for i, v in enumerate("MetaFacture"):
> print(i, v)
> 输出结果:

如果除工程外还需要索引或数字，则应使用示例脚本的最后一种情况中所示的enumerate。以下代码被认为是较差的样式：

> 例如：Poor style

> text = "MetaFacture"

> for i in range(len(text)): # BAD STYLE!
> v = text[i] # DON'T TRY THIS AT HOME!
> print(i, v)

除了for循环，Python还具有while循环，这与C和ST中的非常相似：

> 例如："while”循环

> i = 0
> while i < 3;
> print(i)
> i += 1
> 注意：这个例子不是很实际。你更有可能使用带范围的for循环。

### IF / ELSE​

if/else构造类似于其他编程语言中的构造。这有一个简短的例子：

> 例如："if_else.py"

> from __future__ import print_function
> i = int(system.ui.query_string("Please enter an integral number..."))
> if i < 0:
> print("Your number was negative.")
> elif i > 0:
> print("Your number was positive.")
> else:
> print("It seems your number was zero.")

else分支是可选的，可以有零个，一个或多个elif分支。

### 函数，类和方法​

Python允许使用方法定义函数和类。具有方法的类基本上类似于ST中的功能块，或者类似于C ++，Java或C＃等语言的类。但是，Python不支持接口。

有关详细信息，请参阅Python文档以定义函数和类。

> 例如：函数，类和方法

> #用名称sum和两个参数a和b定义一个函数：
> def sum(a, b):
> return a + b # we return the sum of a and b.

> # 我们现在可以调用上面定义的函数：
> print(sum(5,7))

> # 现在我们定义一个Foo类：
> class Foo:
> # 该类获取方法“ bar”。
> # 注意：对于方法，第一个参数始终是“ self”，
> # 指向当前实例。这类似于# ST和其他的语言中的“ this”
> def bar(self, a, b):
> print("bar(%s,%s)" % (a,b))

> # 我们创建该类的一个实例：
> f = Foo()

> 我们在实例上调用方法栏。
> f.bar("some", "params"）

### 模块和标准库​

在IEC中，你可以导入库以供其他书面代码重复使用。作为插件，Python中有可能导入模块。

Python标准库包含许多用于不同目的的模块，例如：

- 字符串处理
- 日期和时间处理
- 搜集
- 通行
- 数学函数
- 文件处理
- 保持
- 压缩和归档
- 数据库访问
- 加密服务
- 网络及Internet访问
- 发送邮件

要创建自己的模块，请编写一个Python文件，该文件定义要提供的功能和类。将此文件保存到与示例脚本相同的目录中。如果将文件命名为mymodule.py，则可以使用import mymodule将其导入。

这是从math模块导入和使用余弦函数和pi常量的示例：

> 例如：导入数学函数

> from math import cos, pi

> print(pi) # prints 3.14159265359

> print(cos(pi)) # prints -1.0

以下包含更多示例，这些示例访问有关操作系统，Python版本和解释器的信息：

> 很重要的例子

> import os
> print(os.environ["OS"])

> from sys import platform, version, executable
> print(platform)
> print(version)
> print(executable)

有一个特殊的模块__future__用于激活新的语言功能。最重要的是，它在Python开发人员引入向后兼容的新功能时使用。这些功能必须通过特殊的“__future__导入”来激活。我们在此处的大多数示例脚本中使用的一个示例是激活print的新功能语法作为函数而不是语句。

> 例如："__future__"

> # 使print（）成为函数而不是语句
> 从__future__导入print_function

Python文档提供了所有__future__导入的完整列表。

除了普通的Python模块之外，IronPython代码还可以像使用Python模块一样访问.NET程序集。这将打开对.NET Framework类库和第三方库的访问。这是一个示例，如何通过库Windows Forms打开对话框：

> 例如：Opening a .NET dialog box

> import clr
> clr.AddReference("System.Windows.Forms")
> from System.Windows.Forms import MessageBox

> MessageBox.Show("Hello")