Category Archive for: 蟒蛇

文件处理

文件处理家庭作业帮助 文件处理 文件是停留在计算机存储设备中的一些信息或数据。您已经知道不同类型的文件,如您的音乐文件,视频文件,文本文件。 Python为您提供操作这些文件的简单方法。通常我们将文件分为两类,即文本文件和二进制文件。文本文件是简单的文本,因为二进制文件包含只能被计算机读取的二进制数据。 文件打开 要打开一个文件,我们使用open()函数。它需要两个参数,首先是文件路径或文件名,第二个应该打开哪种模式。模式就像 “r” – >打开只读,你可以读取文件,但不能编辑/删除任何内容 “w” – >打开写入电源,意味着如果文件存在然后删除所有内容并打开它写入 “a” – >以附加模式打开 默认模式是只读的,即如果您不提供任何模式,它将以只读方式打开该文件。让我们打开一个文件 >>> fobj = open(“love.txt”) >>> fobj <_io.TextIOWrapper name =’love.txt’mode =’r’encoding =’UTF-8′> 关闭文件 打开文件后,应始终关闭打开的文件。我们使用close()方法。 >>> fobj = open(“love.txt”) >>> fobj <_io.TextIOWrapper name =’love.txt’mode =’r’encoding =’UTF-8′> >>> fobj.close() 重要 重要 始终确保您明确关闭每个打开的文件,一旦它的工作完成,你没有理由保持打开。因为 – 程序可以打开的文件数量有上限。如果超过这个限制,则没有可靠的恢复方式,所以程序可能会崩溃。 – 每个打开的文件都会占用与其相关联的数据结构的一些主内存,如文件描述符/句柄或文件锁等。因此,如果您有更多的文件打开,这些文件无效,那么基本上可以浪费大量的内存,可用 – 打开文件总是有机会损坏和数据丢失。 阅读文件 要立即读取整个文件,请使用read()方法。 >>> fobj…

Read More →

事件

事件家庭作业帮助 事件系统的最基本的风格是“处理程序包”,这是Observer模式的简单实现。基本上,处理程序方法(callable)存储在数组中,并且在事件“触发”时被调用。 zope.event显示了这个工作原理的裸骨(见Lennart的回答)。注意:此示例甚至不支持处理程序参数。 LongPoke的“可调用列表”实现表明,这样的事件系统可以通过子类化列表非常简约地实现。 spassig的EventHook(Michael Foord的事件模式)是一个简单的实现。 Josip的值班课程基本相同,但使用一组而不是一个列表来存储该包,并实现__call__,这两个都是合理的添加。 PyNotify在概念上是类似的,并且还提供了变量和条件的其他概念(’variable changed event’)。 axel基本上是一个具有更多功能的处理程序,与线程,错误处理等有关 这些事件系统的缺点是您只能在实际的Event对象(或处理程序列表)上注册处理程序。所以在注册时,事件已经存在了。 这就是为什么存在第二种类型的事件系统:发布 – 订阅模式。在这里,处理程序不会在事件对象(或处理程序列表)上注册,而是在中央调度程序上注册。通知只与调度员说话。什么听,或什么发布由’信号’决定,这只不过是一个名字(字符串)。 闪光灯具有一些漂亮的功能,如基于发送器的自动断开和过滤。 PyPubSub一见钟情似乎很简单;显然还不支持Python3 PyDispatcher似乎强调了多对多出版物的灵活性。 路易是一个重做的PyDispatcher“提供插件基础设施,包括Twisted和PyQt特定的支持”。 django.dispatch是一个重写的PyDispatcher,具有更有限的界面,但性能更高。 Qt的信号和插槽可从PyQt或PySide获得。它们在同一个线程中使用时作为回调工作,或者作为两个不同线程之间的事件(使用事件循环)。信号和插槽的局限性在于,它们只适用于从QObject派生的类的对象。 大多数程序和设备(如手机)会响应事件 – 发生的事情。例如,您可以移动鼠标,计算机响应。或者您点击一个按钮,并且该程序做一些有趣的事情。在本章中,我们将简要介绍事件驱动编程的工作原理。 10.1。按键事件 这是一个有一些新功能的程序。将其复制到您的工作区,运行它。当乌龟窗口打开时,按箭头键,使苔丝移动! 这里有一些要点: 我们需要在第31行调用窗口的listen方法,否则它不会注意到我们的按键。 我们命名我们的处理函数h1,h2等,但是我们可以选择更好的名字。处理程序可以是任意复杂的函数调用其他函数等。 按键盘上的q键调用函数h4(因为我们将q键绑定到第26行的h4)。在执行h4时,窗口的再见方法(第24行)关闭乌龟窗口,导致窗口的主循环调用(第31行)结束其执行。既然我们在第32行之后再没有写任何话,这意味着我们的程序已经完成了所有的任务,所以它也将终止。 我们可以通过字符代码(如我们在第26行中)或其符号名称来引用键盘上的键。一些要尝试的符号名称是取消(Break键),BackSpace,Tab,Return(Enter键),Shift_L(任意Shift键),Control_L(任何控制键),Alt_L(任意Alt键),Pause,Caps_Lock ,Escape,Before(Page Up),Next(Page Down),End,Home,Left,Up,Right,Down,Print,Insert,Delete,F1,F2,F3,F4,F5,F6,F7,F8,F9 ,F10,F11,F12,Num_Lock和Scroll_Lock。 在第14行使用了一种新的乌龟方法 – 这允许我们将乌龟移动到绝对坐标位置。 (到目前为止,我们已经看到的大多数例子都将乌龟相对于目前的位置移动)。那么这个程序的作用是将乌龟(并画一条线)移动到鼠标点击的地方。试试看! 如果我们在第14行之前添加这一行,我们将学习一个有用的调试技巧: 因为我们可以轻松地更改窗口标题栏中的文本,它是显示偶尔的调试或状态信息的有用的地方。 (当然这不是窗口标题的真正目的!) 但还有更多! 窗口不仅可以接收鼠标事件:单个的海龟也可以有自己的处理程序来进行鼠标点击。 “接收”点击事件的乌龟将是鼠标下的那个。所以我们会创造两只乌龟。每个都将一个处理程序绑定到自己的onclick事件。两个处理者可以为他们的海龟做不同的事情。 一个例子:状态机 状态机是可以处于几种不同状态之一的系统。我们绘制状态图来表示机器,其中每个状态被绘制为圆形或椭圆形。发生某些事件导致系统离开一个状态并转换到不同的状态。这些状态转换通常绘制为图上的箭头。 这个想法不是新的:当首次打开手机时,它进入我们可以称为“等待PIN”的状态。当输入正确的PIN码时,它会转换为不同的状态 – 例如“就绪”。然后我们可以锁定电话,它将进入“锁定”状态,等等。 我们在家庭作业中为Python家庭作业中的Python事件提供专家帮助。我们的导师是为各级学生提供家庭作业帮助的专家。

错误和异常处理

错误和异常处理家庭作业帮助 Python中的异常处理 概述 在这篇文章中,我们将介绍Python如何处理异常的错误。 什么是异常? 一个例外是程序执行过程中发生的错误。何时 发生错误,Python会生成可以处理的异常,从而避免了您的异常 程序崩溃 为什么使用例外? 异常在许多方面方便处理错误和特殊条件 在程序中。当你认为你有一个可以产生错误的代码 你可以使用异常处理。 提高例外 您可以通过使用引发异常在自己的程序中引发异常 声明。 提升异常会破坏当前的代码执行并返回异常 回到处理。 异常错误 以下是Python中的常见异常错误: IOError 如果文件无法打开。 ImportError 如果python找不到模块 ValueError 当内置操作或函数接收到具有该参数的参数时引发 正确的类型,但不适当的价值 键盘中断 当用户点击中断键(通常为Control-C或Delete)时, EOFError 当内置函数(input()或raw_input())中的一个命中时引发 文件结束条件(EOF),而不读任何数据 异常错误示例 现在,当我们知道某些异常错误是什么意思时,我们来看看一些 例子: 除了IOError:     print(’尝试读取文件时出错)“ 除了ValueError:     print(’在文件中找到的非数字数据’) 除了ImportError:     打印“找不到模块” 除了EOFError:     print(’你为什么对我做一个EOF?’) 除了KeyboardInterrupt:     打印(“您取消了操作”。) 除:     print(’发生错误’) 尽量使用尽可能少的try块,并尝试区分故障 条件由他们抛出的种种异常。 设置异常处理块 要在Python中使用异常处理,首先需要有一个catch-all除外 条款。 “try”和“except”是Python关键字,用于捕获异常。 try-except [exception-name](见上面的例子)块 try子句中的代码将通过语句执行。…

Read More →

日期和时间

日期和时间家庭作业帮助 Python程序可以通过多种方式处理日期和时间。日期格式之间的转换是电脑的常见烦恼。 Python的时间和日历模块可以帮助跟踪日期和时间。 什么是蜱 时间间隔是以秒为单位的浮点数。 1970年1月1日上午12:00(时代),时间的特殊时刻表示。 Python中有一个受欢迎的时间模块,它提供了处理时间的功能,并在表示之间进行转换。函数time.time()从1970年1月1日中午12:00(时代)返回当前系统时间(以tick为单位)。 例 #!/ usr / bin / python 进口时间; #这是包含时间模块所必需的。 ticks = time.time() 打印“自1970年1月1日上午12:00以来的滴答数”:蜱虫 这将产生如下结果: 1970年1月1日上午12:00以来的滴答数:7186862.73399 日期算术很容易与滴答。然而,在这个形式之前的时代之前的日期是不能表现的。未来的日子也不能以这种方式表现 – 截止点是在2038年的UNIX和Windows的某个时刻。 什么是TimeTuple? 许多Python的时间函数处理时间作为9个数字的元组,如下所示: 索引字段值 0 2008年4位数字 1个月1至12日 2日1至31日 3小时0到23 4分0至59分 5秒0到61(60或61是闰秒) 6周第0至6周(0为星期一) 7日第1至366日(朱利安日) 8夏令时-1,0,1,-1表示库确定DST 上面的元组相当于struct_time结构。此结构具有以下属性 – 索引属性值 0 tm_year 2008 1 tm_mon 1到12 2 tm_mday 1到31 3 tm_hour 0到23 4 tm_min…

Read More →

控制和循环

控制和循环家庭作业帮助 一般来说,语句依次执行:函数中的第一个语句先执行,后跟第二个语句,依此类推。当您需要执行一段代码多次时可能会出现这种情况。 编程语言提供了允许更复杂的执行路径的各种控制结构。 循环语句允许我们多次执行语句或语句组。下图说明了一个循环语句 – Python编程语言提供以下类型的循环来处理循环需求。 循环类型说明 while循环 在给定条件为TRUE时,重复一个语句或一组语句。它在执行循环体之前测试状态。 for循环 多次执行一系列语句,并缩写管理循环变量的代码。 嵌套循环 你可以使用一个或多个循环内的任何一个,而对于或do..while循环。 循环控制语句 循环控制语句从其正常顺序更改执行。当执行离开范围时,在该范围内创建的所有自动对象都将被销毁。 Python支持以下控制语句。单击以下链接以查看其详细信息。 控制声明说明 断言 终止循环语句并将执行转移到循环之后的语句。 继续说明 导致循环跳过其身体的剩余部分,并在重申之前立即重新测试其状态。 通行证 当语法需要语法但不需要执行任何命令或代码时,Python中的pass语句将被使用。 除了刚才介绍的while语句,Python知道其他语言已知的通常的控制流语句,有一些曲折。 4.1。如果声明 也许最着名的语句类型是if语句。例如: 可以有零个或多个elif部分,else部分是可选的。关键字“elif”是“else if”的缩写,有助于避免过度缩进。如果… elif … elif …序列是替换其他语言中的switch或case语句。 4.2。声明 Python中的for语句与C或Pascal中可能使用的语句有所不同。而不是总是迭代数字的算术进程(如Pascal),或者给予用户定义迭代步骤和停止条件(如C)的能力,Python的for语句迭代任何序列的项目(列表或一个字符串),按顺序显示在序列中。例如(不是双关语): 如果您需要修改循环内的迭代顺序(例如复制所选项目),建议您先复制一份。迭代序列不会隐式地复制。切片符号使此功能更加方便: 4.3。 range()函数 如果你需要迭代一个数字序列,内置的函数范围()就派上用场了。它生成包含算术进度的列表: 给定的终点不是生成的列表的一部分;范围(10)生成10个值的列表,即长度为10的序列的项的合法索引。可以让范围从另一个数字开始,或者指定不同的增量(甚至是负数;有时称为’步’): 要迭代序列的索引,可以将range()和len()组合如下: 然而,在大多数情况下,使用enumerate()函数很方便,请参阅循环技术。 4.4。打破和继续声明,还有循环的条款 break语句就像在C中一样,突破了最小的包围或while循环。 循环语句可能有一个else子句;当循环通过列表的耗尽(与for)或条件变为false(带有while)而循环终止时执行,但是当循环由break语句终止时才执行。这个例子是以下循环,它搜索素数:  (是的,这是正确的代码。仔细看看:else子句属于for循环,而不是ifstatement。) 当与循环一起使用时,else子句与try语句的else子句相同,而不是if语句:在没有异常发生的情况下,try语句的else子句运行,并且在没有发生中断的情况下循环的else子句运行。有关try语句和异常的更多信息,请参阅“处理异常”。 从C中借用的continue语句继续循环的下一个迭代: 通行证不做任何事情。当语法需要语法但程序不需要动作时,可以使用它。例如: 这通常用于创建最小类: 当您使用新的代码时,可以使用另一个地方通行证作为功能或条件机构的占位符,从而使您能够在更抽象的层面上思考。通行证被忽略: 关键词def引入了一个函数定义。它必须跟随函数名称和形式参数的括号列表。形成函数体的语句从下一行开始,必须缩进。 函数体的第一个语句可以可选地是字符串文字;这个字符串字面量是函数的文档字符串或docstring。 (有关文档字符串的更多信息可以在文档字符串部分中找到。)有些工具使用docstrings自动生成在线或打印的文档,或者让用户交互式浏览代码;在你写的代码中包含docstrings是一个很好的做法,所以做一个习惯。 函数的执行引入了用于函数的局部变量的新符号表。更准确地说,函数中的所有变量赋值将存储在本地符号表中的值;而变量引用首先在本地符号表中查找,然后在本地符号表中包含函数,然后在全局符号表中,最后在表中的内置名称。因此,全局变量不能被直接赋予函数内的值(除非在全局语句中命名),尽管它们可能被引用。 函数调用的实际参数(参数)在被调用函数的局部符号表中被引入;因此,使用call的值传递参数(其值始终是对象引用,而不是对象的值)。…

Read More →

Back to Top