python解析式及函数的参数总结


列表解析式:

语法:

[返回值 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 参数。