python函数语法机制 python函数定义语法( 四 )


Python——五分钟带你弄懂迭代器与生成器,夯实代码能力
当我们调用dict当中的keys方法的时候 , 返回的结果就是一个可迭代对象 。
我们 不能使用下标来访问 可迭代对象,但我们可以用iter将它转化成迭代器,使用next关键字来获取下一个元素 。也可以将它转化成list类型 , 变成一个list 。
使用def关键字来定义函数,我们在传参的时候如果指定函数内的参数名,可以不按照函数定义的顺序 传参:
可以在参数名之前加上*表示任意长度的参数 , 参数会被转化成list:
也可以指定任意长度的关键字参数,在参数前加上**表示接受一个dict:
当然我们也可以两个都用上,这样可以接受任何参数:
传入参数的时候我们也可以使用*和**来解压list或者是dict:
Python中的参数 可以返回多个值 :
函数内部定义的变量即使和全局变量重名,也 不会覆盖全局变量的值。想要在函数内部使用全局变量,需要加上 global 关键字,表示这是一个全局变量:
Python支持 函数式编程  , 我们可以在一个函数内部返回一个函数:
Python中可以使用lambda表示 匿名函数  , 使用:作为分隔 , :前面表示匿名函数的参数 , :后面的是函数的返回值:
我们还可以将函数作为参数使用map和filter,实现元素的批量处理和过滤 。关于Python中map、reduce和filter的使用,具体可以查看之前的文章:
五分钟带你了解map、reduce和filter
我们还可以结合循环和判断语来给list或者是dict进行初始化:
使用 import语句引入一个Python模块 ,我们可以用.来访问模块中的函数或者是类 。
我们也可以使用from import的语句,单独引入模块内的函数或者是类,而不再需要写出完整路径 。使用from import *可以引入模块内所有内容(不推荐这么干)
可以使用as给模块内的方法或者类起别名:
我们可以使用dir查看我们用的模块的路径:
这么做的原因是如果我们当前的路径下也有一个叫做math的Python文件,那么 会覆盖系统自带的math的模块。这是尤其需要注意的,不小心会导致很多奇怪的bug 。
我们来看一个完整的类 , 相关的介绍都在注释当中
以上内容的详细介绍之前也有过相关文章,可以查看:
Python—— slots ,property和对象命名规范
下面我们来看看Python当中类的使用:
这里解释一下,实例和对象可以理解成一个概念,实例的英文是instance,对象的英文是object 。都是指类经过实例化之后得到的对象 。
继承可以让子类 继承父类的变量以及方法,并且我们还可以在子类当中指定一些属于自己的特性,并且还可以重写父类的一些方法 。一般我们会将不同的类放在不同的文件当中,使用import引入 , 一样可以实现继承 。
我们创建一个蝙蝠类:
我们再创建一个蝙蝠侠的类,同时继承Superhero和Bat:
执行这个类:
我们可以通过yield关键字创建一个生成器,每次我们调用的时候执行到yield关键字处则停止 。下次再次调用则还是从yield处开始往下执行:
除了yield之外,我们还可以使用()小括号来生成一个生成器:
关于生成器和迭代器更多的内容,可以查看下面这篇文章:
五分钟带你弄懂迭代器与生成器 , 夯实代码能力
我们引入functools当中的wraps之后 , 可以创建一个装饰器 。装饰器可以在不修改函数内部代码的前提下,在外面包装一层其他的逻辑:
装饰器之前也有专门的文章详细介绍 , 可以移步下面的传送门:

推荐阅读