python中函数的括号使用
生活随笔
收集整理的這篇文章主要介紹了
python中函数的括号使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一直以來對python中函數括號的使用,有點分不清楚,到底什么時候用括號,什么時候不用括號,造成了很大看困惑。
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! '''1 class aaa():2 y = 'you'3 def __init__(self):4 self.y = 'me'5 def foo(self,aa):6 self.name = aa7 return (aa)8 9 x = aaa 10 print("1---->",x) 11 print("2---->",x.y) 12 print("3---->",x.foo) 13 # print("========分割線=========") 14 15 x = aaa() 16 print("4---->",x) 17 print("5---->",x.y) 18 # print("--------分割線---------") 19 20 print("6---->",x.foo) 21 print("7---->",x.foo('u')) 22 print("8---->",x.foo('cc')) 23 # print("~~~~~~~~分割線~~~~~~~~~")執行結果:
1----> <class '__main__.aaa'> 2----> you 3----> <function aaa.foo at 0x000001F6592626A8> 4----> <__main__.aaa object at 0x000001F659296B70> 5----> me 6----> <bound method aaa.foo of <__main__.aaa object at 0x000001F659296B70>> 7----> u 8----> cc根據結果來分析:
1、 x = aaa aaa是一個類名,后面沒加括號,打印結果 ,表明x是個類
2、 由于沒有加括號,類沒有實例化,y為公有屬性,因此x.y打印的結果為you
3、foo為aaa類中的函數,稱為方法或屬性,同時 foo后面也未加括號,打印結果為foo在內存中的地址
注意,此時 print(x.foo())或者 print(x.foo(‘aa’)) 都會報錯,
print(x.foo()) TypeError: foo() missing 2 required positional arguments: 'self' and 'aa'print(x.foo('aa')) TypeError: foo() missing 1 required positional argument: 'aa'由此可見,根據提示,foo后面應該帶兩個參數,這里為啥要帶兩個參數呢。因為x沒有初始化,x沒有作為參數傳到foo函數里
所以
print(x.foo(x,'cc')) print(x.foo(aaa,'cc'))得到結果 cc cc可以看出,這里self指的是類本身
4、 x = aaa() 類aaa后面帶括號,打印結果 aaa 類內存中的地址
5、由于x = aaa() 表示aaa被實例化,因此會調用構造方法中的y,打印結果是self.y的值
6、表示foo是類中的方法,foo沒有帶括號,不執行函數。
7和8 ,foo帶括號,執行foo函數。此處 foo里只帶一個參數“u” 或者"cc" ,并沒有和上面提到的帶兩個參數,因為aaa實例化了
因此得出結論。
類帶括號,類實例化,
函數帶括號,執行函數,返回函數的結果
否則不執行,只是調用類或函數本身。
總結
以上是生活随笔為你收集整理的python中函数的括号使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python学习-之汉诺塔实现
- 下一篇: Python:图片懒加载技术