Eri*_*iri 6 python syntax runtime dynamic
例如:
def tofloat(i):
return flt(i)
def addnums(numlist):
total = 0
for i in numlist:
total += tofloat(i)
return total
nums = [1 ,2 ,3]
addnums(nums)
Run Code Online (Sandbox Code Playgroud)
本flt应该是float,但我很困惑无论是语法错误或运行时错误.
实际上,这是一个运行时错误,因为Python会尝试flt在运行时解析名称(因为它是一种动态语言),并且它不会找到它.当发生这种情况时,Python会产生异常并说它无法找到您正在使用的符号flt,所有这些都在运行时发生.
当解释器发现使用Python语法不具吸引力的东西时,会发生语法错误.例如:Python的语法不能将输入语法识别为有效的Python程序.这可能发生在:
:在if, def, class等表达式的末尾添加在您的示例中,语法没有任何问题.对于解释器,flt(i)是对flt方法的非常有效的调用,如果它确实存在,则必须在范围内在运行时进行检查.因此,口译员不会抱怨并且您的问题的语法是好的.
实际上,这可以被视为比C#,C++等编译语言更不利.这种错误可以在编译时更快地检测到,并且编译器在找到它时会大声尖叫,因此您可以注意到它.
使用动态语言,在调用实际方法之前,您不会注意到这一点.你的程序很简单,所以你可以快速找到它.但是,缺少o的float是在一个类的子类的子类中的一些遗留框架内,作为属性,在一些其他模块中,等等.这将是苛刻的:)
更新: 如果您了解Python内部的工作原理,Python文档中的执行模型是一个很好的阅读.这将进一步澄清你的疑问,并会给你很多知识:)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
5990 次 |
| 最近记录: |