首页 > 编程语言 >python函数参数检查

python函数参数检查

时间:2024-03-07 17:36:38浏览次数:35  
标签:TypeError 检查 python 函数参数 abs 参数 File line my

参数检查

调用函数时,如果参数个数不对,Python解释器会自动检查出来,并抛出TypeError:

>>> my_abs(1, 2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: my_abs() takes 1 positional argument but 2 were given
但是如果参数类型不对,Python解释器就无法帮我们检查。试试my_abs和内置函数abs的差别:

>>> my_abs('A')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in my_abs
TypeError: unorderable types: str() >= int()
>>> abs('A')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: bad operand type for abs(): 'str'

当传入了不恰当的参数时,内置函数abs会检查出参数错误,而我们定义的my_abs没有参数检查,会导致if语句出错,出错信息和abs不一样。所以,这个函数定义不够完善。

让我们修改一下my_abs的定义,对参数类型做检查,只允许整数和浮点数类型的参数。数据类型检查可以用内置函数isinstance()实现:

def my_abs(x):
    if not isinstance(x, (int, float)):
        raise TypeError('bad operand type')
    if x >= 0:
        return x
    else:
        return -x

添加了参数检查后,如果传入错误的参数类型,函数就可以抛出一个错误:

>>> my_abs('A')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in my_abs
TypeError: bad operand type

Reference

廖雪峰-定义函数

标签:TypeError,检查,python,函数参数,abs,参数,File,line,my
From: https://www.cnblogs.com/guanghui-hua/p/18059372

相关文章

  • Python中Spark读取parquet文件并获取schema的JSON表示
     步骤:初始化SparkSession。使用spark.read.parquet()读取Parquet文件。调用df.schema.json()获取schema的JSON表示。frompyspark.sqlimportSparkSession#初始化SparkSessionspark=SparkSession.builder.appName("ReadParquetSchema").getOrCreate(......
  • python 环境与python虚拟环境
    导航:一、为什么要用虚拟环境virtualenvironment?二、本地环境(主环境、全局环境)三、Pycharm中新建虚拟环境四、如何在pycharm中新建的虚拟环境中安装库? 在Python开发中,环境问题一直是困扰着开发者的难题,尤其是在项目中,不同的项目需要使用不同版本的库,引发的冲突问题更是频繁......
  • python_stubs
    https://stackoverflow.com/questions/24266114/pycharm-what-is-python-stubs什么情况下会出现跳转到python_stubs?当我们调用的函数是内置函数或仅二进制存在的函数(没有py文件,只有pyc等)时,pycharm会对某个版本进行硬编码而生成的伪函数(实际不是调用的这个,只是方便我们做开发)。......
  • python不同系统下多进程启动方式
    在Python中,subprocess.Popen用于创建新的进程。这个创建过程是由操作系统的底层机制来执行的,并不是由Python的多进程库multiprocessing决定。subprocess.Popen在内部使用的是操作系统提供的API来启动新进程,并不直接受multiprocessing库的控制。在Unix-like系统中,subprocess.Popen......
  • scalene python cpu&gpu 性能分析工具
    scalene使用一个pythoncpu&gpu性能分析工具,同时也支持内存的分析,同时还提供了基于ai的智能优化推荐包含的一些特性cli支持多种输出格式包含了一个web-gui基于ai的智能提示参考使用安装pipinstallscalene包含的cliusage:scalene......
  • memray python 内存profiler 工具简单试用
    memraypython内存profiler工具,功能还是很强大的,以下是一个简单使用参考使用安装pipinstallmemray支持的cliusage:memray[-h][-v][-V]{run,flamegraph,table,live,tree,parse,summary,stats,transform,attach,detach}... Memo......
  • Python中怎么使用Spark的spark.read.format()函数读取MySQL数据库中的数据
    1.准备工作:安装pyspark库(pipinstallpyspark)2.代码:#导入模块frompyspark.sqlimportSparkSession#创建Spark会话对象spark=SparkSession.builder\.appName("ReadMySQL")\.getOrCreate()#或者写成一行spark=SparkSession.builder.appName("ReadMySQL&qu......
  • CentOS7安装python3详细教程
    1.检查CentOS7自带python环境centos一般自带Python2,先使用python-V来查看python版本建议大家在保留python2的基础上安装一个python3,因为python2和python3还是有一些区别的,同时安装python2和python3的环境,以便不时之需或者对比学习。如果想要删除原有的python环境,可以通过下面......
  • 详解Python魔法函数,__init__,__str__,__del__
    1、简介Python作为一门灵活而强大的编程语言,提供了许多特殊的方法,被称为魔法函数(Magicmethods)。这些魔法函数以双下划线开头和结尾,能够让我们自定义类的行为,使得Python更加灵活和易用。本文将详细介绍Python中的魔法函数,帮助读者理解其作用和用法。1.1、什么是魔法函数?魔法函......
  • Python根据坐标半径生成测试点数据
    一、代码#-*-coding:UTF-8-*-importcsvimportrandomimportmathimportdatetimefromfakerimportFaker#定义语言faker_data=Faker(locale='zh_CN')#获取当前时间current_time=datetime.datetime.now()#格式化时间formatted_time=current_time.strft......