gpt4 book ai didi

python - 为什么 Python 允许使用错误数量的参数调用函数?

转载 作者:IT老高 更新时间:2023-10-28 21:12:32 30 4
gpt4 key购买 nike

Python 是我的第一个动态语言。我最近编写了一个函数调用,错误地提供了错误数量的参数。这在调用该函数时失败并出现异常。我希望即使在动态语言中,在解析源文件时也能检测到这种错误。

我了解实际参数的类型在调用函数之前是未知的,因为同一个变量可能在不同时间包含任何类型的值。但是,一旦源文件被解析,参数的 number 是已知的。程序运行时它不会改变。

所以这不是一个哲学问题

为了让这个问题保持在 Stack Overflow 的范围内,让我这样表述这个问题。 Python 是否提供了一些特性,要求它延迟检查函数调用中的参数数量,直到代码实际执行?

最佳答案

Python 无法预先知道您最终会调用什么对象,因为是动态的,您可以替换掉函数对象。随时。这些对象中的每一个都可以有不同数量的参数。

这是一个极端的例子:

import random

def foo(): pass
def bar(arg1): pass
def baz(arg1, arg2): pass

the_function = random.choice([foo, bar, baz])
print(the_function())

上面的代码有三分之二的机会引发异常。但是 Python 无法先验地知道是否会出现这种情况!

而且我什至还没有开始使用动态模块导入、动态函数生成、其他可调用对象(任何具有 __call__ 方法的对象都可以调用)或包罗万象的参数( *args**kwargs)。

但为了更清楚地说明这一点,您在问题中陈述:

It is not going to change while the program is running.

情况并非如此,在 Python 中并非如此,一旦加载了模块,您就可以删除、添加或替换模块命名空间中的任何对象,包括函数对象。

关于python - 为什么 Python 允许使用错误数量的参数调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34567770/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com