python的一个小文题

Genus 发布于 2012/03/27 23:08
阅读 421
收藏 0

今天看到这样的代码,大致如下:

startswith = 'hello'.startswith
print(startswith('e', 1))

代码意思我猜出来了,但是想具体了解一下这种方法背后的语法知识,之前大致浏览一边《Python学习手册》,但是这中方法没注意到。还请各位大哥指点,看过这本书的最后能给小弟指一下,在哪部分有这方面语法知识的讲解,直接解释一下也可。

加载中
0
Idiot李
Idiot李
python里面函数也是一个对象,每个字符串都是一个对象,它自己有很多方法,也都是对象。所以 'hello' .startswith就是'hello'这个对象的startswith方法对象,其实就是一个函数。=前面的那个startswith是个变量,赋值后引用了'hello'的startswith方法对象。这个时候你可以把startswith变量看成一个函数对象,也就是一个函数, startswith( 'e' 1 )就是函数调用。


0
Genus
Genus

引用来自“Idiot李”的答案

python里面函数也是一个对象,每个字符串都是一个对象,它自己有很多方法,也都是对象。所以 'hello' .startswith就是'hello'这个对象的startswith方法对象,其实就是一个函数。=前面的那个startswith是个变量,赋值后引用了'hello'的startswith方法对象。这个时候你可以把startswith变量看成一个函数对象,也就是一个函数, startswith( 'e' 1 )就是函数调用。


恩,这些我差不多也懂,只是startswith变量在作为函数运行的时候,很像闭包,或者说就是闭包,它保留了'hello'这个字符串的引用,运行的时候就相当于Class.method(instance, args)的形式,我想了解这个过程里包含了什么python语法方面的知识。代码能看懂,但是感觉有些突兀。。。
0
deleted
deleted

引用来自“杨辰”的答案

引用来自“Idiot李”的答案

python里面函数也是一个对象,每个字符串都是一个对象,它自己有很多方法,也都是对象。所以 'hello' .startswith就是'hello'这个对象的startswith方法对象,其实就是一个函数。=前面的那个startswith是个变量,赋值后引用了'hello'的startswith方法对象。这个时候你可以把startswith变量看成一个函数对象,也就是一个函数, startswith( 'e' 1 )就是函数调用。


恩,这些我差不多也懂,只是startswith变量在作为函数运行的时候,很像闭包,或者说就是闭包,它保留了'hello'这个字符串的引用,运行的时候就相当于Class.method(instance, args)的形式,我想了解这个过程里包含了什么python语法方面的知识。代码能看懂,但是感觉有些突兀。。。

你定义的startswith这个函数是 "hello".startswith,所以执行starswith(pattern)就等于执行"hello".startswith(pattern)

如果从调用角度看

str.startswith(parttern)其实就是startswith(self,pattern) (这里的startswith指str的startswith方法, self指class派生出的object本身)

定义class的时候,作为method,self一般是显性声明的,这点和其他隐性声明this的语言不太一样

0
Idiot李
Idiot李
其实就是把个函数中转了,要磕细节得研究一下python怎么实现的了。
返回顶部
顶部