码农学技术————六个月学习python全栈【Day17】

Cesium创建无人机视锥,同步视锥与鹰眼地图视角,实现视锥键盘控制。解决视锥初始化位置不准确问题等 本文描述了一个基于Cesium的3D视锥体可视化系统开发过程。系统实现了主视图与鹰眼视图的双屏联动,支持通过键盘控制视锥体的空间移动(WASD前后左右,Q/E旋转,C/Z升降),并实时同步更新两个视图。关键技术包括:1)基于主视图Scene创建Camera实现视锥体精确绘制;2)通过PerspectiveFrustum设置视锥参数;3)建立双视图的相机位置及视角同步机制。目前暂未实现视锥体far/near边界在鹰眼视图中的可视化,该系统可应用于无人机视角监控等三维场景交互需求。 阅读详情

今日学习目标:

  • 学习生成器对象、 模块简介

今日学习内容:

内容简要:

  • 生成器对象(自定义迭代器)
  • 模块简介

内容详细:

生成器对象(自定义迭代器)

生成器本质是一个使用了yield返回值的函数,支持使用next()函数不断返回下一个值,同时支持使用send函数向生成器发送消息。

生成器对象也是节省存储空间的 特性与迭代器对象一致,所以也可以说是特殊的迭代器。

  • 特点

    1. 当函数体代码中含有yield关键字,第一次调用函数并不会执行函数体代码,而是将函数变成了生成器
    2. yield执行并返回值后,不会退出函数体,而是挂起,待下次next时,再从挂起点恢复运行,如果没有了 再执行也会报错 StopIteration。
    3. yield语句可以接受通过生成器send方法传入的参数并赋值给一个变量,以动态调整生成器的行为表现
  • 举例

    def index():
    	yield 123
    	yield 666
    # 没有调用之前 就是一个普通的函数
    print(index)  # <function index at 0x0000021C768AD5E0>
    # 加括号调用并接收结果:不执行代码 而是变成生成器对象(迭代器)
    res = index()
    print(res)  # <generator object index at 0x0000021C768A3E40>
    # 变成生成器对象之后调用__next__就会开始执行函数体代码
    print(res.__next__())  # 123  yield有点像return的功能
    print(res.__next__())  # 666  yield有点像return的功能
    # print(res.__next__())  # 报错
    

    运行结果 在这里插入图片描述

  • 实际应用案例
    需求:通过生成器模拟range方法

    def my_range(start, end=None, step=1):
    	if not end:  
        	end = start
        	start = 0
    	while start < end:
        	yield start
        	start += step
    for i in my_range(1,10):
    	print(i)
    
  • yield详解及与return对比

    1. 相同点:
      1. 均在函数体内使用,并且向调用方返回结果
      2. 均可返回一个值或多个值,如果是多个值,则是以元组格式返回
    2. 不同点:
      1. 包含yield的函数,调用时最终返回的是一个生成器,单纯的return函数,调用时返回的是一个值。
      2. return 执行并返回值后,便会直接退出函数体,该函数内存空间即回收释放
      3. yield执行并返回值后,不会退出函数体,而是挂起,待下次next时,再从挂起点恢复运行
      4. yield语句可以接受通过生成器send方法传入的参数并赋值给一个变量,以动态调整生成器的行为表现
    3. return在生成器中的作用:
      在一个生成器函数中,如果没有 return,则默认执行至函数完毕,如果在执行过程中 return,则直接抛出 StopIteration 终止迭代
    
    #1、yield和return共存
    def gene(maxcount):
    	a,b=0,1
    	count=1
    	while True:
        	if count>maxcount:
            	#直接退出函数体
            	return 
        	else:
            	#返回值后,函数在该处挂起,下次再从该处恢复运行
            	yield a+b
            	a,b=b,a+b
            	count+=1
    
    #2、yield接受通过send传入的参数并动态调整生成器行为
    def gene(maxcount):
    	a,b=0,1
    	count=1
    	while True:
        	if count>maxcount:
            	return 
        	else:
            	msg=yield a+b
            	if msg=='stop':
                	return
            	a,b=b,a+b
            	count+=1
    g=gene(10)
    next(g)
    g.send('msg') #生成器终止,并抛出一个StopIteration异常
    
    

模块简介

  • 什么是模块?
    模块就是一系列功能的结合体 可以直接使用,实际上就是 以.py为结尾的文件(注意点:自定义的模块尽量不要和系统模块重名)

  • 为什么要用模块?
    极大地提升开发效率,因为它是一些功能的集合体,所以在程序编写的过程中,一些别人已经写好的功能就可以用调用替代繁重的自我编写。

  • 模块的三种来源

    1. 内置的模块
      无需下载 解释器自带 直接导入使用即可
    2. 自定义模块
      自己写的代码 封装成模块 自己用或者发布到网上供别人使用
    3. 第三方模块
      别人写的发布到网上的 可以下载使用的模块
  • 模块的四种表现形式

    1. 使用python代码编写的py文件
    2. 多个py文件组成的文件夹(包)
    3. 已被编译为共享库或DLL的c或C++扩展
    4. 使用C编写并链接到python解释器的内置模块
  • 模块的两种导入方式

    方式1>>>:import...句式
    方式2>>>:from...import...句式
    详细语法

    1. improt 模块名
      调用:模块名.功能名
    2. import 模块名 as 别名
      调用:别名.功能名
    3. from 模块名 import 功能名
      调用:直接功能名
    4. from 模块名 import 功能名 as 别名
      调用: 直接拿别名来用
    5. from 模块名 import * (用 * 号 一次性导入所有功能)
      调用:直接功能名
      注意点:* 号没法用别名
  • import...句式

    前提:在研究模块的时候 一定要分清楚谁是执行文件 谁是被导入文件(模块)
    在这里插入图片描述

    • 导入模块内部到底发送了什么事情
    1. 执行当前文件 产生一个当前文件的名称空间
    2. 执行import句式 导入模块文件(即执行模块文件代码产生模块文件的名称空间)
    3. 在当前文件的名称空间中产生一个模块的名字 指向模块的名称空间
    4. 通过该名字就可以使用到模块名称空间中的所有数据
    • import句式的特点

      可以通过import后面的模块名点的方式 使用模块中所有的名字,并且不会与当前名称空间中的名字冲突

  • from...import...句式

    前提:在研究模块的时候 一定要分清楚谁是执行文件 谁是被导入文件(模块)
    在这里插入图片描述

    • 导入模块内部到底发送了什么事情
    1. 执行当前文件产生一个名称空间
    2. 执行导入语句 运行模块文件产生名称空间存放运行过程中的所有名字
    3. 将import后面的名字直接拿到当前执行文件中
    • from…import…句式
    1. 重复导入也只会导入一次
    2. 使用模块名称空间中的名字不需要加模块名前缀 直接使用即可
    3. 但是from…import的句式会产生名字冲突的问题,在使用的时候 一定要避免名字冲突
    4. 使用from…import的句式 只能使用import后面出现的名字

特别说明

  • from md import *
    from...import的句式也可以导入所有的名字
    在这里插入图片描述

如果模块文件中使用了__ all__限制可以使用的名字 那么*号就会失效 依据__ all__后面列举的名字

  • 使用方式
    在这里插入图片描述
  • import...句式调用发生的那些事
    在这里插入图片描述
  • from...import...句式调用发生的那些事
    在这里插入图片描述

今日学习时间:

这里统计计划学习的时间

1、 上午8:30~12:30
2、 下午2:30~5:30
3、 晚上6:30~9:30


今日学习产出:

这里统计学习计划的总量

  • 1、 技术笔记 1遍
  • 2、CSDN 技术博客 1篇
  • 3、每日录音,预习明日内容
3篇1章6节:R基础绘图之图形的保存和导出技巧 高质量图形导出是R语言用户在数据分析和科研工作中的重要技能。通过合理控制图形的分辨率、选择合适的颜色管理方案和文件格式,以及掌握批量保存图形的技巧,可以显著提升图形的展示效果和应用范围。这不仅有助于提高研究成果的展示质量,还能在各种专业场合中展现数据分析的精确性和美观性。 阅读详情

相关推荐

SAP 生产订单工序删除状态撤回简介

2、我们在前台对于生产订单的状态一个是在生产订单抬头中的状态,另外一个是针对上面一直在测试的是工序的状态,这个两个状态是前台可见的状态,实际生产订单还有一个组件物料的状态,这个状态是不可见的一个状态。生产订单中的0010工序中对应的组件的栏位被标识,表示有物料分配到了0010的工序中,正常情况下0010的工序被分配了工序是不应该被删除的。将已领料的工序删除掉,导致异常的发生。当物料已领料会,用户仍然把已分配的物料的工序删除掉,导致后续业务操作过程中产生异常,如下图中所示,0010的工序被打上了删除标识。

我小时候很黑的博客 1860

python-生成器详解(2024年3月6日更新了内容)

生成器是python中的一个对象(按照某种规律,来生成元素的对象),生成器不是列表,保存了产生元素的算法,同时会记录游标的位置(现在拿到第几个元素了),为了下次继续拿数据,而不是从头开始拿数据。可以通过一直调用next()方法获取值,这个对象不保存数据,每次调用会返回一个值,即做到了列表的好处,又不占用空间。...

python全栈 1万+

springboot&mybatis中数组和字符串数据类型的转换

/前端数组字段//数据库中字段/*与前端交互时使用的get/set*/System.out.println("接收前端数据");/*与前端交互时使用的get/set*//*与数据库交互时使用的get/set*/System.out.println("从数据库中读取数据");/*与数据库交互时使用的get/set*/

l_q_l的专栏 2451

python基础 — 可迭代对象,迭代器和生成器

2. `send(value)`:除了具有 `next()` 方法的功能外,还可以向生成器函数发送一个值,并将该值作为当前 `yield` 表达式的结果,并使生成器函数从上次暂停的地方继续执行。生成器使用yield语句来定义,当调用生成器函数时,它会返回一个迭代器对象,通过迭代器可以逐步获取生成的值。在上述示例中,可迭代对象 my_list的__iter__()方法返回了一个迭代器对象,而迭代器对象的__next__()方法逐个取出可迭代对象中的元素,知道元素取完会抛出StopIteration异常。

个人博客 3216

Python的容器、可迭代对象、迭代器、生成器

python迭代器与生成器

qq_38380338的博客 1407

python生成器有几种写法,python生成器的作用

大家好,小编来为大家解答以下问题,python生成器有几种写法,python生成器的作用,今天让我们一起来看看吧!Python中一边循环一边计算的机制称为生成器,即generator。在generator中记录了获取下一个对象的算法,当我们需要数据的时候就可以通过生成器去获取,而不需要事先存储这些数据,以免浪费资源。

wenangou6 471

Python 生成器

Python 生成器

beichanbb的博客 1197

码农技术————六个月学习pythonDay02】

今日学习目标: 了解操作系统和编程语言发展史,安装会用python编译器和pycharm。 今日学习内容: 内容概要: 操作系统 文件的概念 帮助你更加直观的理解操作系统的作用 编程语言的发展史 编程语言的分类 python简介 python解释器的版本说明 python解释器下载与安装 python解释器多版本共存 第一个python程序 编程软件的下载与使用 内容详情 操作系统 # 控制 协调 管理计算机各个硬件的工作(主要是针对CPU) 操作系统其

fonnt的博客 2723

码农技术————六个月学习pythonDay08】

今日学习目标: 理解运用字典的内置方法 理解运用元组的内置方法 理解运用集合的内置方法 理解补充知识点 今日学习内容: 内容简要: 字典的内置方法 元组的内置方法 集合的内置方法 补充知识点 内容详细: 字典的内置方法 1.类型转换 用法举例 # 转换1: info=dict([['name','tony'],('age',18)]) print(info) # 转换2:fromkeys会从元组中取出每个值当做key,然后与None组成key:value放到字典中 print({

fonnt的博客 1566

码农技术————六个月学习pythonDay09】

今日学习目标: 熟悉文件操作,理解和运用文件操作方法 今日学习内容: 内容简要: 字符编码的实际应用 文件操作简介 文件的读写模式 文件的操作方法 文件补充说明 内容详细: 字符编码的实际应用 编码与解码 1.为什么要进行编码与解码 举个例子,这里我们不妨将人类可以很容易理解的字符作为“明文”,将人类的明文加密成不易懂但是更易于存储和传输的消息字节作为“密文”。那么编码和解码的关系如下: 明文就是人类可以直接一眼就看得懂的字符,密文就是明文被加密后一般人无法立马看懂的字节。 所以人类看

fonnt的博客 984

码农技术————六个月学习pythonDay07】

今日学习目标: 理解运用字符串的其他内置方法 理解运用列表内置方法 理解补充知识点 今日学习内容: 内容简要: 字符串的其他内置方法(剩余部分) 列表内置方法 补充知识点 内容详细: 字符串的其他内置方法(剩余部分) 前一部分请见我上一篇[博客] 1.移除字符串首尾的指定字符 可以选择方向 用法举例 str1 = '**jason***' print(str1.strip('*')) # 移除左右两边的指定字符 print(str1.lstrip('*')) # 只移除左边的

fonnt的博客 913

码农技术————六个月学习pythonDay11】

今日学习目标: 函数的定义与调用 理解运用函数的参数 今日学习内容: 内容简要: 函数的定义与调用 函数的分类 函数的返回值 函数的参数(内容较多) 内容详细: 函数的定义与调用 1.函数一定要遵循先定义后调用的原则 2.函数在定义阶段只检测语法不执行代码 3.函数体代码只有在调用函数的时候才会执行 4.函数名其实相当于是变量名指向的是内存中函数体代码所在的位置 对于函数的定义和调用更加详细的运用技巧请参考我上一篇博客 函数的分类 对于python的函数类型的分类,在函数定义方式上来

fonnt的博客 1139

码农技术————六个月学习pythonDay16】

今日学习目标: 学习迭代,异常处理,for循环的本质 了解常见内置函数 今日学习内容: 内容简要: 迭代对象与迭代器 for循环的内部原理 异常处理 常见内置函数(续) 内容详细: 迭代对象与迭代器 什么叫迭代? 迭代其实就是更新换代 每一次迭代的过程都需要依赖于上一次的结果 什么是可迭代对象? 内置有__iter__方法的都可以称之为是可迭代对象。如: 哪些数据是可迭代对象? 通过上述方式验证得到: 数据种类 是否是可迭代对象 整型 否 浮点型 否 字

fonnt的博客 1086

码农技术————六个月学习pythonDay18】

今日学习目标: 理解循环导入问题,知道模块查找顺序 学习包的概念和软件开发目录规范 今日学习内容: 内容简要: 循环导入问题 判断文件类型 模块的查找顺序 绝对导入与相对导入 编程思想的演变 软件开发目录规范 内容详细: 循环导入问题 循环导入简单的说就是两个文件彼此相互导入 问题产生 循环导入的时候极有可能出现某个名字还没有被创建就使用的情况导致报错 问题解决 方式1:将导入模块的句式写在定义名字的下面 方式2:将导入模块的句式写在函数体代码内 问题归纳 因为这种

fonnt的博客 888

码农技术————六个月学习pythonDay04】

今日学习目标: 了解python基础语法(基本数据类型:字典,集合,元组,布尔值;人机交互,运算符) 今日学习内容: 内容概要: 基本数据类型 用户交互 格式化输出 运算符 内容详情: 基本数据类型: (五)、字典 dict 1.字典是另一种存储数据的格式。字典的每个元素都由两部分组成(列表的每个元素只有一个部分),前一部分称为键,后一部分称为值,中间用冒号相连。 2.字典类型是键值对的集合,反映了数据之间的映射关系 3.字典使用大括号{}表示,键值间用冒号分隔,键值对间用逗号

fonnt的博客 420

码农技术————六个月学习pythonDay06】

今日学习目标: 理解运用while循环剩余用法 理解运用for循环用法 理解运用for循环中特殊关键词用法 理解运用基本数据类型及内置方法 今日学习内容: 内容简要: 流程控制——循环结构(while循环2.0) 流程控制——循环结构(for循环) 流程控制——循环结构(for循环——关键字) 基本数据类型及内置方法(方法有点多 前期需要记忆) 内容详细: 流程控制——循环结构(while循环2.0) 一. while与else连用 npython中的while后面的else的作用是

fonnt的博客 686

码农技术————六个月学习pythonDay15】

今日学习目标: 学习三元表达式,各种生成式,匿名函数 了解常见重要内置函数 今日学习内容: 内容简要: 三元表达式 各种生成式 匿名函数 常见重要内置函数 内容详细: 三元表达式 ·引入 三元表达式的产生主要还是为了让一些代码块编写的更加简洁易懂, 提高编写速率 使用场景 二选一的时候 推荐使用三元表达式 语法结构 """ 三元表达式 值1 if 条件 else 值2 # 1.条件如果成立则使用值1(if前面的数据) # 2.条件如果不成立则使用值2(else后面的数据)

fonnt的博客 845

码农技术————六个月学习pythonDay12】

今日学习目标: 了解什么是名称空间,会查找和理解其作用域 理解运用global与nonlocal关键字 对函数名和函数的嵌套有所理解 今日学习内容: 内容简要: 名称空间 作用域 global与nonlocal关键字 函数名对象 函数的嵌套 内容详细: 名称空间 是存放变量名与变量值绑定关系的地方 Python 的名称空间包括: 内置名称空间 存放python解释器内置的名字(例如:print、input、len) print(print) print(input) print(

fonnt的博客 862

码农技术————六个月学习pythonDay03】

今日学习目标: 了解python基础语法(变量,常量,数据类型) 今日学习内容: python多版本共存 python语法之注释 python变量与常量 变量的本质 变量的命名规范和风格 python基本数据类型 今日学习时间: 提示:这里可以添加计划学习的时间 例如: 1、 周一至周五晚上 7 点—晚上9点 2、 周六上午 9 点-上午 11 点 3、 周日下午 3 点-下午 6 点 今日学习产出: 提示:这里统计学习计划的总量 例如: 1、 技术笔记 2 遍 2、CSDN 技术博客 3 篇

fonnt的博客 368

码农技术————六个月学习pythonDay14】

今日学习目标: 学习装饰器的两各类型(多层语法糖,有参装饰器) 学习两种算法表达(递归,二分法) 今日学习内容: 内容简要: 多层语法糖内部本质 有参装饰器 递归函数 算法之二分法 内容详细: 装饰器(重要) 多层语法糖内部本质 修饰器本质上就是一个函数,只不过它的传入参数同样是一个函数。 举例说明 def deco1(func): print(1) def wrapper1(): print(2) func() prin

fonnt的博客 633

码农技术————六个月学习pythonDay05】

今日学习目标: 提示:这里可以添加学习目标 例如:一周掌握 Java 入门知识 今日学习内容: 内容简要: 流程控制理论(很重要) 流程控制——分支结构 流程控制——循环结构(while循环) 内容详细: 一,流程控制理论(很重要) 什么是流程控制 控制事物的执行流程 执行流程的分类 名称 详情 顺序结构 顺序结构是程序按照现行顺序依次执行的一种运行结构。例如:语句块1=>语句块2=>……=>语句块n 分支结构 分支结构是程序按照判断条件选择不同执行

fonnt的博客 329

码农技术————六个月学习pythonDay13】

今日学习目标: 闭包函数 装饰器 今日学习内容: 内容简要: 闭包函数(重要) 装饰器(重点+难点) 内容详细: 闭包函数(重要) 闭包函数(重要) 什么闭包 如果在一个函数的内部定义了另一个函数,外部的函数叫它外函数,内部的函数叫它内函数。 闭包条件 1 内函数里运用了外函数的临时变量。 2 并且外函数的返回值是内函数的引用。 3 在一个外函数中定义了一个内函数。 闭包函数的两大特征 1.闭:定义在函数内部的函数 2.包:内部函数使用了外层函数名称空间

fonnt的博客 627

DSSAT模型原理与软件使用简介.docx

DSSAT模型原理与软件使用简介.docx

IEC 60068-1-2013中文.pdf

IEC 60068-1-2013中文.pdf

上一篇: 码农学技术————六个月学习python全栈【Day16】
下一篇: 码农学技术————六个月学习python全栈【Day18】
絵飛的
博客等级 码龄7年 28粉丝 58原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值