我注意到一些函数使用var.func()
格式调用var1.split()
,而其他函数使用func(var)
格式调用,如sorted(list1)
。
这是一个非常简单的程序来说明这个问题。我也注意到open
和read
函数的相同行为。
str1 = "This is a string"
list1 = str1.split()
print str1.split(' ')
print sorted(list1)
我对编程很陌生,所以非常感谢任何帮助!
答案 0 :(得分:2)
python中的所有内容都是对象。因此在做这样的事情时:
s = "some string"
s
是一个str
对象,你可以调用它上面的所有str方法。你也可以这样做:
"some string".split()
它会给你一个拆分字符串列表。
答案 1 :(得分:0)
var.func()
只表示该函数属于该对象。
例如,x.sort()
。 list
s(如x
)有一个函数sort
。
当您致电func(var)
时,func
不是列表的功能。
例如,sorted(x)
。
这不是特定于Python的。您将在其他语言中看到相同的想法(例如Java)。
答案 2 :(得分:0)
这种差异与范围问题有关。可以直接调用的函数(例如上例中的sorted(list1)
)可以是内置函数,也可以在其中一个导入库的顶层定义(例如,使用from simpy import *
时,可以直接调用test()
来运行simpy库的内置测试套件。通过点运算符访问的函数是为您应用它们的特定数据类型定义的函数。请记住,python中的每个数据类型都是一个对象,因此是一个类的实例。这些函数(例如split()
)在该数据类型的类定义中定义。此外,要再次使用simpy库中的test()
示例,如果您要导入仅包含import simpy
的库,则必须使用simpy.test()
来调用该方法。
from simpy import *
test()
VS
import simpy
simpy.test()
第一个有效,因为你已经从simpy库的顶层导入了所有方法和类,而第二个有效,因为你已经明确地潜入了simpy库的范围。
答案 3 :(得分:0)
在var.func()
中,func()
旨在与var
对象一起使用。
e.g。字符串对象上的split()
但不能在list
但func(var)
并不局限于单个var对象类型。你可以将它与任何适当的var对象一起使用。
e.g。 sorted()
可以与lists
,tuples
,dicts
等任何可迭代使用...
答案 4 :(得分:0)
按照Traxus的思路,我尝试了以下内容并且有效!
from string import split
str1 = "This is a string"
list1 = str1.split()
print split(str1)
print sorted(list1)