Python流程控制语句 迭代器与生成器 函数 匿名函数 闭包 变量作用域

1、while和for后面并列一个else表示当循环条件不满足时执行该语句。

2、pass 语句表示只占位置不做任何操作

3、迭代器
迭代器有两个基本的方法:iter() 和 next()。

字符串,列表或元组对象都可用于创建迭代器;通过两种方法的使用或for的方式遍历迭代器里面的数据:
Python流程控制语句 迭代器与生成器 函数 匿名函数 闭包 变量作用域

触发 StopIteration 异常来结束迭代:
Python流程控制语句 迭代器与生成器 函数 匿名函数 闭包 变量作用域

4、生成器:其实就是返回一个迭代器。
使用了 yield 的函数被称为生成器(generator)。
Python流程控制语句 迭代器与生成器 函数 匿名函数 闭包 变量作用域

5、函数
(1)、不带表达式的return相当于返回 None。
(2)、参数传递
在 python 中,类型属于对象,变量是没有类型的:
a=[1,2,3]
a=“Runoob”
等号左边是变量,没有类型;等号右边是对象,有类型。变量仅仅是一个对象的引用(一个指针),可以是指向 List 类型对象,也可以是指向 String 类型对象。

可更改(mutable)与不可更改(immutable)对象
在 python 中,strings,numbers , tuples是不可更改的对象,而 list,dict 等则是可以修改的对象。

不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。

可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了

python 函数的参数传递:

不可变类型:类似 c++ 的值传递 ,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。

可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的对象传过去,修改后fun外部的la也会受影响

(3)、不定长参数
Python流程控制语句 迭代器与生成器 函数 匿名函数 闭包 变量作用域
Python流程控制语句 迭代器与生成器 函数 匿名函数 闭包 变量作用域
Python流程控制语句 迭代器与生成器 函数 匿名函数 闭包 变量作用域
Python流程控制语句 迭代器与生成器 函数 匿名函数 闭包 变量作用域

6、匿名函数
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
Python流程控制语句 迭代器与生成器 函数 匿名函数 闭包 变量作用域

7、闭包(直白的说,闭包就是对内部函数的引用)
我们可以将闭包理解为一种特殊的函数,这种函数由两个函数的嵌套组成,且称之为外函数和内函数,外函数返回值是内函数的引用,此时就构成了闭包。
Python流程控制语句 迭代器与生成器 函数 匿名函数 闭包 变量作用域

8、变量作用域
Python流程控制语句 迭代器与生成器 函数 匿名函数 闭包 变量作用域

好啦,图书馆快打烊了。今天就到这里。