Python查缺补漏2
Python查缺补漏2
函数名也是变量
在Python中,函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,类似于C++的函数指针:
>>> a = abs # 变量a指向abs函数 >>> a(-1) # 所以也可以通过a调用abs函数 1
空函数
如果想定义一个什么事也不做的空函数,可以用pass
语句:
def nop(): pass
pass
可以用来作为占位符,当还没想好怎么写函数的代码时,就可以先放一个pass
,让代码能跑起来
类型检查
内置函数isinstance()
用于检查一个对象是否是指定类或其子类的实例。语法如下:
""" object 要检查的对象 classinfo 类型或类型元组 如果 object 是该类型或其子类的实例,则返回 True,否则返回 False """ isinstance(object, classinfo)
因此,可以用内置函数isinstance()
实现数据类型检查:
>>> isinstance(1, (int, float)) True >>> ch = 'a' >>> isinstance(ch, (int, float)) False >>> isinstance(0.2, (int, float)) True
函数返回多个值
函数可以返回多个值,可以用多个变量同时进行接收
>>> def func(a, b): ... return a, b ... >>> c, d = func(3, 5) >>> print(c, d) 3 5
然而这只是一种假象,Python函数的返回值仍然是单一值,只不过当返回值增加时,Python将返回值包装成了元组,然后返回这个元组
>>> print(func(6, 9)) (6, 9)
可以看到,其实返回值是一个 tuple,但是,在语法上,返回一个 tuple 可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值
函数默认参数
看一下下面这个例子
>>> def add_end(L=[]): ... L.append('END') ... return L ... >>> add_end() ['END'] >>> add_end() ['END', 'END'] >>> add_end() ['END', 'END', 'END']
造成这种现象的原因在于,默认参数L
也是一个变量,它指向对象[]
。每次调用函数时,如果改变了L
指向的内容,那么下次调用时,默认参数的内容就变了,不再是函数定义时的[]
了
所以,定义默认参数要牢记一点:默认参数必须指向不变对象!
另外,要修改上述例子,可以用None
这个不变对象来实现:
def add_end(L=None): if L is None: L = [] L.append('END') return L
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现