Python学习手札(七)函数&Lambda-表达式

1.函数

(1)函数的定义

函数以def关键词开头,后接函数名和圆括号()。
函数执行的代码以冒号起始,并且缩进。
return[表达式]结束函数,选择性得返回一个值给调用方。不带表达式的return相当于返回None。

def functionname(parameters):
   "函数_文档字符串"
   function_suite
   return [expression]

(2)函数的调用

直接来个例子:

def printlove(str): 
    print(str)
printlove("I love MM")
#I love MM
temp = printlove("hello")
print(temp)
#hello
#None

后面两行不太理解

(3)函数文档

这里是真没看懂!
Python学习手札(七)函数&Lambda-表达式_第1张图片

(4)函数参数

Python的函数参数形态灵活多样,即可以实现简单的调用,又可以传入非常复杂的参数。
从简到繁的参数形态如下:
位置参数(positional argument)

def functionname(arg1):
   "函数_文档字符串"
   function_suite
   return [expression]

其中arg1是位置参数,在调用函数时位置要固定。

默认参数(default argument)

def functionname(arg1, arg2=v):
   "函数_文档字符串"
   function_suite
   return [expression]

arg2=v: 默认参数=默认值,调用函数时如果默认参数的值没有传入,则被认为是默认值。默认参数一定要放在位置参数后面,不然会报错。

可变参数(variable argument)
参数个数可变,自动组装成元组
加*的变量名会存放所有未命名的变量参数

def functionname(arg1, arg2=v, *args):
   "函数_文档字符串"
   function_suite
   return [expression]

Python学习手札(七)函数&Lambda-表达式_第2张图片

关键字参数(keyword argument)
*kw可以从0个到无数个,自动组成字典。

def functionname(arg1, arg2=v, args, *kw):
   "函数_文档字符串"
   function_suite
   return [expression]

Python学习手札(七)函数&Lambda-表达式_第3张图片
可变参数&关键字参数
都允许传入0到任意个参数,可变参数在函数调用时自动组成元组,关键字参数在函数内部自动组成字典。

命名关键字参数(name keyword argument)

def functionname(arg1, arg2=v, args, *, nkw, *kw):
   "函数_文档字符串"
   function_suite
   return [expression]

Python学习手札(七)函数&Lambda-表达式_第4张图片

参数组合
混合使用多种参数。
但有固定顺序:
位置参数、默认参数、可变参数、关键字参数
位置参数、默认参数、命名关键字参数、关键字参数

(5)函数的返回值

直接举例说明

def add(a, b):
    return a + b
print(add(1, 6))
#7
print(add([1, 2, 3], [4, 5, 6])
#[1, 2, 3, 4, 5, 6]

(6)变量作用域

Python中,程序的变量并不是在哪个位置都可以访问的,访问的权限在于这个变量是在哪里赋值的。
局部变量:定义在函数内部的变量具有局部作用域;
全局变量:定义在函数内部的变量具有全局作用域。
Python学习手札(七)函数&Lambda-表达式_第5张图片
当内部作用域想修改外部作用域的变量时,需要用到grobal和nonlocal关键字。
Python学习手札(七)函数&Lambda-表达式_第6张图片
内嵌函数
Python学习手札(七)函数&Lambda-表达式_第7张图片
闭包:一种重要的语法结构,是特殊的内嵌函数
如果在一个内部函数里对外层非全局作用域的变量进行引用,那么内部函数就会被认为是闭包。
Python学习手札(七)函数&Lambda-表达式_第8张图片

2.Lambda-表达式

(1)匿名函数的定义

Python里函数分两种:
①用def关键词定义的正规函数;
②用lambda关键词定义的匿名函数。
lambda创建匿名函数,其没有函数名,语法结构如下:
lambda argument-list:expression
解释一下:lambda是关键词,argument-list是函数参数,expression是一个表达式,输入函数参数,输出一些值(没有return)。

(2)匿名函数的应用

函数式编程是指:代码中的每一块都是不可变的,都是纯函数的形式组成(纯函数就是相互独立,互不影响,对于相同的输入,总会有相同的输出)
Python学习手札(七)函数&Lambda-表达式_第9张图片
Python学习手札(七)函数&Lambda-表达式_第10张图片
匿名函数常常应用于函数式编程的高阶函数,主要有两种形式:
①参数是函数(filter,map)
②返回值是函数(closure)

你可能感兴趣的:(python训练手札)