欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > python笔记之函数

python笔记之函数

2025/4/4 3:41:16 来源:https://blog.csdn.net/guxuhua123_01/article/details/146777472  浏览:    关键词:python笔记之函数

函数初探

python在要写出函数很简单,通过关键字def即可写出,简单示例如下

def add(a, b):return a+b

以上即可以定义出一个简单的函数:接收两个变量a和b,返回a和b相加的结果,当然这么说也不全对,原因就是尽快python是强类型的语言,但同时也是动态类型的,示例中的函数对于入参没有限制类型,若a和b都是数字自然返回和;若是str,则是拼接了

if __name__ == "__main__":add(1, 2) #3add('Hello', 'Python') #HelloPython

确定函数入参类型

要想在实际运行前就将函数的入参和返回类型确定下来,可以采用如下方法

def add(a:int, b:int) -> int:return a+b

但是,以上方法亲测对应 add('Hello','Python')并无效果;这种情况下,就进行类型检查吧

def add(a:int, b:int) -> int:if not isinstance(a, int) or not isinstance(b, int):raise ValueError("参数必须为整数")return a+b

装饰器语法糖

日常开发中,做API开发的小伙伴应该都碰到过在做接口对接、联调以及上线后故障排查时查找日志的情况,若是每个方法都进行日志打印(当然这种方法也不是不行)就过于重复了,python在很早的版本就引入了装饰器(这里要和设计模式中的装饰器模式区分下),具体实现如下

def logging(func):def wrapper(*args, **kwargs):print(f"调用函数{func.__name__},参数为:{args},{kwargs}")result = func(*args, **kwargs)print(f"函数{func.__name__}返回结果为:{result}")return resultreturn wrapper

这样,在调用函数进行调试时,只需要加上@logging这个语法糖就行了

@logging
def add(a:int, b:int) -> int:if not isinstance(a, int) or not isinstance(b, int):raise ValueError("参数必须为整数")return a+b

魔法函数之__call__

class MyCall():def __init__(self, callable_obj):self.callable_obj = callable_objdef __call__(self, *args, **kwargs):print(f"调用函数{self.callable_obj.__name__},参数为:{args},{kwargs}")result = self.callable_obj(*args, **kwargs)print(f"函数{self.callable_obj.__name__}返回结果为:{result}")return resultf __name__ == "__main__":my_call = MyCall(add)my_call(4, 5)

类MyCall定义的魔法函数__call__,对于python解释器而言,MyCall的对象就是一个可调用的对象(具有和def定义的函数同等可执行的效果了)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词