方法和函数相比各有什么优势呢。比如在一个模块下要实现一个功能,在类内实现一个方法比起在类外实现一个函数,再在类内调用这个函数来说有什么优势吗,或者说该在什么时候用方法,什么时候用函数。
例如下面两种写法 我感觉差不多?
一.
class Solution(object):
def firstBadVersion(self, endIndex):
"""
:type n: int
:rtype: int
"""
return CheckbadVersion(endIndex)
def CheckbadVersion(endIndex, startIndex=1):
if endIndex == 1 and isBadVersion(1):
return 1
if not isBadVersion((startIndex + endIndex) / 2) and not isBadVersion((startIndex + endIndex) / 2 + 1) :
startIndex = (startIndex + endIndex) / 2
return CheckbadVersion(endIndex, startIndex)
elif isBadVersion((startIndex + endIndex) / 2) and isBadVersion((startIndex + endIndex) / 2 + 1):
endIndex = (startIndex + endIndex) / 2
return CheckbadVersion(endIndex, startIndex)
elif not isBadVersion((startIndex + endIndex) / 2) and isBadVersion((startIndex + endIndex) / 2 + 1):
return (startIndex + endIndex) / 2 + 1
二.
class Solution(object):
def firstBadVersion(self, endIndex,startIndex=1):
"""
:type n: int
:rtype: int
"""
if endIndex==1 and isBadVersion(1):
return 1
elif isBadVersion((startIndex+endIndex)/2)==False and isBadVersion((startIndex+endIndex)/2+1)==False :
startIndex=(startIndex+endIndex)/2
return self.firstBadVersion(endIndex,startIndex)
elif isBadVersion((startIndex+endIndex) / 2) == True and isBadVersion((startIndex+endIndex )/ 2 + 1) == True:
endIndex=(startIndex+endIndex)/2
return self.firstBadVersion(endIndex,startIndex)
elif isBadVersion((startIndex+endIndex) / 2) == False and isBadVersion((startIndex+endIndex) / 2 + 1) == True:
return (startIndex+endIndex) / 2+1
代码的结果是一样的,是使用了不同的方法去实现;如果是在少量的代码量来说,直接写函数比较方便,但是代码量多了,就需要封装起来容易后期维护;
这就好比,你在处理10行的数据的时候,可能你使用EXCEL的基础功能就最快,在处理1000行数据,可能就需要用EXCEL的公式或者透视表,但是到了1000万行,那就需要用数据库等方法了,所以不同量级的事情就有不同量级的处理方式
1.方法是对象调用的函数,方法就是函数
2.你的代码基本没什么区别,代码要多了就不一样了,优势就是如果你的代码有几百到几千行,那么把这些代码分成n个函数 看起来感觉就不一样 简洁,你一个函数几百到几千行代码,看起来就累
3.类内或类外定义函数,比如你定义一个类,类内有私有成员变量n,而你要在函数中设置这个成员,类外是无法完成的,只能在类里面定义一个函数来访问这个变量,这就涉及面向对象了,
面向对象是根据现实世界来模拟的,比如你家的保险柜,只能在你家里访问,你能拿到大街上去吗
方法是指在类中定义的函数,
方法与函数的主要区别就是:函数实现的是某个独立的功能,是可以直接调用的,而方法是实现类中的一个行为,是类的一部分,不能脱离类单独使用
代码量少了,没啥区别,代码量多了,面向对象的代码更清晰易懂