函数(基础、高阶函数(实参高阶函数、返回值高阶、装饰器))
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' <= x <= '9':
return False
return True
#定义一个函数交换一个字典的键和值
#{键:值 for 变量 in 序列}
def exchange_key_value(dic):
return {dic[key]:key for key in dic}
exchange_key_value({1:0,0:1})
#is_number_str('a12')
高阶函数,也就是匿名函数,不用写函数名
#定义匿名函数求两个数的和
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函数和函数编程的一些技巧和方法,还有高阶函数的简单使用,总的来说比较简单,最难的是对学生的年龄进行排序,使用到了高阶函数和字典键值对的知识,感觉收获很多。
网友评论