----------------------------------------------------------------------------------------------------------------------------------------

1.lamba函数

用途:用于创建一个小的匿名函数,在需要函数对象的地方使用

特性如下:1.lambda函数是匿名的:所谓匿名函数,通俗地说就是没有名字的函数。lambda函数没有名字。

                  2.lambda函数有输入和输出:输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的                          值。

                  3.lambda函数一般功能简单:单行expression决定了lambda函数不可能完成复杂的逻辑,只能完成非常简单的功                             能。由于其实现的功能一目了然,甚至不需要专门的名字来说明。

例子:

                  lambda x, y: x*y;函数输入是x和y,输出是它们的积x*y

                  lambda:None;函数没有输入参数,输出是None

                  lambda *args: sum(args); 输入是任意个数的参数,输出是它们的和(隐性要求是输入参数必须能够进行加法运算)

                  lambda **kwargs: 1;输入是任意键值对参数,输出是1

这是从肖哥shelwin的文章获取的。在此表示感谢。内容出处:

------------------------------------------------------------------------------------------------------------------------------------

2.解包参数列表 (* 与 ** 的用法)

用途:当参数已经在列表或元组中但需要为需要单独位置参数的函数调用解包时使用。

>>> list(range(3, 6))            # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> list(range(*args))            # call with arguments unpacked from a list
[3, 4, 5]

根据该例子对用途的解释如下:当参数已经在列表或元素中,即args=[3,6]。这时候我们的函数range()是需要start和stop两个参数的。(range本身可传三个参数(start(起始),stop(终止),step(步数:即每次循环走几,默认是1)))

这时使用*args,把放在列表中的36解包,即分开来放入函数rang中,对应startstop的参数的位置。

同理,有*的变量名会存放所有未命名的变量参数,但不能存放dict(字典)

比如:

def multiple(arg, *args):
  print ("arg: ", arg)
  #打印不定长参数
  for value in args:
    print ("other args:", value)
if __name__ == '__main__':
  multiple(1,'第一个未命名的参数',"第二个未命名参数")

输出结果:

arg:  1
other args: 第一个未命名的参数
other args: 第二个未命名参数

而**可以存放并应用于dict,这就是两者的区别。

-----------------------------------------------------------------------------------------------

3.PEB8(列出重要的几点)

  • 使用4个空格缩进,不要使用制表符。
    4个空格是一个在小缩进(允许更大的嵌套深度)和大缩进(更容易阅读)的一种很好的折中方案。制表符会引入混乱,最好不要使用它。
  • 换行,使一行不超过79个字符。
    这有助于使用小型显示器的用户,并且可以在较大的显示器上并排放置多个代码文件。
  • 使用空行分隔函数和类,以及函数内的较大的代码块。
  • 如果可能,把注释放到单独的一行。
  • 使用文档字符串。
  • 在运算符前后和逗号后使用空格,但不能直接在括号内使用: a = f(1, 2) + g(3, 4)
  • 以一致的规则为你的类和函数命名;按照惯例应使用 UpperCamelCase 来命名类,而以 lowercase_with_underscores 来命名函数和方法。 始终应使用 self 来命名第一个方法参数
  • 如果你的代码旨在用于国际环境,请不要使用花哨的编码。Python 默认的 UTF-8 或者纯 ASCII 在任何情况下都能有最好的表现。
  • 同样,哪怕只有很小的可能,遇到说不同语言的人阅读或维护代码,也不要在标识符中使用非ASCII字符