2017-05-12 52 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的內置函數。