我爲什麼可以這樣說:Python中的不同功能?
print (max('abcdefg'))
print (sorted('akjsdhfjkh'))
但不是這樣的:
print(capitalize(cat)
和而這一點:
v='cat'
print (v.capitalize())
我爲什麼可以這樣說:Python中的不同功能?
print (max('abcdefg'))
print (sorted('akjsdhfjkh'))
但不是這樣的:
print(capitalize(cat)
和而這一點:
v='cat'
print (v.capitalize())
max
,sorted
都是正規內置函數
In [30]: max
Out[30]: <function max>
哪裏capitalize
是str
類
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
爲什麼不能正常工作? DEF oneToN(N): 如果n == 1: 返回1 否則: 返回的n + oneToN第(n-1) – paashaas
利用的方法是String對象的一個方法: https://docs.python.org/2/library/string.html#string.capitalize
排序,最大的內置功能: https://docs.python.org/2/library/functions.html
簡短的回答:
沒有深刻的 - 只是選擇的調用約定這些功能。
稍長的答案:
MAX()和排序()是對順序進行操作功能 - 你給他們一個序列(列表,元組,或字符串),他們返回一個新的。
capitalize()是str對象的一種方法。與其中的許多方法一樣,還有一個需要參數的str包方法。因此,如果您願意,可以這樣稱呼它:str.capitalize(v)
這裏沒有邏輯。
你是完全正確的,任何類型的可迭代數據結構(如字符串或列表)應該有一個內置的最大值函數。
即
'abcdefg'.max()
的Python的創造者選擇了少量的操作,他們希望被視爲內置的:https://docs.python.org/2/library/functions.html
其他大部分功能是特定的類或對象的一部分。
我認爲它最大完全合理的一些數學庫
即
import math
math.max('abcdefg')
找方法和功能之間的差異不會有一個內置的,而是一直一部分。主要區別在於我們可以獨立操作函數,而在方法的情況下我們必須使用它與某個對象。
順便說一下,你可以做'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的內置函數。
[方法和函數之間的區別]可能的重複(http://stackoverflow.com/questions/155609/difference-between-a-method-and-a-function) – ozgur