2021.2.2-date11-函数的进阶

1.返回值

# 1.什么是返回值
'''
从函数内容传递到函数外部的数据就是函数返回值
'''
# 2.什么时候函数需要返回值
'''
如果实现函数功能产生了新的数据,那么这个函数就需要通过返回值把新产生的数据返回
'''
# 3.怎么将数据返回
'''
1)怎么确定函数返回值
返回值就是return关键字后面的值(如果没有return, 默认返回None)
2)怎么获取函数返回值
函数调用表达式的值就是函数返回值
'''
def sum1(a,b):
    return a+b
s = sum1(10, 20)
print(s) # 30
# 4.怎么使用函数返回值
# 返回值能做的,函数调用表达式都可以做
def func1():
    return 'abc'
print(func1())  # abc
dict1 = {func1():123}
print(dict1)  # {'abc': 123}
# 5.return的使用
'''
1)需要将函数中产生的数据返回的时候使用return:return 需要返回的数据
2)提前结束函数(执行函数体的时候如果遇到return,函数直接结束)
'''
def func3():
    print('====')
    print('----')
    return 100
    print('0000')
de = func3()
print(de)
# ====
# ----
# 100

2.全局变量和局部变量

# 根据变量作用域(能使用的范围)的不同将变量分为:全局变量和局部变量
# 1.全局变量
# 没有定义在函数里面或则类里面的变量都是全局变量。全局变量的作用域是从定义开始到程序结束。
# 2.局部变量
# 定义函数中的变量就是局部变量(形参也是局部变量)。局部变量的作用域是从定义开始到函数结束。
# 3.global
# global和return都是只能在函数体中使用的关键字
'''
如果直接在函数内容修改全局变量的值,它会在函数内容建一个对应的局部变量,导致修改失败。
global作用1:在函数内部修改全局变量的值
global作用2:在函数内部定义一个全局变量
'''
练习:
age = 18
name = '小小'
def func4():
    global age
    age = 20
    global name
    name = '小明'

func4()
print(age, name)  # 20 小明

3.匿名函数:

# 1.什么是匿名函数
'''
匿名函数还是函数。匿名函数可以看成是函数体只有一条语句的函数的简写方式
定义匿名函数的语法:
函数名 = lambda 参数列表:返回值

相当于:
def 函数名(参数列表):
    return 返回值
'''
练习1:
func1 = lambda x:x*2
# def func1(x):
#    return x*2
print(func1(10))  # 20

练习2:
func2 = lambda x,y=10:x+y
# def func2(x, y=10):
#       return x+y
print(func2(2))  # 12

练习3:写一个匿名函数判断指定的年是否是闰年
is_leap_year = lambda year:year % 4 == 0 and year % 100 != 0 or year % 400 == 0
print(is_leap_year(2000))   # True
法二:
def func3(year:int):
    if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
        return True
    else:
        return False
a = func3(1997)
print(a)   # False

4.函数就是变量

# 1.python中定义函数其实就是定义一个类型是function的变量,函数名就是变量名。
# 2.普通变量能做的,函数都可以做(查看变量类型,查看变量id,用一个变量给宁一个变量赋值
# 3.高阶函数
# 1)实参高阶函数  - 如果一个函数的某个参数是函数,那么这样的函数就是实参高阶函数
# 2)返回值高阶函数 - 如果一个函数的返回值是函数,那么这个函数就是返回值高阶函数
def func3(x):
    print(x()+10)
func3(lambda a= 10, b= 20: 7
# 4.系统实参高阶函数
# max、min、sorted、map、reduce
# 1)max、min
'''
参数key要求传一个函数,可以通过这个函数来确定比较大小的时候的比较标准
key的要求:
a.是一个函数
b.这个函数必须有且只有一个函数(这个参数就相当于序列中每个元素)
c.这个函数需要一个返回值(返回值就是比较标准)
'''
练习1:
nums = [78, 67, 55, 18, 29],求nums中个位数最大元素
result = max(nums, key= lambda item:item % 10)
print(result)

练习2:
nums = [128, 88, 90, 71]
# 求各个位上的数字和最大的元素
def f(item):
    s = 0
    for x in str(item):
        s += int(x)
    return s
result = max(nums, key = f)
print(result)  # 88

练习3:
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)
result = min(students, key=lambda item:item['age'])
print(result)  # {'name': 'stu5', 'age': 10, 'score': 78}
 # 2)按照分数对students从大到小排序
result = sorted(students, key=lambda item:item['score'],reverse=True)
print(result)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值