最新要闻
- 快看:本周最火AutoGPT!GitHub3.6万+标星:解决复杂任务全程无需人类插手
- 环球微速讯:性能升级 13代酷睿来了? 华为MateBook笔记本新品即将发布
- 曾力推每天睡4小时 张朝阳建议年轻人别睡懒觉不要熬夜
- 每日动态!李书福抢跑马斯克发小钢炮!冰箱彩电大沙发全标配:理想直呼内行
- 【环球热闻】售价高达15000元!宾得专为黑白摄影推出K-3 Mark III Monochrome
- 金色的草地课文朗读音频_金色的草地课文
- Intel突然杀死服务器整机业务!新CEO连砍十余刀挽救亏损
- 马保国直播带货现演“闪电五连鞭”:销量惨淡 网友只看不买
- 克里克森_克里克拉克
- 每日速递:日本部分地区出现大量黄沙:能见度不足10公里
- 环球热点!高颜值!关晓彤晒华为nova 11:本月发
- 每日资讯:开启影像光学新时代!小米13 Ultra搭载全焦段5000万像素徕卡四摄
- 真反向虚标!实测比亚迪秦PLUS EV冠军版:标610开出646.5
- 5.98万起真不贵!五菱缤果上市两周狂卖10000台:再成爆款
- 【大兴调查研究】临夏税务:“把脉问诊”助企纾困
- 今日热闻!新款特斯拉Model 3实车首曝:大灯更精神、颜值再提升
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
12函数进阶
函数进阶
函数的作用域
作用域又可以被称为命名空间,指变量起作用的范围。Python变量作用域可以分为四种,分别为局部作用域、嵌套作用域、全局作用域、内置作用域。
作用域 | 英文 |
---|---|
局部作用域 | Local |
嵌套作用域 | Enclosing |
全局作用域 | Global |
内置作用域 | Buiit-in |
内建作用域是特质python api内置的一些操作,例如 len 、max等函数,无需声明就可使用。
变量作用域
一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下:
(资料图片仅供参考)
- 全局变量:定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
- 局部变量:局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。
x = 2def func(): x = 3 # 局部变量 return xresult = func()print(result) # 3print(x) # 2
当我们在代码里使用变量时,Python创建对象,改变对象或查找对象都是在一个所谓命名空间下进行的(一个保存变量名的地方)。而函数除了打包代码之外,还定义了一个新的变量空间,一个函数所有的变量,都与函数的命名空间相关联:
- def 内定义的变量名能够被 def内的代码使用,不能在函数外部引用这样的变量名
- def之中的变量名与def之外的变量名并不冲突
也就是说:
- 如果一个变量在def内被赋值,它就被定义在这个函数之内
- 如果在def之外赋值,它就是整个文件全局的
回到上面的那个例子:
x = 2def func(x): x = 3 """尽管这两个变量名都是x,但是他们作用域(命名空间)可以把他们区别开。作用域(命名空间)有助于防止程序之间变量名的冲突,而且,有助于函数成为更加独立的单元。在Python中,函数定义了一个函数本地内的作用域,而像x = 2这样赋值语句定义了一个全局作用域(模块级别的变量,使用范围仅限于单个文件)。而像x = 3这样赋值语句定义了一个局部作用域(范围仅限于函数内部)。"""
global关键字
函数中修改不了全局作用域的变量如需修改,加global关键字,声明变量为全局变量
y = 10def func(): global y y = 5 print("y1 =", y)func()# y1 = 5print("y2 =", y) # y2 = 5"""函数体中使用了global关键字,声明y为全局变量,故在函数中就改变了y的值若函数体中没有global y 语句,最后的结果就是y1 = 5,y2 = 10 4;这就跟上面的那个案例相同了"""
nonlocal关键字
# E(enclosing):嵌套的父级函数的局部作用域def mytest1(): b = 6 # 局部变量 相对而言 我们的b是函数mytest2的全局变量 def mytest2(): # nonlocal b # nonlocal 关键字用于在嵌套函数内部使用变量 了解即可 用的时候比较少 b = 7 # 重新开辟了内存空间 注释掉直接打印b print(b, id(b)) mytest2() print(b, id(b))mytest1()"""7 14403956487 1440395648 """
函数作用域的优先级
高阶函数
概念与调用
高阶函数:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),满足其一则为高阶函数。
- 一个函数的函数名作为参数传给另外一个函数
# 频繁的使用 需要其他的功能结合使用def func(): print("定义一个普通函数")def high_level(func): print("定义一个高阶函数") # 此函数的功能 # 在函数内部,通过传入的函数参数调用 func() # 调用我传入的函数名的函数high_level(func)"""定义一个高阶函数定义一个普通函数"""
- 一个函数返回值(return)为另外一个函数(返回为自己,则为递归)
def func(): print("定义一个普通函数")def high_level(func): print("定义一个高阶函数") return func # high_level # return func() 这个是直接返回函数调用,递归函数就是如此res = high_level(func)# 高阶函数返回函数之后在调用func函数res()"""定义一个高阶函数定义一个普通函数"""
递归
- 函数内部自己调用自己
- 必须要有出口
# 打印1-9(range)def func(start, end, step=1): print(start) if start >= end: return # 结束函数运行,停止递归 func(start + step, end, step)func(1, 9)
3、内置高阶函数
1)lambda函数
- 匿名函数
- 优点:节省内存空间,优化代码
# lambda函数# 当函数里面只有一行代码时,可以转换为匿名函数# 实际中,只使用一次,不需要考虑函数的名字,只需要功能# lambda 传入的参数:返回的数据def add(a, b): return a + bprint(add(1, 2))print((lambda a, b: a + b)(1, 2))add1 = (lambda a, b: a + b) # 定义名字,重复使用print(add1(2, 2))print(add1(2, 3))
- lamada参数实例
import random# 无参数sdds = lambda: random.random()sdds()# 一个参数fun1 = lambda x: xprint(fun1("hello python"))# 默认参数 (缺省参数)fun2 = lambda a, b, c=100: a + b + cprint(fun2(10,19,1000))# 可变参数之argsfun3 = lambda *args: argsprint(fun3((1,2,3,4,5)))# 可变参数之kwargsfun4 = lambda **kwargs: kwargsprint(fun4(name="yueyue",age=18,height="178cm"))# 带判断的lambda表达式asd = lambda x: x if (x > 10) else 10print(asd(5))#### 它是以下带有def和return 关键字的普通函数的更简单版本:def fun(x): if x > 10: return x else: return 10print(fun(5))
- 列表中字典数据排序
# 列表中的字典排序# 需求:假设我们需要对字典中的年龄进行排序user_list = [ {"name": "zhangsan1", "age": 18}, {"name": "lisi1", "age": 19}, {"name": "wangwu1", "age": 17}]def getAge(element): return element["age"]# 传递给key参数的是一个函数,它指定可迭代对象中的每一个元素来按照该函数进行排序user_list.sort(key=getAge,reverse=True)print(user_list)# 我们需要使用匿名函数,使用sort函数中的key这个参数,来指定字典比大小的方法# reverse参数控制升序与降序排列user_list.sort(key=lambda x:x["age"],reverse=True)print(user_list)
2)map函数
- 语法:map(function, iterable, ...)
- 参数:function —— 函数;iterable —— 可迭代对象
- 作用:通过将指定的function函数依次作用在给定序列iterable中的每一个元素上,得到一个新的list并返回。注意,map不改变原list,而是返回一个新list。
# map函数 映射# 列表数据转为字符串list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]print(list(map(lambda i: str(i), list1))) # ["1", "2", "3", "4", "5", "6", "7", "8", "9"]print(list(map(str, list1))) # ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
3)reduce函数
- reduce() 函数来自 functools 模块。使用 reduce() 函数,需要在代码开始时使用以下语句导入 functools 模块:
from functools import reduce
关于模块(module)的知识和使用方法后续会进行深入学习。
- 作用:先从列表(或序列)中取出2个元素执行指定函数,并将输出结果与第3个元素传入函数,输出结果再与第4个元素传入函数,…,以此类推,直到列表每个元素都取完。
from functools import reduce # 导入内置reduce函数def fn(x, y): return x + yres = reduce(fn, [1, 3, 5, 7, 9])print(res)# 25
4)filter函数
- 语法:reduce(function, iterable)
- 参数:function —— 函数;iterable —— 可迭代对象
- 作用:filter函数也是接收一个函数和一个序列的高阶函数,其主要功能是过滤。
# 在一个list中,删掉偶数,只保留奇数def is_odd(n): return n % 2 == 1print(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])) # print(list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))) # [1, 5, 9, 15]
学员管理系统
这个建议自行去写一下,除了这个系统,还有图书馆管理系统,宿舍管理系统等,网络上都有许多教程,换汤不换药的,有需要可以联系。
关键词:
minio分片上传
12函数进阶
环球快看点丨[Docker]Namespace与Cgroups
快看:本周最火AutoGPT!GitHub3.6万+标星:解决复杂任务全程无需人类插手
环球微速讯:性能升级 13代酷睿来了? 华为MateBook笔记本新品即将发布
曾力推每天睡4小时 张朝阳建议年轻人别睡懒觉不要熬夜
每日动态!李书福抢跑马斯克发小钢炮!冰箱彩电大沙发全标配:理想直呼内行
【环球热闻】售价高达15000元!宾得专为黑白摄影推出K-3 Mark III Monochrome
金色的草地课文朗读音频_金色的草地课文
焦点精选!论结构化、系统性的学习
【天天热闻】RocketMQ是是如何管理消费进度的?又是如何保证消息成功消费的?
【天天聚看点】C# 根据前台传入实体名称,动态查询数据
每日关注!电商流量分析怎么做?试试这款数据工具 DataLeap!
Intel突然杀死服务器整机业务!新CEO连砍十余刀挽救亏损
马保国直播带货现演“闪电五连鞭”:销量惨淡 网友只看不买
手把手教你如何免费Midjourney Adobe FireFly AI绘图—Window本地快速部署stable diffusion AI绘图及使用指南(小白
克里克森_克里克拉克
每日速递:日本部分地区出现大量黄沙:能见度不足10公里
环球热点!高颜值!关晓彤晒华为nova 11:本月发
每日资讯:开启影像光学新时代!小米13 Ultra搭载全焦段5000万像素徕卡四摄
真反向虚标!实测比亚迪秦PLUS EV冠军版:标610开出646.5
5.98万起真不贵!五菱缤果上市两周狂卖10000台:再成爆款
【3D建模工具】上海道宁与McNeel为您提供强大的专业3D造型软件
环球快资讯丨学系统集成项目管理工程师(中项)系列04c_项目管理一般知识(下)
【大兴调查研究】临夏税务:“把脉问诊”助企纾困
今日热闻!新款特斯拉Model 3实车首曝:大灯更精神、颜值再提升
焦点短讯!张艺谋:《满江红》票房让我很意外 20亿就是伟大胜利
观热点:美曾通报生物实验室感染病毒的小白鼠逃了:去年还发生实验猴逃窜
世界快看:5.58万起 五菱荣光新卡上市:2.0L动力、3.3米货厢
当前看点!微信推送8.0.35测试版:和Android 5.0说再见
华硕A52J笔记本最大存储空间是多少?华硕a52j笔记本参数
金立GN105手机怎么换屏幕?金立gn105手机参数配置
ATI HD4500是集成显卡吗?ATI HD4500参数配置
华硕y581c是什么系列?华硕y581c笔记本电脑配置
苹果iPhone7有几种颜色?苹果iphone7怎么截长图?
环球速递!《梦西游》4月14日合服维护公告
环球快消息!C#--TextBox的四种禁止编辑方法
热点评!4月22日,云数据库技术沙龙【杭州站】来了
用java做一个并发10W的网站,需要用到的技术有这些!
释放1英寸全部实力!小米13 Ultra支持可变光圈:重金打造
埃安Hyper GT摊牌了:比特斯拉贵 但你会选我
广东惠东发现“世界最神秘的鸟”:中国特产、比大熊猫还稀少
世界通讯!《名侦探柯南》优衣库联名T恤引争议 柯哀党PK新兰党
观焦点:小米平板6系列正式官宣:5000万摄像头 超强生产力工具
环球微速讯:093期杨光福彩3D预测奖号:定位直选参考
天天时讯:百度文心大模型API测试
世界通讯!浅析DNS Rebinding
Linux运维进阶之路
环球观点:美国通胀降温 油价随宽松预期下上行
天天日报丨男子要求抹零被拒与店员起争执 就为10元打女服务员:网友吐槽没必要
世界快资讯:打车去拉萨的超远订单显著增加 车费超1.3万 滴滴:希望大家理性下单
每日动态!曾是第一大股东 软银抛售阿里巴巴股份:快清空了
世界热资讯!剧版《哈利·波特》官宣 先导预告发布:JK罗琳监制 忠于原著的十年大剧
每日速递:和iPhone一样四边等宽!华为nova 11正面照泄露
天天报道:1、内网渗透基础知识
4月13日生意社二氯甲烷基准价为2607.50元/吨
【国际大宗商品早报】国际油价显著上涨超2% 基本金属全线走高
喊话北京打车太便宜应涨价!乘联会秘书长:燃油车用户纳税但未享受权益
世界速看:中老铁路首趟国际旅客列车发车:昆明当日通达万象 二等座470元
白玉兰奖《狂飙》张颂文呼声最高:国产电视剧质量、口碑爆发
有7/14nm光刻机国产芯片就能赶上来?全球半导体设备、材料核心已被全垄断
【读财报】房企3月融资:境内信用债发行规模环比翻倍 美元债发行回落
焦点滚动:银河证券:继续看好银行板块投资机会
每日动态!四大证券报精华摘要:4月13日
微头条丨高校围捕1.26米40斤“鳄雀鳝”:人为放生 长嘴如鳄鱼
兰博基尼推出插电混动超级跑车 60万美元迅速卖光
比亚迪汉、唐车主狂喜!今年内可OTA升级云辇系统 车型一览
焦点滚动:小米13 Ultra跑分出炉:第二代骁龙8 顶配16GB内存
天天时讯:俄罗斯国家空间站计划2027年开建:最新构型图正式公布
每日播报!信贷投放靠前发力为经济发展注入活力
比亚迪又放大招 直接对标奔驰
今日最新!403秒!我国人造太阳创造新的世界纪录:可控核聚变又近一步
世界滚动:校园内最美的舞蹈
四则运算练习&竞赛系统(结对编程)
世界滚动:[GIT]GIT之删除远程仓库中的目录或文件
神谷英树发文怒喷Switch:想把这垃圾砸碎!
世界快讯:10nm以下最强候选 中国半导体性单壁碳纳米管获突破
快看点丨被吐槽像绿皮火车!空姐飞机上推销商品吆喝40分钟 业内人士:不违规
【天天新视野】世界上最孤独的鲸鱼死了:圈养44年 5个孩子全部夭折
世界观焦点:技嘉发布韩国特供版RTX 4070:真花哨
穗是哪个城市的简称_广州的简称
全球看点:美国3月消费者价格指数环比增长0.1%
最新:面试题百日百刷-kafka篇(二)
全球看热讯:融创达成复牌指引 明起正式复牌
柯纳米员工袭击老板
每日快讯!是兄弟就来找ChatGPT漏洞 最高赏金2万刀:你敢来吗
当前头条:AMD 3D缓存大杀四方!Intel 14代酷睿上四级缓存
我国首颗太阳专用卫星 夸父一号观测数据将向国内外试开放
Vulnhub Mercy Walkthrough
java命令执行漏洞
环球新资讯:打印圣诞树
天天速讯:09字典(dict)与集合(set)
环球消息!懒人家常糖饼,和面方式不一般,出锅鼓泡不漏糖,松软甜蜜不会硬
索泰首发三款RTX 4070:天启功耗解锁250W!5399元
第三代“风雪”散热器 小巧高颜值!耕升RTX 4070踏雪显卡图赏
【新视野】发售一年的《幽灵线:东京》游戏上了D加密:学习版早已满天飞 玩家不解
从柯哀亲嘴到作者“去世” 又一场滑稽的互联网闹剧
正逆转设计 技嘉RTX 4070风魔OC 12G显卡图赏
count(*) count(1) count(字段)效率问题
java -- 二维数组