Python_func_supplement

"""

函数补充

1.函数的参数为函数

2.lambda关键字 -- 简化函数的编写

3.偏函数(partial function):在不改变原有代码的情况下,对其进行参数固定值改写

4.变量的作用域问题

  • 局部变量和全局变量同名的问题

  • global关键字使用

"""

1.测试函数的参数为函数

普通函数,输出了一个字符串

def fn():

print("fn....在执行")

def test_fn1(fn):

使用传递进来的函数

fn()

print("fn....函数允许了")

test_fn1(fn)

案例一:使用自定义规则(名字的长短)对列表进行排序

sort_list=10,34,2,57,13,98

print("排序前:",sort_list)

sort_list.sort()

print("排序后:",sort_list)

sort_list1="zhangsan","lisi","wangwu","lijian","llaixitao"

print("排序前:",sort_list1)

sort_list1.sort()

print("排序后:",sort_list1)

1.获取字符串长短函数

def get_len(str):

return len(str)

sort_list2="zhangsan","lisi","wangwu","lijian","llaixitao"

print("排序前:",sort_list2)

为排序增加规则函数,并使用命名关键字参数传递函数,原理就是函数作为参数传递

sort_list2.sort(key=get_len)

print("排序后:",sort_list2)

2.测试lambda关键字

def lambda_test1():

return "zhangsan"

print(lambda_test1())

使用lambda对其进行简化

lijian=lambda :"zhangsan"

print(lijian())

def lambda_test2(x):

return x

print(lambda_test2(10))

使用lambda对其进行简化

lijian1=lambda x:x

print(lijian1(10))

def sum(x,y):

return x+y

sum=lambda x,y : x+y

print(sum(10,20))

以lambda作为参数实现排序规则

print("排序前:",sort_list2)

sort_list2.sort(key=lambda x : -len(x))

print("排序后:",sort_list2)

lambda作为返回值返回 ===》函数的返回值为函数

def test_return():

return lambda x:x +10

lijian2=test_return()

res=lijian2(100)

print(res)

3.测试偏函数

sum2=lambda x,y : x+y

在sum2的基础上对其进行改写实现功能为 恒与100相加

一般情况下不允许修改原有代码

print(id(sum2))

import functools

使用偏函数进行改写

sum2=functools.partial(sum2,y=100)

print(id(sum2))

print(sum2(50))

4.测试参数的作用域问题

全局变量

username="zhangs"

def test_args():

username="lisi"

提升作用域,变为全局变量 global在定义时不能是使用定义且直接赋除值的形式

global password="123456"

global password

password="123456"

局部变量

print(f"username:{username}")

test_args() #username:lisi 同名问题中采用就近原则

print(password)

课堂练习:创建一个函数,用来存储学生信息,其中包含信息如下:姓名,学号,三科成绩(语文数学英语),

对学生进行数学成绩排序11 1111

"""

{"name":"zhangsan1","number":"2014162000","语文":98,"数学":60,"英语":77}

{"name":"zhangsan2","number":"2014162034","语文":88,"数学":65,"英语":75}

{"name":"zhangsan3","number":"2014162023","语文":68,"数学":62,"英语":78}

{"name":"zhangsan4","number":"2014162020","语文":78,"数学":80,"英语":73)

{"name":"zhangsan5","number":"2014162021","语文":92,"数学":90,"英语":67}

提示:

1.字典存储单个学生信息2.列表存储全部学生信息

3.定义排序规则

4.使用列表排序

11 11 11

"""

#1.创建一个题目函数,后续运行即可

def main():

#3.将所有的学生信息存储在列表中

students = \[\]

#2.获取每个学生的信息并封装为字典

while True:

running=int(input("请选择要进行的操作:1.继续录入 2.推出"))

if(running == 1):

name=input("请输入学生姓名:")

number=input("请输入学生的学号:")

score1=int(input("请输入学生的语文成绩:"))

score2=int(input("请输入学生的数学成绩:"))

score3=int(input("请输入学生的英语成绩:"))

#创建一个空字典

student = {}

student"name" = name

student"number" = number

student"语文" = score1

student"数学"= score2

student"英语"= score3

#将每个学生的内容存储在学生总列表中

students.append(student)

else:

break

print("排序前:",students)

#4.定义排序规则,并排序

students.sort(key=lambda x:x"数学")

#5.返回排序后学生列表即可

print("排序后:",students)

main()

相关推荐
运维行者_几秒前
网络监控工具怎么选?从设备监控到智能运维的能力清单
运维·服务器·开发语言·网络·人工智能·支持向量机·php
KeepRobots20 分钟前
11-01 温哥华不回拨:用 60 行 Python 查你的工单系统会不会差一小时(KeepRobots 工程笔记)
python
xiao77mwq24 分钟前
你以为 OCR 慢?实测 81.3 s 里全是故障代价:如何把「定格态」消掉,让耗时从 6.5 s 到 13 倍差距显出原形
python
深圳市益普科技有限公司39 分钟前
半导体良率管理YMS:良率与设备参数的相关性,先拉哪几组数据
人工智能·python·算法
“AI国潮设计-小江”1 小时前
【AIGC实战】Python+SDXL打造“潮汕英歌舞IP”万能立牌插件,批量生成“发财元宝蛋糕”视觉营销方案(附源码)
开发语言·人工智能·python·prompt·aigc
lhbweilai1 小时前
分析FreeRTOS内核对象API的源码实现(八)
c语言·开发语言·stm32·单片机
努力努力再努力wz1 小时前
【C++高阶系列】C++20 协程底层原理:函数为什么能暂停?从状态机到 Task,彻底串起挂起、恢复与协程调度
开发语言·c++·c++20·1024程序员节
咩咩啃树皮2 小时前
JavaScript 中 this 指向为什么总在变?
开发语言·前端·javascript
程序员清风2 小时前
算法题中的边界条件、测试与调试
开发语言·算法·kotlin
砚底藏山河2 小时前
python量化实操:冷热分层存储
java·开发语言·python·金融