跟着官方文档学 Python 之:函数
Python 同其他的高级语言一样支持函数,不但可以灵活地定义函数,又内置了非常多好用的函数,可以直接调用,将代码变得更高级和抽象。
一、调用函数
Python 解释器内置了很多函数和类型,任何时候都能使用。详情可参考 Python 官网-内置函数说明 。另外,我们也可以在交互式命令行中,输入 help(内置函数名) 查看该函数的帮助信息。
Python 内置的函数中,还存在数据类型转换函数,例如 int() 将其他数据类型转换为整数。我们也可以将函数名赋值给一个变量,给函数起别名。
二、定义函数
1、基本方法
定义函数使用 def 语句,后面拼接函数名、参数和冒号:,返回值用 return 。如果没有 return 语句,函数执行结束后也会返回结果 None,return None 可简写成 return 。
在语法上,返回一个 tuple 可以省略括号,而多个变量可以同时接收一个 tuple,按位置赋给对应的值。所以,Python 的函数返回多值其实就是返回一个 tuple,例如 return n1,n2,n3 写起来更方便。
2、空函数
当还未想好怎么写函数的代码,可以先定义一个空函数(放一个 pass 语句),让代码能运行起来。
3、参数检查
给函数传入不恰当的参数时,内置函数会检查参数错误(抛出 TypeError),但我们定义的函数没有参数检查,所以我们要养成给函数做参数检查的习惯,不断完善函数。其中,数据类型检查可以用内置函数 isinstance() 实现。
三、函数的参数
*args 是可变参数,args 接收的是一个 tuple
可变参数既可以直接传入:func(1, 2, 3),又可以先组装 list 或 tuple,再通过 *args 传入:func(*(1, 2, 3));
**kw 是关键字参数,kw 接收的是一个 dict
关键字参数既可以直接传入:func(a=1, b=2),又可以先组装 dict,再通过 **kw 传入:func(**{'a': 1, 'b': 2})。
使用 *args 和 **kw 是 Python 的习惯写法,也可以用其他参数名,但最好使用习惯用法。
四、递归函数
是指函数在内部调用函数本身,优点是定义简单、逻辑清晰,缺点是过深的调用会导致栈溢出。Python 标准的解释器未对尾递归做优化,几乎任何递归函数都存在栈溢出的问题。
👉如果在阅读过程中有任何疑问,欢迎在评论区留言参与讨论!
版权声明: 本文为 InfoQ 作者【甜甜的白桃】的原创文章。
原文链接:【http://xie.infoq.cn/article/62072c7bdd2c0f1e362ec3f19】。文章转载请联系作者。
评论