列表解析式:
语法:
[返回值 for 元素 in 可迭代对象 if 条件] 立即放回一个新的列表
使用中括号[], 内部是for循环,if 条件语句可选,
推荐使用列表解析式
生成器表达式:
语法:
(返回值 for 元素 in 可迭代对象 if 条件 )
返回一个生成器对象
列表解析式和生成器表达式的区别
生成器表达式式按需计算,需要时才计算值,列表解析式立即返回值
生成器就是迭代器,迭代完成后无法再回去重新迭代.迭代器,可以使用next()函数迭代,生成器(迭代器)内部如果没有数据,会抛出stopiteration
生成器没有len()函数
生成器一定式迭代器,迭代器不一定式生成器,但都是迭代对象
集合解析式
{返回值 for 元素 in 可迭代对象 if 条件 } 立即生成一个set出来.
字典解析式
{返回值(key:value) for 元素 in 可迭代对象 if 条件 } 立即生成一个字典出来.
函数:
定义:
def 语句定义函数
def 函数名 (参数列表):
函数题(代码块)
[return 返回值]
函数名就是标识符,命名要求和标识一样(数字,下划线,和字母,不能是数字开头,一般不推荐下划线开头。)
语句块必须缩进4个空格
定义中的参数列表为形式参数,只是一种符号的表达,简称形参。
函数的调用:
函数定义,只是声明了一个函数,不会立即被执行,需要调用。
函数调用时传的参数是实际参数,是实实在在传入的值,简称实参。
def sel ( x (位置参数),y=3 (带默认值的参数) , *args ( 可变位置参数(收集后是个元组)) , m =4 ( keyword only 参数 ), **kwargs(可变关键字参数收集后是一个字典)) 备注:参数后面的小括号是解释参数的含义
函数题(代码块)
[return 返回值]
参数的一般顺序:
位置参数 ----------->带缺省值的参数 ------------>可变位置参数-------------->keyword only 参数 (可带缺省值) ------------> 可变关键字参数
def foo( s =2 , * ,n=3) 参数列表中的*就是声明后面的参数为keyword only 参数。
转载于:https://blog.51cto.com/1502606/2164396