python中带括号和不带括号调用函数有什么区别? [复制]

2024-07-01

我有个问题。假设我们有函数 hello()。带括号和不带括号调用有什么区别?当我调用 hello() 时,它引用的是一个值等于此函数的对象。或者也许我错了?当我不带括号调用它时会发生什么?

我想知道为什么

def hello():
    pass

print(id(hello))
print(id(hello()))

返回不同的结果

4400606744
4398942536

简短回答:参见https://nedbatchelder.com/text/names.html https://nedbatchelder.com/text/names.html更好地理解对象和用于引用对象的名称之间的区别。


如果满足以下条件,则调用函数only如果你使用括号。hello()调用该函数;hello简单来说就是一个name绑定到函数,并且可以用于例如将函数对象作为参数传递给另一个函数。

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正在获取对象returned通过致电hello;它是一样的

x = hello()
print(id(x))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中带括号和不带括号调用函数有什么区别? [复制] 的相关文章

  • 使用脚本取消设置 PDF 字体

    我正在使用 xhtml2pdf 库自动创建 PDF 几个月前我有过这个问题 https stackoverflow com questions 25203219 xhtml2pdf doesnt embed helvetica 库嵌入了我没
  • Python,将 mongodump 的 bson 输出转换为 json 对象数组(字典)

    我已经使用转储了 mongodb 集合mongodump命令 输出是一个转储目录 其中包含以下文件 dump coll bson coll metadata json 如何将导出的文件打开到在 python 中工作的字典数组中 我尝试了以下
  • 如何使用判别函数绘制 3 个类别之间的决策边界

    我有 3 个判别函数 将 2D 空间划分为 3 个区域 我想绘制这些区域之间的决策边界 我不知道如何在 python 中使用 matplotlib meshgrid 来做到这一点 对于2个判别函数 过程很简单 我计算值为 0 的函数和等高线
  • 使用多处理或线程加速单个任务

    是否可以使用多处理 线程来加速单个任务 我的直觉是答案是否定的 以下是我所说的 单一任务 的示例 for i in range max pick random choice on off both 当参数为 10000000 时 在我的系统
  • Python 内存使用情况

    因此 我有一些代码接收一组文件 将其可以缝合在一起 然后绘制它们 我发布了大部分代码 试图使其更具可读性 如果需要 可以添加更多代码 for paths dirs files in os walk start path for d in d
  • 导入pygame时出错

    我已经使用以下命令通过 Anaconda 安装了 pygame conda install channel https conda anaconda org kne pygame 然后我尝试导入 pygame 并收到以下错误 Traceba
  • 加速使用 Pyinstaller 创建的 .exe

    我已经使用 Pyinstaller 将我的程序 用 Python 3 6 1 编写 使用 Python 3 5 3 转换 从 py 转换为 exe 然而 它是加载速度极其缓慢 与在空闲状态下运行时我优化了我想什么问题是 导入大量模块 所以我
  • Python/Excel - IOError: [Errno 2] 没有这样的文件或目录:

    尝试从文件中提取 xlsx 文档并将数据编译到单个工作表中 尽管文件存在但仍收到 IOError 程序如下 loop that pulls in files from folder import os create directory fr
  • 为什么追加会覆盖列表?

    我正在尝试 hackerrank 的一些问题并遇到了这个问题https www hackerrank com challenges list com经理 问题 https www hackerrank com challenges list
  • 使用 itertools.product 并想要播种一个值

    所以我写了一个小脚本来从网站下载图片 它通过 7 个字母字符值 其中第一个字符始终是数字 问题是 如果我想停止脚本并再次启动它 我必须从头开始 我可以用我得到的最后一个值以某种方式播种 itertools product 吗 这样我就不必再
  • Python 中的一维马哈拉诺比斯距离

    我一直在努力validate我的计算代码马哈拉诺比斯距离写在Python 并仔细检查以比较 OpenCV 中的结果 我的数据点均为 1 维 5 行 x 1 列 In OpenCV C 我成功计算了马哈拉诺比斯距离方面数据点的尺寸为上述尺寸
  • 多处理和美好价值

    有谁知道在多处理中创建进程或池时设置进程或池的良好值的简单方法 os nice increment Add increment to the process s niceness Return the new niceness Availa
  • Discord.py 提供角色的反应机器人

    我如何制作一个机器人 当人们对特定事物做出反应时 它可以为他们分配角色 到目前为止我有这个但它不起作用 client event async def on ready channel client get channel 513546504
  • Python 程序员资源 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 plt 在热图上绘制梯度箭头

    我正在尝试绘制箭头以可视化热图上的梯度 这是我到目前为止的代码 import matplotlib pyplot as plt import numpy as np function to plot lambda x y x y 2 hor
  • 为什么 a.insert(0,0) 比 a[0:0]=[0] 慢很多?

    使用列表的insert函数比使用切片分配实现相同效果要慢得多 gt python m timeit n 100000 s a a insert 0 0 100000 loops best of 5 19 2 usec per loop gt
  • 一次将多个函数应用于 Pandas groupby 对象

    已经提出了这个问题的变体 参见这个问题 https stackoverflow com questions 40532024 pandas apply multiple functions of multiple columns to gr
  • Matplotlib 中的月份定位器

    我有这样的情节 我想更改 12 个位置的刻度 以这种格式指示相应的月份 Jan Feb Mar 当我使用 MonthLocator 函数时 刻度线从图中消失 ax plt gca ax set xlim 0 365 ax xaxis set
  • 将函数应用于数据帧的每一行

    下面有什么更优雅的实现方式 我想应用一个函数 my function到数据帧 其中数据帧的每一行都包含函数的参数 然后我想将函数的输出写回数据帧行 results pd DataFrame for row in input panel it
  • 将函数应用于数据帧的每一行

    下面有什么更优雅的实现方式 我想应用一个函数 my function到数据帧 其中数据帧的每一行都包含函数的参数 然后我想将函数的输出写回数据帧行 results pd DataFrame for row in input panel it

随机推荐