python基础学习--day5.函数与Lambda表达式

函数

创建函数

函数以def关键词开头,后接函数名和圆括号()。

def firstfunction():
    print('创建函数')
firstfunction()

在这里插入图片描述

函数参数

def function(name):
    '函数定义过程中的name叫形参'#它只是一个形式,表示占据一个参数位置
    print('传递进来的'+name+'叫做实参,它是具体的参数值')
function('wydl')

在这里插入图片描述

def function(name):
    print(name+'我爱你')
function('ly')

在这里插入图片描述

def sum(a, b):
    print(a+b)
sum(26,46)

在这里插入图片描述
从简到繁的参数形态如下:
位置参数:这些参数在调用函数时位置要固定。

默认参数:

def function(a='wydl',b=' ly'):
    print(a+'->'+b)
function()

在这里插入图片描述

关键词参数:

def function(a,b):
    print(a+'->'+b)
function(a='wydl',b='ly')

收集参数:

def test(*a):
    print('参数的长度是:',len(a))
    print('第二个参数是:',a[1])
test(26,'wydl')

在这里插入图片描述

在这里插入图片描述

命名关键字参数:用户想要输入的关键字参数,定义方式是在nkw 前面加个分隔符 *。

参数组合:参数定义的顺序必须是:
位置参数、默认参数、收集参数和关键字参数。
位置参数、默认参数、命名关键字参数和关键字参数

函数返回值

可以返回单个值,也可以返回多个值以列表或元组的形式,没有返回值则返回None

def sum(num1,num2):
    return(num1+num2)
print(sum(26,46))

在这里插入图片描述

函数文档

def function(name):
    '函数定义过程中的name叫形参'#它只是一个形式,表示占据一个参数位置
    print('传递进来的'+name+'叫做实参,它是具体的参数值')
print(function.__doc__)

在这里插入图片描述

变量作用域

Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。

定义在函数内部的变量拥有局部作用域,该变量称为局部变量。

定义在函数外部的变量拥有全局作用域,该变量称为全局变量。

局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。

def discounts(price, rate):
    '函数中final_price,price,rate是局部变量'
    final_price = price * rate
    return final_price
old_price=float(input('请输入原价:'))
rate=float(input('请输入折扣率:'))
new_price=discount(old_price,rate)
'ole_price,rate,new_price是全局变量'
print('打折后价格是:'new_price)


当内部作用域想修改外部作用域的变量时,可以用global和nonlocal关键字。

内嵌函数

def fun1():
    print('fun1()正在被调用')
    def fun2():
        print('fun2()正在被调用')
    fun2()
fun1()

在这里插入图片描述

闭包

是函数式编程的一个重要的语法结构,是一种特殊的内嵌函数。

如果在一个内部函数里对外层非全局作用域的变量进行引用,那么内部函数就被认为是闭包。

通过闭包可以访问外层非全局作用域的变量,这个作用域称为 闭包作用域。

def funX(x):
    def funY(y):
        return x * y

    return funY

递归

如果一个函数在内部调用自身本身,这个函数就是递归函数。
阶乘

def factorial(n):
    if n == 1:
        return 1
    return n * fact(n - 1)

斐波那契数列

def recur_fibo(n):
    if n <= 1:
        return n
    return recur_fibo(n - 1) + recur_fibo(n - 2)


lst = list()
for k in range(11):
    lst.append(recur_fibo(k))
print(lst) 

Lambda 表达式

匿名函数
所谓匿名,即不再使用def语句定义一个函数。

python 使用 lambda 来创建匿名函数。

lambda 只是一个表达式,函数体比def简单很多。

lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

lambda 函数没有所谓的函数名 (function_header),这也是它为什么叫匿名函数。

g=lambda x:2*x+1
print(g(5))

在这里插入图片描述

g=lambda x,y:x+y
print(g(3,4))

在这里插入图片描述

filter()函数

过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换

print(list(filter(lambda x:x%2,range(10))))

在这里插入图片描述

map()函数

map(function, iterable, …) 根据提供的函数对指定序列做映射。

print(list(map(lambda x:x*2,range(10))))

在这里插入图片描述

你可能感兴趣的:(python基础学习--day5.函数与Lambda表达式)