Python函数和高阶函数

时间:2021-7-4 作者:qvyue

函数(基础、高阶函数(实参高阶函数、返回值高阶、装饰器))

1.函数就是实现某一特定功能的代码块

sum = 0
for x in range(1,101):
    sum += x
print(sum)

2.定义函数(创建函数)

语法:
def 函数名(形参列表):
    函数说明文档
    函数体
说明:
def - 关键字,固定写法
函数名 - 程序员自己命名(要求和规范和变量一样)
(): - 固定写法
形参列表 - 以'变量名1','变量名2','变量名3,...'的形式存在
形参的作用是将函数外部的数据传到函数内部
函数说明文档 - 一个文档注释(相当于说明书)
函数体 - 和def保持一个缩进的一条或多条语句。(就是实现函数功能的代码)

3.调用函数

语法:函数名(实参列表)
说明:
函数名 - 想要调用那个函数就写那个函数名(函数在调用之前必须先定义)
实参列表 - 多个数据用逗号隔开

4.函数的参数

  • 位置参数和关键字参数
    位置参数需要一一对应
    关键字参数可以换位置
#位置参数
def func1(x,y,z):
    print(f'x:{x},y:{y},z:{z}')
func1(10,20,30)
#关键字参数
func1(y = 100,x = 200 ,z= 300)
  • 定义函数的时候给参数赋默认值
#定义函数的时候给参数赋默认值
def func2(x=10,y=20,z=30):
    print(f'x:{x},y:{y},z:{z}')
func2()
  • 不定长参数

不给任何参数返回的就是一个空元组

#不定长参数,不给任何参数返回的就是一个空元组
def sum(*nums):
    sum = 0
    for x in nums:
        sum += x
    print(sum)

#返回空元组
sum()
#有参数
sum(1,2,3)

def student_info(name,age,*score):
    print(f'名字:{name},年龄:{age},分数:{score}')

student_info('小明','19',90,100,80)

5.匿名函数

函数名 = lambda 形参列表:返回值

相当于:
def 函数名(形参列表):
    return 返回值

位置参数和关键字参数的实际区别

#位置参数
def func1(x,y,z):
    print(f'x:{x},y:{y},z:{z}')

func1(10,20,30)

#关键字参数
func1(y = 100,x = 200 ,z= 300)
#定义函数的时候给参数赋默认值
def func2(x=10,y=20,z=30):
    print(f'x:{x},y:{y},z:{z}')
func2()
#传参需用关键字参数
func2(x = 10)

程序实战,对两个数求和以及判断字符串是否是纯数字


def sum_n(n):
    sum = 0
    for x in range(1,n+1):
        sum += x
    print(sum)

# sum_n(100)
# sum_n(50)
# sum_n(20)

#求两个数的和
def add(x,y):
    """求两个数的和"""
    return x+y
print(add(1,2))
#求一个数的阶乘
def factor(n):
    """一个数的阶乘"""
    sum = 1
    while n>1:
        sum *= n
        n -= 1
    return sum
print(factor(5))
#判断字符串是否是纯数字字符串
def is_number_str(str1):
    """提取字符串里每一个字符,并判断是否是数字"""
    for x in str1:
        if not '0' 

高阶函数,也就是匿名函数,不用写函数名

#定义匿名函数求两个数的和
sum = lambda num1,num2: num1 + num2
sum(1,2)
sum(num1=10,num2=20)
#实参高阶函数
#系统常用的实参高阶函数:max、min、sorted、map
nums = [80,95,-120,64,18]
max(nums)
sorted(nums,reverse=True)
print(list(map(abs,nums)))
#个位数最大的元素
#key是一个函数,函数有一个参数(指向序列中的元素),有一个返回值
def func(x):
    return x%10
max(nums,key = func)
min(nums,key = lambda item:item % 10)
max(nums,key = lambda item:abs(item))

students = [{'name':'stu1','age':20,'score':90},{'name':'stu2','age':19,'score':98},{'name':'stu3','age':25,'score':80}]

#获取字典里的键值
def get_dic_value(dic):
    value = []
    for key in dic:
        value.append(dic[key])
    return value[2]
# dic = {'name':'stu1','age':20,'score':90}
# print(get_dic_value(dic))
#对学生的分数和年龄进行排序
sorted(students,key = lambda item:get_dic_value(item))

总结:上午的课程学习了python函数和函数编程的一些技巧和方法,还有高阶函数的简单使用,总的来说比较简单,最难的是对学生的年龄进行排序,使用到了高阶函数和字典键值对的知识,感觉收获很多。

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。