【Python】可调用对象

声明:以下内容均学习自《流畅的Python》一书

1、可调用对象

如果想判断对 象能否调用,可以使用内置的 callable() 函数。

# callable()检查是否可调用
[callable(obj) for obj in (abs, str, 'Ni!')] # [True, True, False]

9种可调用对象:

  1. 用户定义的函数:使用 def 语句或 lambda 表达式创建的函数。
  2. 内置函数:使用 C 语言(CPython)实现的函数,例如 len 或 time.strftime。
  3. 内置方法:使用 C 语言实现的方法,例如 dict.get。
  4. 方法:在类主体中定义的函数。
  5. :调用类时运行类的 __new__ 方法创建一个实例,然后运行 __init__ 方法,初始化实例,最后再把实例返回给调用方。Python 中 没有 new 运算符,调用类就相当于调用函数。
  6. 类的实例:如果类定义了 __call__ 方法,那么它的实例可以作为函数调用。
  7. 生成器函数:主体中有 yield 关键字的函数或方法。调用生成器函数返回一个 生成器对象。
  8. 原生协程函数:使用 async def 定义的函数或方法。调用原生协程函数返回一个协程对象。
  9. 异步生成器函数:使用 async def 定义,而且主体中有 yield 关键字的函数或方 法。调用异步生成器函数返回一个异步生成器,供 async for 使用。

与其他可调用对象不同,生成器原生协程异步生成器函数的返回值不是应用程序数据,而是需要进一步处理的对象,要么产出应用程序数据,要么执行某种操作。生成器函数会返回迭代器;原生协程函数和异步生成器函数返回的对象只能由异步编程框架(例如 asyncio)处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/63606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

H5 Admin后台管理系统、用户权限管理设计、按钮级别、数据级别、html+bootstrap后台管理前端界面设计

一、前言 一个高颜值后台管理模板,Light Year Admin后台管理系统模板是一个基于Bootstrap v3.3.7的纯HTML模板,目前也已经更新了基于Bootstrap 4.4.1的版本。都有iframe以及非iframe的两种不同的形式供大家选择使用。简洁而清新的后台模板,功…

Windows环境基于ecplise的spring boot框架新建spring start project

SpringToolSuite4 新建项目实例 前言Windows基于ecplise 工具的spring boot 架构 前言 使用Spring boot 框架向前端传输数据 Windows基于ecplise 工具的spring boot 架构 spring-tool-suite-4官网下载链接spring tool,下载太慢的话可以使用迅雷加速,右…

理解 CAP 理论:分布式系统中的权衡与选择 | 常用组件中的CP和AP

CAP定理是分布式系统设计中的一个基本定理,它指出在一个分布式计算系统中,一致性(Consistency)、可用性(Availability)、分区容忍性(Partition Tolerance)三者不可同时实现&#xff…

AttributeError: module ‘cv2.dnn‘ has no attribute ‘DictValue‘如何解决?

AttributeError: module cv2.dnn has no attribute DictValue如何解决? 出现场景出错原因解决方案 出现场景 当在代码中导入opencv的时候:import cv2,出现: 出错原因 查看大家出现的错误,发现是因为opencv版本问题…

Java Class类文件结构

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

ThinkPHP开发的原生微信小程序二手物品回收小程序管理系统源码

二手物品回收小程序 一款基于ThinkPHP开发的原生微信小程序二手物品回收小程序管理系统。支持线上下单、免费上门取件、评估价格等功能。提供全部无加密源码,支持私有化部署。

【JAVA】Java项目实战—项目选择(Web应用、命令行工具等)

在Java开发中,选择合适的项目类型是成功的关键之一。Java是一种通用的编程语言,能够支持多种类型的应用程序开发,包括Web应用、命令行工具、桌面应用、移动应用等。每种项目类型都有其特定的应用场景、技术栈和开发模式。因此,理解…

力扣每日一题 - 1812. 判断国际象棋棋盘中一个格子的颜色

题目 还需要你前往力扣官网查看详细的题目要求 地址 1.给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。2.如果所给格子的颜色是白色,请你返回 true,如果是黑色&#xff…

教程|使用Conda安装AlphaFold3-个人记录以及遇到的问题

如果有用,感谢收藏、点赞、转发。 经过两天修改使用终于完成af3的安装以及样例测试。 !在clone之前可以看一下自己的编译版本比如:gxx_linux-64和gcc_linux-64 如果不行就利用conda更新 conda install gxx_linux-64 gxx_impl_linux-64 gcc_linux-64 gcc_impl_linux-64=13…

小程序给元素设置line-height为0引起页面更新无效

问题 在小程序中使用setData更新,数据更新完毕,页面却没有更新值,甚至出现渲染错乱现象; 发现 但当点击相应事件的时候,视图又更新了。 思考 开始认为是没有在dom渲染后进行数据更新产生的问题,换了方法执行…

分布式专题(1)之Redis持久化、主从与哨兵架构详解

一、Redis持久化 1.1 RDB快照(snapshot) 在默认的情况下,Redis将内存数据快照保存名字为:dump.rdb的二进制文件中,当然你在配置文件redis.conf中修改对应的二进制文件名。 redis开启RDB快照,可以在redis中…

MySQL Group Replication

参考文档: https://dev.mysql.com/doc/refman/8.4/en/group-replication-configuring-instances.html MySQL版本: mysql> select version(); ----------- | version() | ----------- | 8.4.3 | ----------- 1 row in set (0.00 sec)mysql> …

day1:ansible

ansible-doc <module_name>&#xff08;如果没有网&#xff0c;那这个超级有用&#xff09; 这个很有用&#xff0c;用来查单个模块的文档。 ansible-doc -l 列出所有模块 ansible-doc -s <module_name> 查看更详细的模块文档。 ansible-doc --help 使用 --help …

unity 2D像素种田游戏学习记录(自用)

一、透明度排序轴 改变sprite的排序方式&#xff0c;默认按照z轴进行排序&#xff08;离摄像机的远近&#xff09;。可以将其改变成y轴的排序方式&#xff0c;这样可以使2D人物走在草丛的下方就不被遮挡&#xff0c;走在草丛上方就被遮挡&#xff0c;如下图。 在项目设置-图形…

关于GaussDB

一、GaussDB的层级关系 &#xff0c;关于schemas的定位&#xff0c;到底是个什么&#xff0c;其实就可以理解为一个文件夹 数据库服务器 --> databases --> schemas --> tables schema类似于文件夹&#xff0c;一个数据库database里面可以有多个文件夹&#xff0c;每…

代码随想录第五十五天

并查集理论基础 并查集的本质是一种维护不相交集合的数据结构。其核心思想是用树形结构来表示集合&#xff0c;每个集合是一棵树。 基本概念 并查集维护了一个由不同元素构成的不相交集合每个集合用一棵树来表示&#xff0c;树的根节点是该集合的代表元素同一棵树中的所有节…

【CKA】Kubernetes(k8s)认证之CKA考题讲解

CKA考题讲解 0.考试101 0.1 kubectl命令⾃动补全 在 bash 中设置当前 shell 的⾃动补全&#xff0c;要先安装 bash-completion 包。 echo "source <(kubectl completion bash)" >> ~/.bashrc还可以在补全时为 kubectl 使⽤⼀个速记别名&#xff1a; al…

第4章:颜色和背景 --[CSS零基础入门]

在 CSS 中,颜色和背景属性是用于美化网页元素的重要工具。你可以通过多种方式定义颜色,并且可以设置元素的背景颜色、图像、渐变等。以下是关于如何在 CSS 中使用颜色和背景的一些关键点和示例。 1.颜色表示法 当然!以下是使用不同颜色表示法的 CSS 示例,包括 RGB、RGBA、…

力扣刷题TOP101: 27.BM34 判断是不是二叉搜索树

目录&#xff1a; 目的 思路 复杂度 记忆秘诀 python代码 目的&#xff1a; 给定一个二叉树根节点&#xff0c;请判断这棵树是不是二叉搜索树。 二叉搜索树满足每个节点的左子树上的所有节点均小于当前节点且右子树上的所有节点均大于当前节点。 思路 什么是二叉搜索树&am…

linux-12 关于shell(十一)ls

登录系统输入用户名和密码以后&#xff0c;会显示给我们一个命令提示符&#xff0c;就意味着我们在这里就可以输入命令了&#xff0c;给一个命令&#xff0c;这个命令必须要可执行&#xff0c;那问题是我的命令怎么去使用&#xff0c;命令格式有印象吗&#xff1f;在命令提示符…