2024-04-29 09:49:28 发布
网友
假设我的脚本中有两个函数:sum_numbers和print_sum。它们的实现方式如下:
sum_numbers
print_sum
def sum_numbers(a, b): return a + b def print_sum(a, b): print(sum_numbers(a, b))
所以我的问题是:函数的书写顺序是否重要?如果我先编写print_sum函数,然后再编写sum_numbers,代码还能工作吗?如果答案是肯定的,它总是有效的吗?
Python唯一关心的是,名称是在实际查找时定义的。这就是全部。
在您的例子中,这很好,顺序并不重要,因为您只是定义两个函数。也就是说,你只是介绍了两个新名字,没有查找。
现在,如果您调用其中一个(实际上,执行了一个查找)并切换顺序:
def print_sum(a, b): print(sum_numbers(a, b)) print_sum(2, 4) def sum_numbers(a, b): return a + b
你会遇到麻烦(NameError),因为它会试图找到一个不存在的名字(sum_numbers)。
NameError
所以一般来说,是的,的顺序确实很重要;在Python中没有像在其他语言(比如JavaScript)中那样提升名称。
函数的创建顺序无关紧要。只有当函数调用完成时才重要:
def print_sum(a, b): print(sum_numbers(a, b)) def sum_numbers(a, b): return a + b print_sum(1, 3) # 4
这是因为在调用print_sum时,两个函数都存在。但是,如果在定义sum_numbers之前调用该函数,它将失败,因为sum_numbers尚未定义:
def print_sum(a, b): print(sum_numbers(a, b)) print_sum(1, 3) def sum_numbers(a, b): return a + b
投掷:
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-34-37c0e3733861> in <module>() 2 print(sum_numbers(a, b)) 3 ----> 4 print_sum(1, 3) 5 6 def sum_numbers(a, b): <ipython-input-34-37c0e3733861> in print_sum(a, b) 1 def print_sum(a, b): ----> 2 print(sum_numbers(a, b)) 3 4 print_sum(1, 3) 5 NameError: name 'sum_numbers' is not defined
Python唯一关心的是,名称是在实际查找时定义的。这就是全部。
在您的例子中,这很好,顺序并不重要,因为您只是定义两个函数。也就是说,你只是介绍了两个新名字,没有查找。
现在,如果您调用其中一个(实际上,执行了一个查找)并切换顺序:
你会遇到麻烦(
NameError
),因为它会试图找到一个不存在的名字(sum_numbers
)。所以一般来说,是的,的顺序确实很重要;在Python中没有像在其他语言(比如JavaScript)中那样提升名称。
函数的创建顺序无关紧要。只有当函数调用完成时才重要:
这是因为在调用
print_sum
时,两个函数都存在。但是,如果在定义sum_numbers
之前调用该函数,它将失败,因为sum_numbers
尚未定义:投掷:
相关问题 更多 >
编程相关推荐