先说结论,再举实例验证。
结论:
在Python中,
函数加括号是指对此函数的调用,
函数不加括号是指调用函数本身(的内存地址),也可以理解成对函数重命名(希望这对你理解两者的区别有所帮助,如果你觉得没有帮助那就忽略此段逗号后面的内容)。
举个栗子。可能比较长,但耐心看的话你一定会有收获,不单单局限于题目问题本身。
我在自学《Python编程从入门到实践》第9章进行代码复写时,导入类这块一直无法得到自己想要的结果,如下所示:
from car import Car my_new_car = Car('audi', 'a4', 2016) print(my_new_car.get_descriptive_name) my_new_car.odometer_reading = 23 my_new_car.read_odometer() 1234567
输出结果
<bound method Car.get_descriptive_name of <car.Car object at 0x000002EAB6F7EF60>> This car has 23 miles on it. 12
第一行<bound method …>是什么意思?后来才知道后面那一串其实就是函数的内存地址,但当时网上没找到类似问题的回答,只是在搜索答案的过程模糊意识到可能跟我编写的类,也就是import的对象Car的方法有关。于是开始翻看Car的源代码,发现get_descriptive_name这个函数的代码如下所示:
def get_descriptive_name(self): """返回整洁的描述性信息""" long_name = str(self.year) + " " + self.make + " " + self.model return long_name.title() 12345
你会发现,这个函数只有代表它自身的形参,也就是说在调用该函数的时候是无法传参的。可是,这个发现对解决题目问题似乎没有帮助。
不过,也正是借助这个发现,我认识到是自己在调用此函数时没有在后面加括号。因为我是要调用此函数的方法,结果没有加括号让Python以为我要调用函数本身。经过更正后,如下所示:
from car import Car my_new_car = Car('audi', 'a4', 2016) print(my_new_car.get_descriptive_name()) my_new_car.odometer_reading = 23 my_new_car.read_odometer() 1234567
输出结果:
2016 Audi A4 This car has 23 miles on it. 123
Profect !
相关知识
for语句没有中括号.doc
查找和替换字符类中的花括号
Python常见的错误以及其解决方案
在 Python 中构造 GraphQL 查询字符串的最佳方法
dotnet核心api返回空花括号数组
SKYNE/python
科学网—为什么生态学家要学习Python或者R?
判断花括号是否匹配
【李刚
python内置函数可以返回列表、元组
网址: Python中函数加括号和不加括号的区别 https://m.huajiangbk.com/newsview112820.html
上一篇: 心型装饰花及其制作工艺和用途的制 |
下一篇: 第五章 函数作业一 |