if __name__ == '__main__':
"""
python可以通过help(abs)查看abs函数的帮助信息
在函数中,pass关键字,也是空函数的重要点,主要是用来占位,这样子就不会让代码报错,相当于try一样
>>>def nop()
>>> pass
这个函数就成为空函数,目前还没有想到里面的逻辑怎么写,但是可以先写出来占位就行
=======自己定义函数时,可以考虑增加验证参数类型的if判断
验证参数的API isinstance(参数,(类型名))
>>>def abs(i):
>>> if not isinstance(i,(int,float)):
>>> raise TypeError('输入参数有问题')
>>> if i > 5:
>>> return '你输入的数太大了'
=======在python中,函数可以返回多个值,
>>> return x, y
=======如果使用数学函数,import math 数据函数包
=======但是在返回上,要记住可能会返回一个tuple,但是在语法上返回一个tuple可以省略括号,
=======而多个变量可以同时接收一个tuple,按位置赋给对应的值,
=======python的函数定义非常简单,但灵活度非常大,除了正常定义的
==必选参数外,
==还可以使用默认参数,可变参数和关键字参数,
=======使的函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码
===对于默认参数而言:需要注意以下几点
==1、必选参数在前,默认参数在后,否则python的解释器会报错,
==2、如何设置默认参数呢
===当函数有多个参数时,把变化大的参数放在前面,变化小的参数放后面,变化小的参数就可以作为默认参数
===使用默认参数,最大的好处时能降低函数的难度
========必须记住,默认参数必须只想不变对象
===为什么要设计str,None这样的不变对象呢,因为不变对象一旦创建,对象内部的数据就不能修改,这样子就减少了由于修改数据导致的错误,
===此外,由于对象不变,多任务环境下同时读取对象不需要加锁,同时读一点问题都没有,
===如果可以设计一个不变对象,那就尽量设计成不变对象
========可变参数
可变参数可以先把参数组装成一个list或者tuple
在python中,如果你当前的参数是可变参数(list,tuple),可以在list或者tuple前面加上一个*号,
这表示你当前把list或者tuple的全部元素传进去,
>>>fun(*list_name) 表示把这个list的所有元素作为可变参数传进去,这种写法相当有用,而且很常见
========关键字参数
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple或者list,
关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict,
可变参数书写格式-------fun(*list_name)
关键字参数书写格式-----fun(**dict_name)
**dict_name 表示把dict_name的所有key-value用关键字参数传入到fun中,而dict_name将获得一个dict,注意dict_name是dict的一份拷贝
对dict的改动不会影响函数外的dict
========命名关键字参数
对于关键字参数,函数调用者可以 传入任意不受限制的关键字参数,至于到底传入那些,就需要在函数内部通过dict_name检查
如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接受city和job作为关键字参数,
>>>def person(name, age, *, city, job):
>>> print(name, age, city, job)
和关键字参数不同,命名关键字参数需要一个特殊分割符*, *后面的参数被视为命名关键字参数
========参数组合
在python中定义函数,可以用必选参数,默认参数,可变参数和命名参数,关键字参数
这5中参数都可以组合使用,但是请注意,参数定义的顺序必须是:必选参数,默认参数,可变参数,命名关键字和关键字参数
"""
def abs(i):
if not isinstance(i,(int,float)):
raise TypeError('输入参数有问题')
if i > 5:
return '你输入的数太大了'
print(abs(9))