宏观函数组件
2016年3月:Marga Delgado解释了如何使用“宏观函数组件”在执行任务时产生额外的输出。
作者:Tessa Hayman
2021年5月
Aimsun最新版本中,我们引入了AimsunNext带有Python 3 的选项使用 Next 20. 然而,需要注意Python 2和Python 3之间有一些重要的区别 当你开始转换你的模型和脚本时。 本技术说明将涵盖关键的差异以及如何做 update your Python 2 script to get it Python 3–ready. 更新Python 2脚本,让它为Python 3做好准备。
2020年1月,Python 2生命周期终结,意味着它将不再收到更新和错误 修复,更重要的,没有安全修复。因此我们建议你使用Pyson 3来处理所有新的开发。许多Python 3代码在Aimsun 软件 不可用于Python 2。 但是,你 可能会发现你的旧脚本给出错误,在使用Python 3的时候 – 特别是在打印语句方面!
在打印语句之外,要特别留意主要的差别,因而你可以检查什么需要改变,如果你希望用同样的脚本或成本函数在多重模型上面,因为一些改变可能会改变你的脚本而不会给出错误信息。
你会看到的最常见的变化是打印语句。 在Python 3中,打印语句应该放在括号里。.
print “hello”
print (“hello”)
在Python 2中,当两个整数变量相除时,将产生一个整数值。 然而,在Python 3中,这一点已经被改变,一个浮动值给出 作为输出, 这常常导致用户的一个共同混淆之处。
如果你的脚本中有整数除法,这可能有很大的影响。
5/3=1
5/3=1.6666...
在Python 2中,你必须使用 “u “来指定一个字符串是否被存储为Unicode,在字符串前。. 在Python 3中,统一码现在是字符串的默认存储方式。
u“café”
“café”
xrange() 在Python 2中经常被用来在for-loop中迭代一个列表或集合中的对象。 这是 有用的对一次性操作来讲,但是可能成为不充分的,如果其重复多次,因为该范围的生成是重复的。它也不能与应用于列表的函数一起使用。因此,它已经被rang()替代, 这可生成一个范围对象,它的工作方式更像一个列表。
for x in xrange():
for x in range():
I对dictionary的keys的迭代已经被调整为与一个列表的迭代相同。.iterkeys()不再被需要,而你可以直接迭代keys。对values的迭代,你可以用.values()而不是itervalues()。
for x in dict.iterkeys():
for x in dict.itervalues():
for x in dict:
for x in dict.values():
Exceptions可以被“raised”来提醒用户注意错误,并告诉脚本在出现错误时该怎么做。 在Python 3,这个“exception”必须放进括号里。
raise IOError, “file error”
raise IOError(“file error”)
“Try”和“except” 被用来测试和处理代码的错误。 Try block允许你测试一块代码是否有错而except block 让你处理错误。 如果一个命名的错误被”raised”,你可以在”except”里指定一个行动。 在Python 3中,except语句的语法已经被改变,包括 “as”。
例如,
try:
print(x)
except NameError as err:
print("x is not defined")
print(err)
except:
print("Something else")
“except”行的语法已被改变,包括一个 “as” 这个例子将打印出以下内容:
x is not defined
name ‘x’ is not defined
except NameError, err:
except NameError as err:
“Next” 允许你返回一个迭代器中的”next”项。 以前在Python 2中,可以用以下方法指定 List.next()和next(List) 但在Python 3中,只有后一种语法可以使用。
X=next(List) or
X=List.next()
X =next(List)
在Python 2中,可以将用在for-loop中的迭代变量泄露到全局namespace。 或者说,如果你在for-loop前后使用相同的变量名,for-loop变量可能会覆盖该值, 以循环中的变量的最终值。
例如,
variable = 0
print 'before: variable =', variable
print 'for-loop: ', [variable for variable in range(5)]
print 'after: variable =', variable
before: variable = 0
for-loop: [0, 1, 2, 3, 4]
after: variable = 4
before: variable = 0
comprehension: [0, 1, 2, 3, 4]
after: variable = 0
分享
Aimsun Next 20
Aimsun Next 8.4
Aimsun Next 20
@manual {AimsunManual,
title = {Aimsun Next 20 User’s Manual},
author = {Aimsun},
edition = {Aimsun Next 20.0.3},
address = {Barcelona, Spain},
year = {2021. [In software]},
month = {Accessed on: Month, Day, Year},
url = {qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html},
}
Aimsun Next 8.4
@manual {AimsunManual,
title = {Aimsun Next 8.4 User’s Manual},
author = {Aimsun},
edition = {Aimsun Next 8.4.4},
address = {Barcelona, Spain},
year = {2021. [In software]},
month = {Accessed on: Month, Day, Year},
url = {qthelp://aimsun.com.aimsun.8.4/doc/UsersManual/Intro.html},
}
Aimsun Next 20
TY – COMP
T1 – Aimsun Next 20 User’s Manual
A1 – Aimsun
ET – Aimsun Next Version 20.0.3
Y1 – 2021
Y2 – Accessed on: Month, Day, Year
CY – Barcelona, Spain
PB – Aimsun
UR – [In software]. Available: qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html
Aimsun Next 8.4
TY – COMP
T1 – Aimsun Next 8.4 User’s Manual
A1 – Aimsun
ET – Aimsun Next Version 8.4.4
Y1 – 2021
Y2 – Accessed on: Month, Day, Year
CY – Barcelona, Spain
PB – Aimsun
UR – [In software]. Available: qthelp://aimsun.com.aimsun.8.4/doc/UsersManual/Intro.html