一、全局变量与局部变量
1.全局变量特点:没有任何缩进,顶头写的变量;
在以后任何位置都能调用
2.局部变量特点:在子程序中创建的变量,只能在该函数里使用
3.在函数中创建全局变量:在变量名前加global
4.若有一个全局变量名和一函数中的局部变量名相同,调用函数时显示的为局部变量的值
注:若变量名前有nonlocal则该变量指的是上一级变量
二、递归
1.嵌套函数的运行
2.递归定义:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
3.递归必须设置一个出口
三、匿名函数
1.匿名函数:不再使用 def 语句这样标准的形式定义一个函数。
2.匿名函数的创建:python 使用 lambda 来创建匿名函数
#!/usr/bin/python3
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2
# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))
”lambda“与” :“之间为参数,“:”之后为函数体
"sum = "用来将匿名函数保存下来
四、内置的高阶函数
map();reduce();filter;sorted()
五、文件的读取与存储
六、迭代器与生成器
可以对list、tuple、str等类型的数据使⽤for...in...的循环语法从依次拿到数据进⾏使⽤,我们把这样的过程称为遍历,也叫迭代。
可以使⽤ isinstance() 判断⼀个对象是否是 Iterable 对象(可迭代 对象)
1.迭代器的两个基本的方法:iter() 和 next()。
2.迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退)
3.
使用对象内置的__iter__()方法生成迭代器
>>>L1 = [1,2,3,4,5,6]
>>>I1 = L1.__iter__()
>>>print I1
<listiterator object at 0x7fe4fd0ef550>
>>> I1.next()
1
>>> I1.next()
2
>>> I1.next()
3
使用内置工厂函数生成迭代器
>>> L1 = [1,2,3,4,5,6]
>>> I2 = iter(L1)
>>> print I2
<listiterator object at 0x7fe4fd0ef610>
>>> I2.next()
1
>>> I2.next()
2
>>> I2.next()
3
4.生成器:在Python中,在循环的过程中不断推算出后续的元素,这样就不必创建完整的list,从而节省大量的空间,这种一边循环一边计算的机制,称为生成器:generator。
可以理解为一种数据类型,这种数据类型自动实现了迭代器协议,即其是可迭代对象
5.生成器两种表现:①以函数的形式表现:每次调用next()
的时候执行,遇到yield
语句返回,再次执行时从上次返回的yield
语句处继续执行。