解析python調用函數加括號和不加括號的區別
下面看下python調用函數加括號和不加括號的區別,具體代碼如下所示;
def bracket(data): return data if __name__ == '__main__': # 不帶括號調用的結果:<function bracket at 0x0000000004DD0B38>,a是整個函數體,是一個函數對象,不須等該函數執行完成 a = bracket print a # 帶括號調用的結果:6 ,b是函數執行後返回的值6,須等該函數執行完成的結果 b = bracket(6) print b
1、不帶括號時,調用的是這個函數本身 ,是整個函數體,是一個函數對象,不須等該函數執行完成。
2、帶括號(參數或者無參),調用的是函數的執行結果,須等該函數執行完成的結果。
簡單說就是:
如果使用括號,則隻調用if和函數。hello()
調用函數;hello
隻是一個綁定到函數的名稱,可以用來將函數對象作為參數傳遞給另一個函數。
def caller(f): f() def hello(): print("hi") def goodbye(): print("bye") caller(hello) # Prints "hi" caller(goodbye) # Prints "bye"
id
返回不同的值,因為對id
的每次調用都接收一個完全獨立的對象作為其參數。使用id(hello)
,id
獲取函數對象本身。使用id(hello())
,id
將獲得通過調用hello
返回的對象;
到此這篇關於python調用函數加括號和不加括號的區別的文章就介紹到這瞭,更多相關python調用函數加括號和不加括號的區別內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python numpy和matlab的幾點差異介紹
- python中ndarray數組的索引和切片的使用
- Python Pandas教程之series 上的轉換操作
- Python截取字符串的簡單方法實例
- Golang 實現獲取當前函數名稱和文件行號等操作