首页 > 编程语言 >Python查缺补漏2

Python查缺补漏2

时间:2023-05-24 20:22:51浏览次数:34  
标签:... 补漏 END 函数 Python add 查缺 isinstance

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

标签:...,补漏,END,函数,Python,add,查缺,isinstance
From: https://www.cnblogs.com/TNTksals/p/17429393.html

相关文章

  • python turtle 海龟绘图,绘制小猪佩奇
    项目介绍:瞎玩的,要用Python来画小猪佩奇。其实这个实现并不难,只要使用Python的内置模块turtle进行绘图即可。但是,如要完成一个好的作品,还是需要耗费一定时间的,因为你要提前布置好所有点的坐标和走线样式等,以及实际测试中会反复调试也比较麻烦。下面就是最终完成的小猪佩琪效果动态图......
  • Python——datetime库
    Python——datetime库datetime是Python内置的一个处理日期和时间的标准库,可以轻松处理日期和时间,也可以进行日期和时间的格式化操作。下面是一些datetime库中常用的方法:datetime.date:返回表示日期的对象。datetime.time:返回表示时间的对象。datetime.datetime:返回日期和时......
  • python代码热更新原理
    python代码热更新原理热更新概念在进程不重启的前提下,修改代码并且使得修改的代码生效热更新背景需求紧急修复线上问题实现不停机维护要实现上面的用户需求,需要在原理上支持下面需求*1.支持任意的import语法并且无顺序依赖要求2.对应回调函数、已实例化对象等也要支持代码......
  • Python3源码编译和使用静态链接库lib&动态链接库dll详细介绍
    说明:本文主要介绍:1.python3源码的下载和编译内核工程(pythoncore)2.编译的lib和dll使用例子。若需要编译源码PCBuild下其他python工程,类似参考内核工程(pythoncore)编译的方式进行配置即可。一.python源码下载1.进入python官方网站:PythonSourceReleases|Python.org2.选择......
  • pycharm中创建python包失效
    testDemo是我创建的python包,但图标一直显示为文件夹,导致后期使用无法导入。   解决: 在设置中找到项目结构 选择对应文件夹并标记为源即可......
  • 002 Python 学习笔记
    #通过:f"内容{变量}"的格式,实现快速格式化,如下示例print("-----------字符串快速格式化------------")name="sunwugang"age=18print(f"mynameis{name},ageis{age}")print("mynameis{},ageis{}".format(name,age)) ......
  • python基础10
    文件基本操作三步骤1.打开文件2.操作文件3.关闭文件关键字:open1f=open(r'a.txt','r',encoding='utf8')2print(f)#操作系统打开文件34#操作文件:读、写5res=f.read()67#关闭文件:释放资源8f.close91011#方式二:12#with上下管理......
  • 【编程日记】搭建python开发环境
    0.相关确定0.1确定操作系统Python是一种跨平台的编程语言,这意味着它能够运行在所有主要的操作系统中。然而,在不同的操作系统(Windows/Mac/Linux)中,安装Python的方法存在细微的差别。本教程我们使用的是Windows系统,对于Mac和Linux暂时不做介绍0.2确定Python版本当前有两个不同的......
  • python hmac_sha256 转为 java
    Javahmacsha256packagecom.example;importjava.security.InvalidKeyException;importjava.security.NoSuchAlgorithmException;importjavax.crypto.Mac;importjavax.crypto.spec.SecretKeySpec;importjavax.xml.bind.DatatypeConverter;publicclassMain......
  • Python文件读写、StringIO和BytesIO
    StringIO和BytesIO很多时候,数据读写不一定是文件,也可以在内存中读写。StringIO就是在内存中读写str。要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可:>>>fromioimportStringIO>>>f=StringIO()>>>f.write('hello')5>>>f.write('')......