标签:生成器 on() 它的 ict 一点 防止 技术 可迭代对象 gen
一、函数
1、用def定义函数
2、引入某个方法,如引入文件test.py文件中的method1方法:from test import method1
3、定义空函数,函数体就写pass就行,pass可以当作占位符
4、函数执行完毕也没有return
语句时,自动return None
。
5、函数可以同时返回多个值,但其实就是一个tuple
6、
7、定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*
号,可变参数在函数调用时自动组装为一个tuple。
8、Python允许你在list或tuple前面加一个*
号,把list或tuple的元素变成可变参数传进去
9、关键字参数,参数格式:**参数名
,关键字参数在函数内部自动组装为一个dict,注意关键字参数获得的是传入参数
的一份拷贝,对关键字参数的改动不会影响到函数外的传入参数
10、命名关键字参数
(1)命名关键字参数需要一个特殊分隔符*
,*
后面的参数被视为命名关键字参数
(2)函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*
了
(3)定义函数时,若命名关键字参数没有缺省值,调用函数时必须传入参数名
(4)对于任意函数,都可以通过类似func(*args, **kw)
的形式调用它,无论它的参数是如何定义的
11、递归函数
(1)如果一个函数在内部调用自身本身,这个函数就是递归函数
(2)使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。
(3)解决递归调用栈溢出的方法是通过尾递归优化,尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。
二、高级特性
1、切片
(1)list和tuple都可以用切片操作
(2)L[0:3]表示,截取list的部分元素,从索引0开始,到索引3终止,即取L[0]、L[1]、L[2]。如果从所以0开始,也可以写成L[:3]
(3)L[-1]表示,取最后一个元素
(4)L[-10:]表示,取最后10个元素
(5)L[:10:2]表示,取前10个元素,每两个取一个
(6)L[::3]表示,所有元素每三个取一个
(7)L[:]表示复制一个list
2、迭代
(1)可以用for循环来遍历一个list或tuple,这种遍历称为迭代
(2)判断一个对象是否可迭代对象
(3)可以用enumeration()把一个list变成索引-元素对
3、列表生成式
(1)生产一个list
(2)用列表生成式,生成[1×1,2×2,...,10×10]
(3)列表生成式,还可以加上if判断
(4)使用两层循环,可以生成全排列
3、生成器
(1)第一种方法:把一个列表生成式的[]改成(),就创建一个generator:g = (x * x for x in range(10))
(2)第二种方法:如果一个函数定义中,包含关键字yield,那么这个函数就不是一个普通的函数,而是一个generator。
标签:生成器 on() 它的 ict 一点 防止 技术 可迭代对象 gen
原文地址:https://www.cnblogs.com/abby-cheng/p/9937783.html