【发布时间】:2021-09-02 20:16:42
【问题描述】:
带有变量的 Python 嵌套函数和带有属性和方法的类有什么区别? 我上网查了一下,问了一个程序员,但仍然没有弄清楚一个类与包含变量和其他函数的函数有何不同。
示例:
类
class Add:
def __init__(self):
self.a = 5
self.b = 7
def inside_method(self):
return (self.a + self.b)
add1 = Add()
print('sum is:', add1.inside_method())
带变量的嵌套函数
def func():
a = 5
b = 7
def nested_func():
return (a + b)
return nested_func()
print('sum is:', func())
【问题讨论】:
-
您看不到任何区别,因为您的示例首先没有多大意义。在其
__init__实现中没有参数的类(例如您的)不是很有用。 -
在您的示例中,该类只是增加了不必要的麻烦,而没有增加任何价值。但一般来说,类可以提供多种方法,并为可能无法在一个函数中概括的复杂操作或概念公开一个方便的接口。
-
这些都是相似的,但对同一件事的不同方法——封装状态。一个类具有语言内置的各种功能,例如继承,您将不会对某些变量和高阶函数使用闭包。当然,您可以以某种方式重新创建它,但是,您将只是重新实现已经是该语言功能的类
-
@juanpa.arrivillaga 谢谢。那么,类还有很多嵌套函数没有的其他特性吗?
-
如何从
func外部访问嵌套函数?
标签: python class nested-function