2018-10-11笔记

1.匿名函数

函数名 = lambda 参数列表:返回值
说明:
lambda是关键字
:固定的
此处返回值相当于只有一个return语句的函数体

#写一个匿名函数,功能是求两个数的和
[IN1]sum1 = lambda num1,num2: num1+num2

     print(sum1(3,9))
[IN2]def sum1(num1,num2):
      return num1+num2
      print(sum1(10,20)
#求1+2+3+……+100
[IN3]sum2 = lambda n: sum(range(n+1))
       print(sum2(100))
[OUT1]12
[OUT2]30
[OUT3]5050

特点:可直接将函数的声明作为一个变量或值

2.变量的作用域

变量的作用域指的是变量能够使用的范围
全局变量:声明在函数和类的外面的变量;作用域从声明开始到整个py结束
局部变量:声明在函数和类内的变量
作用域从声明开始到函数结束

3.关键字

global 关键字:在函数中说明此变量为全局变量。只声明,不赋值,只在函数中使用

[IN]name = 'abc' #全局变量

def func2():
      global name #声明使用的name是全局变量name
      name = 'aaa'#局部变量
      print(name)

print(name)

[OUT]aaa

nonlocal关键字 :在函数中的局部函数中修改局部变量的值

4.函数作为变量

声明函数就是声明一个类型是function的变量,函数名实质就是变量。
sort的使用
列表.sort(key=None, reverse=False)
使用sort的时候,可以通过给key赋一个函数变量,来规定列表中的元素按什么来排序
其中:函数变量要求要有一个参数和一个返回值。参数代表列表中的元素,返回值代表按照那个标准排序

#将列表里的元素中按成绩进行排序
list1=[
    {'name': '张三', 'age': 20, 'score': 90},
    {'name': '李四', 'age': 28, 'score': 70},
    {'name': '王五', 'age': 18, 'score': 89}
]
list1.sort(key=lambda item:item['score'])
 print(list1)
def get_age(item):
    return item['score']
 list1.sort(key=get_age)
 print(list1)

5.将函数作为返回值

函数可以作为返回值出现
python中的函数可以有多个返回值,判断是否有return返回值,考虑是否有新数据产生。

#案例:读程序
def operation(operator:str):
    if operator=='+':
        def sum1(*args,**kwargs):
            sum2=0
            for item in args:
                sum2+= item
            for key in kwargs:
                sum2+= kwargs[key]
            return sum2
        return sum1
    elif operator=='*':
        def func1(*args,**kwargs):
            sum2=1
            for item in args:
                sum2*=item
            for key in kwargs:
                sum2*=kwargs[key]
            return sum2
        return func1

print(operation('*')(3,4,6,3))

6.函数的调用

函数的调用过程是一个压栈的过程
每次调用函数时,系统都会在内存中(栈)开辟空间来存储函数执行过程中产生的数据(函数中声明的变量)
当函数调用完成后,这块内存空间会自动销毁。

#求多个数的和及平均值
def my_sum(*nums):
    sum1=sum(nums)
    average=sum1/len(nums)
    return sum1,average

print(my_sum(3,4,2,5,7,37))

7.递归函数

递归函数:函数中调用函数本身。循环能做的事递归都可以做。
步骤:1)确定临界值(循环结束的条件,一般是最小值)
2)找关系,假设函数功能已经实现,找f(n)和f(n-1)的关系
3)根据关系,用f(n-1)实现f(n)的功能
一般不用递归,耗内存

你可能感兴趣的:(2018-10-11笔记)