2017-05-12 56 views
-4

我为什么可以这样说:Python中的不同功能?

print (max('abcdefg')) 
print (sorted('akjsdhfjkh')) 

但不是这样的:

print(capitalize(cat) 

和而这一点:

v='cat' 
print (v.capitalize()) 
+1

[方法和函数之间的区别]可能的重复(http://stackoverflow.com/questions/155609/difference-between-a-method-and-a-function) – ozgur

回答

0

maxsorted都是正规内置函数

In [30]: max 
Out[30]: <function max> 

哪里capitalizestr

In [31]: str.capitalize 
Out[31]: <method 'capitalize' of 'str' objects> 
In [32]: str.capitalize("aaa") 
Out[32]: 'Aaa' 
In [33]: "aaa".capitalize() 
Out[33]: 'Aaa 
+0

为什么不能正常工作? DEF oneToN(N): 如果n == 1: 返回1 否则: 返回的n + oneToN第(n-1) – paashaas

1

简短的回答:

没有深刻的 - 只是选择的调用约定这些功能。

稍长的答案:

MAX()和排序()是对顺序进行操作功能 - 你给他们一个序列(列表,元组,或字符串),他们返回一个新的。

capitalize()是str对象的一种方法。与其中的许多方法一样,还有一个需要参数的str包方法。因此,如果您愿意,可以这样称呼它:str.capitalize(v)

0

这里没有逻辑。
你是完全正确的,任何类型的可迭代数据结构(如字符串或列表)应该有一个内置的最大值函数。

'abcdefg'.max() 

的Python的创造者选择了少量的操作,他们希望被视为内置的:https://docs.python.org/2/library/functions.html

其他大部分功能是特定的类或对象的一部分。
我认为它最大完全合理的一些数学库

import math 
math.max('abcdefg') 
0

找方法和功能之间的差异不会有一个内置的,而是一直一部分。主要区别在于我们可以独立操作函数,而在方法的情况下我们必须使用它与某个对象。

0

顺便说一下,你可以做'cat'.capitalize()

在Python中,有函数和方法。一个函数可以自己调用。一个方法需要从它的类的一个对象中调用。

假设你有这条巨蟒文件:

def my_print1():  # this is a function 
    print("cats are nice") 

class test(): 
    def my_print2(): # this is a method 
     print("dogs are nice") 

要调用my_print1 功能你只是做my_print1(),它将打印猫是好的。 但要调用my_print2 方法您需要具有类test的对象,然后该对象可以调用my_print2方法。你可以在代码中这样做:

myObject = test()  # this creates an object of class test 
myObject.my_print2() # this calls the method using that object 

你看到如何使用一个对象调用my_print2?这就像做v.capitalize()v这是内置str(字符串)类的对象,而capitalize是该类的一种方法,因此它需要从中调用对象(v)

max and sorted是python的内置函数。他们可以不需要对象就可以调用。

Here是python的内置函数。