python字串是物件嗎

fondtiger發表於2021-09-11

python字串是物件嗎

python中一切都是物件

在python中下列語句其實都是一個共同點:

i = 1
s = "abcde"
def foo(): pass
class C(object): pass
instance = C()
l = [1,2]
t = (1,2)

他們在python直譯器中執行的時候,都會在堆中新建了一個物件,然後把新建的物件繫結到變數名上。

i = 1              #新建一個PyIntObject物件,然後繫結到i上
s = "abcde"        #新建一個PyStringObject物件,繫結到s上
def foo(): pass    #新建一個PyFunctionObject物件, 繫結到foo上
class C(object): pass    #新建一個類物件,繫結到C上
instance = C()           #新建一個例項物件,繫結到instance上
l = [1,2]                #新建一個PyListObject物件,繫結到l上
t = (1,2)                #新建一個PyTupleObject物件,繫結到t上

第一類物件

第一類物件(英語:First-class object)在電腦科學中指可以在執行期創造並作為引數傳遞給其他函式或存入一個變數的實體。將一個實體變為第一類物件的過程叫做“物件化”(Reification)。

第一類物件不一定是物件導向程式設計所指的物件,而可以指任何程式中的實體。一般第一類物件所特有的特性為:

可以被存入變數或其他結構

可以被作為引數傳遞給其他函式

可以被作為函式的返回值

可以在執行期創造,而無需完全在設計期全部寫出

即使沒有被繫結至某一名稱,也可以存在

函式、類、模組等所有物件都是第一類的,以函式作為第一類物件的為例:

#!/usr/bin/env Python
# coding=utf-8
'''
Created on 2017年8月11日
'''
def foo(text):
    return len(text)

#1.函式存入變數
f=foo   

#2.函式作為引數
def show(func):
    size = func("python 之禪") # 等效於 foo("Python之禪") 
    print ("length of string is : %s" % size)

#3.函式作為返回值
def nick():
    return foo

show(f)
print(nick()("abc"))

#4.函式在執行期創造
exec('''def foo2():
    print("haha")
foo2()''')

print(foo("12345"))

#5.沒有被繫結至某一名稱的匿名函式lambda
print(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2508/viewspace-2836656/,如需轉載,請註明出處,否則將追究法律責任。

相關文章