为了账号安全,请及时绑定邮箱和手机立即绑定

方法和函数是??

什么是函数?,什么是方法?

两者有什么区别?

正在回答

2 回答

在python中,函数为标准用语,在其他语言中,如java,net,函数也可叫方法。

所以,两者本身是一体的,本质一样。

但是在python这种动态语言中,由于是弱类型的原因,本身函数使用相当灵活,和javascript类似,不像强类型那样分的很清楚,在面向对象如类的定义和使用中,便利了很多,当然也容易出错。

1 回复 有任何疑惑可以回复我~
#1

最强王者啊 提问者

非常感谢!
2017-06-22 回复 有任何疑惑可以回复我~
#2

慕用6484265

python明明是强类型的语言 别误导人 灵活只是因为是动态语言 而且在动态语言中灵活性更大点
2018-12-23 回复 有任何疑惑可以回复我~

绑定到类以及对象的函数叫做方法,lambda表达式除外。不属于类和对象的普通函数就叫函数。lambda是个例外,且不论是否从上下文中捕获变量。

测试以下代码即可验证:

import types

def fn_get_grade(self):
    pass

class Person(object):

    def __init__(self, name, score):
        self.name = name
        self.score = score
        self.get_grade = lambda: 'A'
        self.fn_get_grade = fn_get_grade
        
    def get_grade_function(self):
        return 'A'

p1 = Person('Bob', 90)

def  f():
    pass

p1.inner_f = types.MethodType(f,p1,Person)

def  f():
    pass

print f
print p1.get_grade
print p1.get_grade_function
print p1.inner_f
print p1.fn_get_grade
print p1.get_grade()

输出

<function f at 0x7fd59c89c848>
<function <lambda> at 0x7fd59c89c668>
<bound method Person.get_grade_function of <__main__.Person object at 0x7fd59c896d90>>
<bound method Person.f of <__main__.Person object at 0x7fd59c896d90>>
<function fn_get_grade at 0x7fd59c89c5f0>
A



ok。

7 回复 有任何疑惑可以回复我~
#1

慕后端4582086

为什么__init__方法里这句self.fn_get_grade = fn_get_grade可以直接赋值,fn_get_grade没有被传入方法内啊,不是很理解
2018-06-01 回复 有任何疑惑可以回复我~
#2

慕勒8329647 回复 慕后端4582086

有谁知道讲一下
2018-08-18 回复 有任何疑惑可以回复我~
#3

慕勒8329647 回复 慕后端4582086

没有传入,所以输出的是<function fn_get_grade at 0x7fd59c89c5f0>
2018-08-18 回复 有任何疑惑可以回复我~
#4

慕勒8329647 回复 慕后端4582086

我也不理解
2018-08-18 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

方法和函数是??

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信