带有变量与类的 Python 嵌套函数?

问题描述

带有变量的 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())

解决方法

对您的问题的评论已经是一个很好的答案。

Python 方法只是一个以 self 作为第一个参数的函数,它是定义该方法的类(的继承类)的实例。

确实,对于您的非常简单的示例,使用类几乎没有用。但是您可能熟悉 str 类的 Python 字符串:

>>> type("hello")

一个字符串有 many methods : capitalize,casefold,center,count,encode,endswith,. ..

这很方便,因为我不需要每次为要调用的每个方法都创建相同的字符串,我可以重用相同的实例:

>>> s = "hello"
>>> s.capitalize()
"Hello"
>>> s.replace("h","G")
'Gello'
>>> s.count("l")
2

更强大的是使用类实例来存储状态。 Python 字符串是不可变的,但列表不是。

>>> temperatures = [14,15,10,33]
>>> temperatures[1]
15
>>> temperatures[1] = 0
>>> temperatures
[14,33]
>>> temperatures.sort()
>>> [0,14,33]

在 Python 中实现的面向对象主要是将有状态数据与对其进行操作的函数(命名方法)耦合。它旨在简化这些通常有用的结构。

希望它澄清!