2.2学习总结

函数的进阶

一、返回值

# 1.什么是返回值
"""
从函数内部传递到函数外部放入数据

"""
# 2.什么时候函数需要返回值
"""
如果实现函数的功能产生了新数据,那么就返回
"""
# 3.怎么将数据返回
"""
返回值就是return后面的值(如果没有return,就默认返回None)
函数调用表达式的值,就是函数返回值
"""
# 4.怎么使用函数返回值
# 返回值能做的,函数调用表达式都可以做

# 5.return的使用
"""
需要将函数中产生的数据返回的时候使用return:   return  需要返回的数据
提前结束函数(执行函数的时候,遇到return,函数直接结束)
"""
# 练习


def big1(num1: int):
    if num1 & 1 == 0:
        new_num = 1
        for x in range(1, num1+1):
            new_num *= x
        return new_num
    else:
        return num1 ** 3


re = big1(5)
print(re)

二、全局变量和局部变量

# 根据变量的作用域(能使用的范围)不同的变量,分为:全局变量和局部变量
# 1.全局变量:
"""
没有定义在"函数里面"或者"类里面"的变量都是全局变量。
作用域:是从定义开始到程序结束
"""
# 2.局部变量
"""
定义在函数中的变量就是局部变量(形参就是局部变量)
作用域:从函数定义开始到函数结束
"""
# 3.global(全局的)
# global和return都是只能在函数体中使用的关键字
"""
如果直接在函数内部修改全局变量的值,他会在函数内创建一个对应的局部变量,导致失败
global:1.可以再函数内部修改全局变量
2.在函数内部定义一个全局变量
"""

三、匿名函数

# 1.什么是匿名函数(还是函数)
"""
匿名函数的语法:
lambda 参数列表:返回值
相当于
def 函数名(参数列表):
    return 返回值
"""


def func1(x):
    return x*2


func1 = lambda x: x*2

print(func1(5))     # 10

# 练习
func2 = lambda x: x % 4 == 0 and x % 100 != 0 or x % 400 == 0


print(func2(2011))

四、函数就是变量

# 1.python中定义函数其实就是定义一个变量,函数名就是变量名
# 2.普通变量能做的,函数都可以做
# 3.高阶函数:
# 1)实参高阶函数:如果某个参数是函数,那么就是实参高阶函数
# 2)返回值高阶函数:如果返回值是函数,那么就是返回值高阶函数
# 3.系统实参高阶函数
# max、min、sorted、map、reduce

五、实参高阶函数

# 1.max、min
"""
key的要求:
a.是一个函数
b.这个函数必须有且只有一个参数(这个参数就相当于序列中的元素)
c.这个函数需要一个返回值(返回值就是比较标准)

"""
nums = [78, 56, 89, 18, 25]
# 求nums中个位数最大的元素


def f(str1):
    s = 0
    for x in str(str1):
        s += int(x)
    return s


result = max(nums, key=f)
print(result)

nums = [123, '78', 89, '345']
# 获取nums数值最大的元素
result1 = max(nums, key=lambda x: int(x))
print(result1)      # '345'返回的是符合要求的原始的元素

nums = [78, 56, 89, 18, 25]
# 对nums按照个位数的大小从小到大排序
new_nums = sorted(nums, key=lambda x: x % 10)
print()
print(new_nums)

students = [
    {'name': 'stu1', 'age': 23, 'score': 89},
    {'name': 'stu2', 'age': 18, 'score': 98},
    {'name': 'stu3', 'age': 24, 'score': 100},
    {'name': 'stu4', 'age': 30, 'score': 27},
    {'name': 'stu5', 'age': 10, 'score': 78}
]
# 1)获取students年龄最小的学生(用min)
result2 = min(students, key=lambda x: x['age'])
print(result2)
# 2)按照分数对students从大到小排序
result3 = sorted(students, key=lambda y: y['score'], reverse=True)
print(result3)
students.sort(key=lambda z: z['score'], reverse=True)
print(students)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值