博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学以致用三十二-----python中函数的括号使用
阅读量:6645 次
发布时间:2019-06-25

本文共 1506 字,大约阅读时间需要 5 分钟。

一直以来对python中函数括号的使用,有点分不清楚,到底什么时候用括号,什么时候不用括号,造成了很大看困惑。

今天来总结下。

1 class aaa(): 2     y = 'you' 3     def __init__(self): 4         self.y = 'me' 5     def foo(self,aa): 6         self.name = aa 7         return (aa) 8  9 x = aaa10 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----> 
2----> you3---->
4----> <__main__.aaa object at 0x000001F659296B70>5----> me6---->
>7----> u8----> 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实例化了

因此得出结论。

类带括号,类实例化,

函数带括号,执行函数,返回函数的结果

否则不执行,只是调用类或函数本身。

 

转载于:https://www.cnblogs.com/liongong/p/9923657.html

你可能感兴趣的文章
部署Windows Server 2016基于工作组的集群
查看>>
CSS 定义的四种方法
查看>>
Counting Stars
查看>>
关于HTTP_X_FORWARDED_FOR
查看>>
C++中 容易忽视的const 修饰符
查看>>
基础概念扫盲篇之一- “三次握手“
查看>>
Linux下群集和存储管理之Heartbeat+DBRD+NFS
查看>>
CCNA 学习笔记(九)--交换知识(NAT)
查看>>
我的友情链接
查看>>
『字典树 trie』
查看>>
php session_set_save_handler _sess_read 无法赋值问题
查看>>
在ListActivity底部添加一个不动的button解决办法
查看>>
Python元祖,列表,字典,集合的比较
查看>>
虚拟机与主机实现文件共享
查看>>
一次性密码登陆机制
查看>>
避免’sudo echo x >’ 时’Permission denied’
查看>>
网站轮播图
查看>>
cisco之VTP
查看>>
mysql同步到服务器中的一些经验
查看>>
nginx 限流配置
查看>>