2025年python对象没有这个属性(python没有的数据类型)

python对象没有这个属性(python没有的数据类型)svg xmlns http www w3 org 2000 svg style display none svg

大家好,我是讯享网,很高兴认识大家。



 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <blockquote> 

讯享网

原文:AskPython Blog

协议:CC BY-NC-SA 4.0

原文:https://www.askpython.com/python/tuple/python-tuple

  • Python 元组是不可变的序列。
  • 元组是用逗号分隔的值创建的。
  • 因为元组是不可变的,所以我们不能添加或删除它的元素。
  • 如果元组元素不是不可变的,它们的属性可以被改变。但是,我们不能直接改变一个元组元素。
  • 我们可以创建嵌套元组。
  • 我们可以通过元组元素的索引来访问它们。它还支持从末尾到开始引用元素的负索引。
  • 我们还可以将元组元素解包为逗号分隔的值。
  • 创建元组通常是为了存储异构元素。他们也可以有
  • 元组支持两个操作符 : +用于连接,而*用于重复元素。
  • 元组支持切片以从源元组创建另一个元组。
  • 我们可以对元组使用“in”和“not in”操作符来检查元组中是否存在该项目。
  • 由于 tuple 是一个序列,我们可以使用循环中的遍历它的元素。
  • Python tuple 类有两个函数–和。

我们可以通过将元组的所有元素放在用逗号分隔的括号内来创建元组。

讯享网

我们可以在一个元组中保存不同类型的对象。

 

让我们看一个嵌套元组的例子。

讯享网

我们可以通过在括号中不包含任何元素来创建空元组。

 

使用括号创建元组的边界是可选的。但是,使用它是**实践。如果打印元组,元素总是打印在括号内。

讯享网

创建单个条目元组有点棘手。如果你把一个值放在括号里,它不会创建一个元组。它将创建值类型的对象。让我们用一个简单的例子来检验这种行为。

 

输出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
讯享网

我们可以在值后添加一个逗号来创建一个只有一个元素的元组。

讯享网

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Python Tuple With Single Element


我们可以通过元组元素的索引来访问它们。索引值从 0 开始到元组的长度–1。

 

如果元组大小小于指定的索引,则抛出“ IndexError:元组索引超出范围”。

讯享网

元组也支持负索引。在这种情况下,元组元素是从末尾到开头检索的。负索引从-1 开始到-(元组的长度)。

 

如果我们有一个嵌套元组,我们可以通过嵌套索引访问它的元素。

讯享网

我们也可以对嵌套元组使用负索引。

 

下图显示了索引在元组中的工作方式。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Python Tuple Index


我们可以使用切片来创建元组的子集。这在从源元组创建新元组时很有用。切片技术包含两个用冒号分隔的索引。结果中包括左索引,不包括右索引。

讯享网

输出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Slicing Tuple in Python


元组本质上是不可变的。所以我们不能添加、更新或删除它的元素。然而,如果元素是可变的,那么它的属性可以改变。

 

让我们看一个例子,其中元组元素是可变的,我们改变它们的属性。

讯享网

输出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Python Tuple With Mutable Elements


我们不能删除元组的元素。但是,我们可以使用 del 语句删除元组本身。

 

我们可以使用+运算符连接元组元素来创建一个新的元组。

讯享网

Tuple 还支持*操作符创建一个新的 tuple,其中的元素重复给定的次数。

 

tuple 类有两个功能。

  1. count(x) :返回给定元素出现的次数。
  2. index(x,start,end) :返回值的第一个索引。我们可以指定开始和结束索引来查找元组中的值。如果没有找到该值,则引发 ValueError
讯享网

我们可以使用“in”操作符检查元组是否包含元素。类似地,我们可以使用“not in”操作符来测试元素是否不在元组中。

 

我们可以使用 for 循环来遍历元组的元素。

讯享网

如果想以逆序遍历元组,可以使用 reversed()函数。

 

  • 元组是不可变的,而列表是可变的。
  • 元组优于列表,用于在序列中存储不同类型的数据类型。
  • 因为元组是不可变的,所以遍历元组比遍历列表稍微快一点。
  • 元组比列表更能优化内存和空间。
  • 如果要添加,请从序列中删除元素,然后使用 List。

我们还可以使用 tuple()函数来创建一个元组。它接受一个可迭代的参数,比如 List 和 String。这在将其他序列类型转换为元组时很有用。

1.Python 列表到元组

讯享网

2.Python 字符串到元组

 

3.Python 范围到元组

讯享网

元组是 Python 中不可变的序列。当您想要一个只读序列时,请使用元组。


  • tuple()内置函数
  • 元组数据结构

原文:https://www.askpython.com/python-modules/python-turtle

你好,学习伙伴!今天,我们将向您介绍 Python Turtle,它是编码世界中的一只乌龟,只需一些简单的步骤,它就可以在您的屏幕上创建有趣的图形和形状。

我们开始吧!

Python Turtle 通过在虚拟画布上绘制各种东西,帮助用户更好地与编程语言进行交互。

它使用了一种虚拟笔,也就是众所周知的海龟 T1。

在 python turtle 库的帮助下,人们可以绘制和制作不同的形状和图片。大多数情况下,海龟库是用来绘制形状、创造设计和制作图像的。但它也有助于创建迷你游戏和动画。

您需要导入库来使用它的方法和功能。它还附带了一个 Python 标准工具包,因此不需要额外安装。

下一步是创建虚拟画布,在上面绘制各种对象。我们可以根据我们的需要和兴趣来命名画布/屏幕并显示它。下面的代码为用户创建和显示屏幕。

 

上面提到的代码的输出会产生如下所示的屏幕:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Initial Turtle Window

人们可以在这个屏幕上看到代码的输出,屏幕中间的黑色小三角形被称为乌龟,它可以用来绘制所需的形状和对象。

首先,需要创建海龟,然后在海龟上使用定位功能。Turtle 支持四种基本运动,即向前、向后、向左和向右。向前和向后功能需要距离作为参数,另一方面,向左和向右功能需要旋转角度作为参数。下面的代码有助于显示海龟的基本运动操作。

讯享网

代码的输出显示在下图中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Basic Turtle Movement Visualization

利用海龟运动的基本功能,人们可以创造一些基本的形状,如三角形、正方形和长方形。人们也可以创造像星星一样的形状。

1.用乌龟创造五边形

下面的代码在一只蟒蛇龟的帮助下在屏幕上显示了一个五边形。对于正五边形,所有的边都等长,所有的角都等于 72 度。

 

下图显示了上面代码的输出结果,结果是一个五边形。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Making Pentagon Using Turtle

2.和乌龟一起造星

下面的代码在一只乌龟的帮助下在屏幕上显示一颗星星。对于规则的星形,所有的边都等长,所有的角都等于 144 度。

讯享网

下面的图片显示了上面代码的输出结果,得到了一个星形。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Making Star Using Turtle

人们可以改变屏幕、海龟和线条的颜色,使形状看起来更好。下面的代码用不同的颜色显示了一个矩形和一个星形。

 

下图显示了代码的输出。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Making Colorful Turtle Shapes

恭喜你!你现在知道蟒蛇龟了!这个海龟库还可以创建非常复杂的形状,并且有很多颜色。

编码快乐!

希望你学到了一些东西!

原文:https://www.askpython.com/python/built-in-methods/python-type-function

嘿,伙计们!在本文中,我们将从调试Python type()函数的角度来看一下 Python 的一个重要内置函数。


Python type()函数的作用是调试整个程序。type()函数可用于调试代码中各种类和数据变量的数据类型。

type()函数可以用两种变体来表示

  • 带一个参数的 type()函数
  • 带三个参数的 type()函数

在下一节中,我们将了解 Python 中 type()函数的两种变体的功能。


当将单个参数传递给 type()函数时,它将分别返回给定类/对象的数据类型。

语法:

讯享网
  • 它只接受一个单参数
  • 带有单参数的 type()函数返回传递给它的对象的类类型。

举例:

 

在上面的例子中,我们已经创建了不同数据结构的数据对象,如 dict、list 等。此外,我们将它传递给 type()函数来调试对象的类型。

输出:

讯享网

当三个参数被传递给时,它创建并返回一个新类型的对象作为函数的输出。

语法:

 

这三个参数如下

  • :是一个字符串,基本上代表了这个类的名称。
  • :指定主类的基类的元组。
  • :是一个“字典,用于创建指定的类的主体。

因此,带有上述三个参数的 type()函数用于在运行时动态创建类。

举例:

讯享网

在上面的例子中,我们已经在动态运行时创建了类,一个有一个对象类,另一个有“应用”基类。 表示一个类/模块的 dict 参数。

输出:

 

  • 带有单个参数的 type()函数返回参数的类类型,广泛用于代码调试。
  • type()函数和三个参数用于动态创建类,即在运行时创建。

因此,在本文中,我们已经分别理解了 Python type()在不同参数下的工作方式。


  • Python type()函数— JournalDev

原文:https://www.askpython.com/python-modules/python-unittest-module

在本文中,我们将介绍 Python 单元测试模块及其一些常见用例。

但在此之前,我们先了解一下为什么我们需要这个模块。


当您处理大型代码库时,应用程序开发通常分为两个阶段。

  1. 发展阶段
  2. 测试阶段

第一阶段是你的开发阶段,在这里你将你的核心思想构建成一个基本的应用程序。

但是,如果你真的想经常使用它,这是不够的。可能有一些你可能没有注意到的情况,这实际上会导致你的程序意外地工作。

为了最大限度地减少这种错误,还有另一个阶段叫做测试阶段,它旨在测试应用程序的不同可能场景,并检查它是否正常工作。

通常,如果您没有为该阶段建立的框架,您可能需要手动验证所有场景,这很繁琐。

为了减少开发人员的麻烦,我们可以使用 Python 模块,通过使用自动化测试来解决这个问题。

测试类型

对于应用程序,有两种类型的测试:

  • 综合测试
  • 单元测试

集成测试是那些检查一个应用程序的模块是否能一起正常工作的测试。

单元测试是检查应用程序中的小组件。

虽然我们可以编写集成测试和单元测试,但是集成测试非常依赖于您的应用程序,并且可以组合多个单元测试。

至此,让我们来看看如何使用这个模块!


这个模块内置在你的 Python 3+ 安装中,所以没有必要使用 pip 来安装它。

您可以通过键入以下命令来导入该模块:

讯享网

这个模块有几个方法可以用来执行单元测试。

下表列出了最常见的方法。

| 方法 | 断言检查 |
| assertEqual(a,b) | a == b |
| assertNotEqual(a,b) | 答!= b |
| assertTrue(x) | bool(x) is True |
| assertFalse(x) | bool(x)为 False |
| 资产(a,b) | a 是 b |
| 断言 IsNot(a,b) | a 不是 b |
| 阿松酮(x) | x 是零 |
| assertinotone(x) | x 不是没有 |
| assertIn(a,b) | b 中的 a |
| assertNotIn(a,b) | a 不在 b |
| 资产实例(a,b) | isinstance(a,b) |
| assertNotIsInstance(a,b) | not isinstance(a,b) |


我们需要一个程序来进行测试。所以我们写一个吧!

我将编写一个程序,简单地验证列表中元素的总和。我们将为此编写一个单元测试程序。

现在,为了编写一个单独的测试用例,我们需要继承类,然后使用一些特定的方法覆盖它。

我会叫我的班级。

 

注意:为了编写一个测试方法,我们必须在方法名前面加上。因此,任何测试方法都必须是的形式

我正在编写一个方法来检查列表中元素的总和是否等于 15,以及类似的另一个方法来检查给定的字符串。

我正在使用 unittest 的方法,它将运行 unittest 并检查这个断言是否成立。

现在让我们使用 Python 来执行这个文件。

讯享网

如您所见,第一个测试通过了,而第二个测试失败了,因为字符串不匹配。

您现在已经编写了您的第一个单元测试方法!


现在让我们在另一个程序上运行单元测试,因为你不会在一个单元测试文件中编写整个应用程序!

让我们编写一个简单的应用程序,并对其进行单元测试。

我将编写一个程序,作为一个非常简单的数据库来存储学生的名字和分数。

将下面的文件另存为,因为我们将在下一段代码中引用它。

 

运行单元测试的推荐方法

将测试模块与核心应用程序分开是一种常见的做法。

所以我们将只在测试阶段导入模块*。*

Python 允许我们这样做,通过指定选项。所以,我们的命令是:

讯享网

我们将使用 verbose 选项来显示所有有用的消息。

现在,你不需要在你的申请上写!

为了运行单元测试,我们必须为我们的程序编写一个测试文件,类似于我们之前所做的。我们还将通过引用我们之前保存的文件来导入我们之前创建的。

 

现在我们已经分别编写了测试,让我们来验证它是否工作。

讯享网

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Unittest Example

这确实有效,因为我们的测试都通过了!

请注意,我们的最终测试数据库包含来自 Test1 和 Test2 的记录,因此可以根据您的程序来操作测试机制!


希望您现在理解了如何使用 Python 的模块在测试阶段执行健全性检查。如果你有任何疑问,请在下面的评论区提出来!


  • 关于 Python 单元测试模块的 JournalDev 文章
  • 关于 Python unittest 的文章

原文:https://www.askpython.com/python-modules/python-urllib

大家好,欢迎来到另一篇 Python 3 教程文章。在这篇文章中,我们将讨论 Python urllib 库,它是标准库模块的一部分。

Python urllib 的想法是,它允许你通过简单的编程做互联网允许的各种令人惊奇的事情。

因此,让我们开始吧。

你要做的第一件事是你需要导入 URLlib。

现在,如果你来自 python 2.7,你习惯于只导入 urllib,仅此而已。

 

而在 Python 3 及更高版本中,您必须从 urllib 导入请求包。

讯享网

下面是一个访问网站的例子。

1.获取访问网站的请求

 

我们将定义一个变量 x 并调用 urlopen 方法,指定网站的 url。

现在,这将作为 HTTP GET 请求从 URL 获取数据。我们将使用 read()来获取数据。

讯享网

上面的代码片段返回了 google.com 页面的源代码。它返回页面的所有内容,比如 python 控制台上的 html 标记和样式属性。

但是,作为用户,您可能对获取页面的源代码不感兴趣,而只需要文本数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Output Get Request

作为普通用户,你会去等网站的搜索栏,指定你要搜索的内容,点击提交按钮。

您会注意到地址栏中的 URL 变为如下所示的 URL。这个 URL 包含一些?和&是查询参数。

 

为了让你进一步了解。和&是您在搜索栏中提供的搜索查询,这些查询会发布到 URL。您可以向该 URL 发出 POST 请求来检索内容。但是如果你必须从 python 发布呢?

2.发布访问网站的请求

除了请求模块,我们还将导入解析模块,因为这将帮助我们解析请求的值。

讯享网

为了更好地理解 post 请求,我们将使用 python.org 网站。我们将定义一个字典,其中的关键字是“搜索参数”,值是关键字。

 

在指定了 url 参数之后,理解使用 utf-8 标准编码的万维网是很重要的。因此,我们将把我们的 url 转换成编码内容。

然后,我们将把我们的 URL 和编码的数据传递到 req 对象中,并向该对象发出 urlopen 请求。urlopen 的响应存储在 res 对象中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Output POST

这是因为我们在这里发布的网站不允许我们在不使用 API 的情况下访问他们的内容。我们可以使用 RESTFUL APIs 或某些其他头文件来检索数据。我们不会在本文中讨论这个问题。

我们仍然可以将包含所有 HTML 标签的整个网页放入 python 控制台。

希望你已经理解了如何使用 python 向浏览器和站点发出 HTTP GET 和 HTTP POST 请求。请在评论区告诉我们您的反馈,并提及您希望阅读的任何其他主题。

原文:https://www.askpython.com/python/examples/python-user-input

  • Python 用户从键盘输入的内容可以使用 input()内置函数读取。
  • 用户的输入被读取为一个字符串,并可以赋给一个变量。
  • 从键盘输入数值后,我们必须按“输入”按钮。然后,input()函数读取用户输入的值。
  • 程序无限期地暂停,等待用户输入。没有提供超时值的选项。
  • 如果我们输入 EOF *(nix: Ctrl-D,Windows: Ctrl-Z+Return) ,EOFError 被引发,程序终止。

input()函数的语法是:

讯享网

提示字符串打印在控制台上,用户可以控制输入值。您应该打印一些有用的信息来指导用户输入期望值。


下面是一个简单的例子,它获取用户输入并将其打印在控制台上。

 

输出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Python User Input


用户输入的值总是被转换成字符串,然后赋给变量。让我们通过使用 type() 函数得到输入变量的类型来确认这一点。

讯享网

输出:

 

没有办法将整数或任何其他类型作为用户输入。但是,我们可以使用内置函数将输入的字符串转换为整数。

讯享网

输出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Python User Input Integer


当我们进入 EOF 时,input()引发 EOFError 并终止程序。让我们看一个使用 PyCharm IDE 的简单例子。

 

输出:

讯享网

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Python User Input raises EOFError


我们可以通过给用户选择并接受用户的输入来进行选择,从而构建一个智能系统。

 

下面是执行上述程序的输出示例。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Python User Input Choice


在 Python 2.x 版本中,raw_input()函数用于获取用户输入。下面是 Python 2.7 命令行解释器的一个简单示例,展示了 raw_input()函数的用法。

讯享网

该函数已被弃用,并从 Python 3 中移除。如果你还在 Python 2.x 版本,建议升级到 Python 3.x 版本。


在 Python 中,从 input()函数中获取用户输入非常容易。它主要用于为用户提供操作选择,然后相应地改变程序的流程。

但是,程序会无限期地等待用户输入。如果能有一些超时和默认值就好了,以防用户没有及时输入值。

  • Python.org 输入()文档

原文:https://www.askpython.com/python/python-variables

Python 中的变量是一个 标识符 来引用程序中的一个值。变量包含对象的内存位置。它们允许 python 程序访问其他对象,并调用它们的函数或执行其他操作。


定义 python 变量有一些规则。

  1. Python 变量名可以包含小写字母(a-z)、大写字母(A-Z)、数字(0-9)和下划线(_)。
  2. 变量名不能以数字开头。
  3. 我们不能使用保留的 关键字 作为变量名。
  4. Python 变量不能只包含数字。
  5. python 变量名可以以下划线或字母开头。
  6. 变量名区分大小写。
  7. 变量名的长度没有限制。

  • abc
  • _ :是的,我们可以创建一个下划线的变量名。
  • __ :是的,多个下划线也是一个有效的变量名。
  • x_yAB
  • _abc

  • 9abc :变量名不能以数字开头。
  • 123 :变量名不能只包含数字。
  • x-y :变量名中唯一允许的特殊字符是下划线。
  • def :变量名无效,因为它是保留关键字。

Python 是一种动态类型语言。在声明变量时,我们不需要指定变量的类型。变量用等号定义。左边部分包含变量名,右边部分包含变量值。

让我们看一些用 Python 声明变量的例子。

 

Python 也支持多重赋值。我们可以使用多重赋值一次定义多个变量。

讯享网

我们也可以将一个序列赋给一个变量列表。在这种情况下,序列中元素的数量必须等于变量的数量。

 

让我们看看当变量的数量和序列中元素的数量不相等时会发生什么。

讯享网

我们可以使用 python print()函数来打印变量值。让我们看一些用 Python 打印变量值的例子。

 

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

How to Print Python Variable Value

Python 程序是顺序执行的。所以如果你试图在变量定义之前访问它,你会得到。

讯享网

如果你看看上面的代码片段,变量名是随机的。它们没有传达变量的含义。在 Python 中命名变量时,有一些**实践可以遵循。

  1. 变量名只能使用小写字母、数字和下划线。
  2. 如果变量名有多个单词,可以用下划线将它们分开。
  3. 如果变量作用域是私有的,那么你可以用下划线开始它的名字。
  4. 您应该避免变量名以下划线开头和结尾。它们通常由 Python 内置程序使用。
  5. 始终为变量使用有意义的名称。它应该传达数据的类型和变量的预期用途。
  6. 变量名长度没有限制。但是,有一个小而有意义的名字是好的。

基于上面的**实践,我们可以更改上面的代码片段,使其具有正确的变量名。

 

我们不指定 Python 程序中变量的类型。我们可以用 函数来确定变量的类型。让我们看一些打印变量类型的例子。

讯享网

输出:

 

变量的类型是其值的数据类型。Python 是一种面向对象的编程语言。Python 中的一切都是对象。因此,python 变量总是一个类的实例。

  • x = 1 :这里变量‘x’的类型是‘int’。它引用了 int 类的一个实例。
  • message = “Hello” :消息变量的类型为’ str '。

变量作用域定义了程序中变量的可访问区域。Python 变量有两个范围。

  1. 局部范围
  2. 全球范围

Python 中的局部变量

当一个变量被定义在一个函数或类中时,它只能在函数或类中被访问。它们被称为局部变量,它们的作用域仅限于函数或类的边界。

如果我们试图访问一个超出其作用域的局部变量,我们会得到这个变量没有被定义。

让我们用一些例子来理解 python 的局部变量的思想。

讯享网

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Python Local Variable Scope

  • 函数内的能够访问,因为它在它的作用域内。
  • 函数外的不能访问,因为它超出了变量的范围。

让我们看另一个在类内部定义局部变量的例子。变量 scope 是这个场景的类。

 

输出 :


Python 全局变量

当变量不在函数或类中时,可以从程序的任何地方访问它。这些变量被称为全局变量。让我们看看 Python 全局变量的例子。

讯享网

代码块中定义的变量,如 if-else、for 循环、while 循环、try-except 等。被添加到全局范围,前提是声明该变量的代码已经执行。我们用一个简单的例子来理解这一点。

 

未定义 var_else,因为 else 块中的代码未执行。

让我们来看看另一个带有 try-except 块的例子。

讯享网

我们能够访问 try-except 块中定义的变量,因为它们都被执行了。


我们可以使用语句删除一个变量。让我们看一个删除 python 变量的简单例子。

 

类中定义的变量可以用类名来访问。它们也被称为静态变量,因为它们属于类。

讯享网

这些变量也可以从类对象中访问。但是,建议使用类静态访问。

 

Python 编程中没有私有变量的概念。所以,如果你希望一个变量被视为私有的,有一个惯例是以下划线开始名字。这向其他开发人员暗示,这个变量不应该被使用,它可以在将来的任何时候改变它的行为。


  • 函数的作用是:返回当前作用域全局变量的字典。
  • Python locals()函数返回当前作用域局部变量的字典。

我们可以在任何代码位置使用这些函数来检查一个变量在那个位置是否可访问。它们是 Python 中的内置函数。

让我们看看这些函数的一些快速示例。

讯享网

输出:

 

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Python Global and Local Variables


我们可以在函数内部访问一个全局变量。但是我们不能修改它。我们必须使用关键字来改变函数内部的全局变量值。让我们用一个简单的例子来理解这种行为。

讯享网

让我们看看当我们试图修改函数内部的全局变量值时会发生什么。

 

原因很简单。当我们使用赋值操作符来改变“name”的值时,它开始被当作一个局部变量。所以在 print()函数中访问它会抛出一个错误,因为它当时没有被定义。

让我们使用 global 关键字来修改全局变量值。

讯享网

nonlocal 关键字用于访问在块范围之外定义的变量。这在嵌套函数中总是用来访问外部定义的变量。变量总是在最近的封闭范围内搜索,不包括全局变量。

 

每个程序中都要用到变量。它们是一种标识符。我们学习了如何定义一个变量,与它相关的规则,以及如何访问和删除它们。我们还学习了变量作用域——全局和局部。

  • Python 函数
  • Python 中的数据类型
  • Python 列表
  • Python 中的环境变量
  • Python 中的 OOPS
  • Python 类实例变量
  • Python 私有变量

原文:https://www.askpython.com/python/built-in-methods/python-vars-method

大家好!在本文中,我们将看看如何使用 Python vars() 函数,该函数返回对象的属性。

这是一个罕见的函数,但它有助于了解如何使用它,因为它在某些情况下很有用。现在让我们来看看这些情况,使用说明性的例子!


该函数接受一个对象,其形式如下:

讯享网

这将返回的属性,该属性包含对象的所有可写属性。

这里,可以是任何模块/类/类的实例等。

这里有几个例子,取决于参数的类型和数量。

  • 如果你不提供任何参数,Python 将像方法一样,返回一个包含当前本地符号表的字典。
  • 因为它返回属性,如果对象没有这个属性,它将引发一个异常。

现在让我们看一些与不同对象相关的例子。


如前所述,这将充当方法,并返回本地符号表的字典。

 

输出

讯享网

如果是一个类类型,或者是该类的一个实例,让我们看看在这种情况下做了什么。

让我们创建一个示例类并在它的方法上定义一些属性。

 

输出

讯享网

正如您所看到的,对于类实例,返回了所有相关的属性和,以及它们的值。

而在类的情况下,它被封装在模块下,具有方法,以及类的属性。

调用所有的邓德方法,如、等。

因此,如果您可以直接调用这个函数,而不是调用 dunder 方法,会更方便。(尽管没有任何区别)

类似地,你可以在其他对象和类上使用,比如和。

 

这将显示两个类的所有相关属性和实例方法。

我们也可以在一个模块上使用这个函数,找出它包含的所有方法,以及其他相关信息,甚至文档字符串!

比如你要看内置模块,(就是一个复活节彩蛋!)你确实导入了,看看

讯享网

样本输出(最后几行)

 

如果你在一个没有属性的对象(比如)上使用,它将引发一个。

讯享网
 

在本文中,我们研究了 Python vars()函数,如果您想快速获得任何类/模块/对象的属性和所有有代表性的方法,这个函数很有用。


  • 关于 Python vars()函数的 JournalDev 文章

原文:https://www.askpython.com/python/python-vs-julia

在本文中,我们将比较 Python 和 Julia。由麻省理工学院开发的 Julia 编程已经成为从长远来看可能取代 Python 的顶级语言之一。尽管 Julia 的开发者坚信 Julia 和 Python 是携手并进的,但我们试图探究为什么 Julia 可能成为 Python 的潜在替代品。我们将探讨它们的特点和缺点。

Python 和 Julia 都是开源语言,它们是动态类型的,并且有一个与我们的自然语言高度相似的语法。目前稳定版的 Julia 是 1.5.4,python 是 3.9.2。

| | 计算机编程语言 | 朱莉娅 |
| 开发人 | Python 软件基金会 | 用它 |
| /
编译解释 | 解释 | 编辑 |
| 速度 | 慢的 | 快的 |
| 范例 | 面向对象、流行和功能 | 功能的 |
| 类型系统 | 动态类型化 | 动态类型化 |
| 图书馆支持 | 丰富成熟的图书馆支持 | 积极发展的图书馆 |
| 使用
语言的公司 | 谷歌、脸书、Spotify、Quora、
网飞、Reddit 等。 | 亚马逊,苹果,迪斯尼,
福特,谷歌,美国宇航局等。 |
| 发展 | 成熟(3.9.2 版) | 积极开发(v1.5.4) |

Comparison table of Python and Julia

速度

使这篇文章相关的一个非常重要的因素是 Julia 的速度。以下是展示 Julia 速度的基准:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个速度的主要原因是基于 LLVM 的 Julia JIT 编译器。编译器进行了许多高级抽象和优化,以使 Julia 这么快。Julia 解决了两个程序问题,而且大部分的 Julia 和它的库都是用 Julia 本身写的。另一方面,Python 是解释型的,速度较慢,这使得它不适合大型计算。

python 中有一些库,比如 Numba 和 Jax,它们允许使用 JIT 编译器进行快速计算,但这些都是非常特定于应用的

范式

Julia 支持函数式编程,对类型层次结构有现成的支持。Python 允许我们更加灵活地解决我们的程序。Python 支持函数式、面向对象和面向过程的编程。

代码可重用性

Julia 最重要的因素之一是代码的可重用性。代码重用也是面向对象编程的主要特征之一,但事实证明 Julia 的类型系统和多重调度对代码重用更有效。

图书馆支持

Python 有巨大的库支持。你想做的每件事都可以在图书馆里找到。从制造不和谐的机器人到近似的样条插值,一切都是可用的和开源的。Python 已经有 30 多年的历史了,所以这些库大部分都很成熟。python 中很少流行的库/框架有 SciPy 、 Django 、TensorFlow、 Pandas 等。

朱莉娅还提供巨大的图书馆支持,主要倾向于科学研究。这些库正在被快速开发,并且每天都有新的库被开发出来。他们中的大多数还没有达到 1.0 版本,所以这意味着你可能会遇到一些错误。但是这些图书馆做他们最擅长的事情,有些对 Julia 来说是非常独特的。一些非常流行的 Julia 库有 Flux、Pluto、微分方程、JuMP 等。

社区

Python 是非常流行的语言(2021 年前 3)。它拥有大量的社区支持,来自各种背景的人们想出各种方法来帮助和维护社区。Python 编程语言国际社区每年都会召开几次会议(PyCons)。PyCons 托管在世界各地,大部分是由当地 Python 社区的志愿者组织的。在这样的社区活动中,你可以看到从软件开发人员到研究人员到学生的各种人。

朱莉娅也是一个非常包容的社区,人们来自各种背景。Julia 仍然在爬受欢迎的阶梯,所以你不能指望 python 有这么大的社区,但肯定是一个支持者。

朱莉娅对其他语言的支持

Julia 允许用户调用用 C、python、R 等语言编写的代码。朱莉娅会直接打电话给你。这意味着你不需要把所有的代码都转换成 Julia,而是通过使用 Julia 库来调用它们。

结论

Python 和 Julia 各有优缺点。朱莉娅还很年轻,潜力巨大。相比之下,Python 是一种疯狂的流行语言,如果你遇到任何困难,你一定会找到以前解决过这个问题的人!选择永远是你的!如果你喜欢探索新的编程语言,Julia 可以成为你探索的对象。

原文:https://www.askpython.com/python/python-vs-r-programming

你好,初学者!今天我们将比较两种著名的编程语言:Python 和 r。我们将对这两种编程语言都有所了解,然后理解两者之间的区别。

推荐阅读: Python vs Scala 编程

是由 Guido Van Rossem 在 20 世纪 90 年代开发的,强调生产率和代码可读性。这种语言可以用来理解复杂的概念,如数据分析和统计问题。

与其他编程语言相比,这种语言非常灵活、简单、易读,并且更容易被用户理解。如今,Python 正被迅速用于数据科学、机器学习和深度学习。

这种编程语言是由 Ross Ihaka 和 Robert Gentleman 于 1995 年开发的,旨在开发一种专注于呈现更用户友好的方式来执行数据分析、统计和图形建模的语言。

如今,R 已经成为企业界发展最快、最常用的统计语言之一。r 提供了用户贡献的文档和一个非常活跃的堆栈溢出组。

1.灵活性

Python: 为问题创建自己的函数和模型要容易得多
R: 使用已经可用的库要容易得多

2.赞成的意见

Python: 速度更快,用户更容易理解和阅读,易于实现
R: R 使图形可视化美观,更好地进行数据分析

3.骗局

Python: 库的数量比 R 编程语言
R: 少,一开始很难学习和理解

4.语言的主要使用者

Python: 大多数程序员和开发人员都喜欢 Python 编程语言
R: 大多数学者和研究人员都使用 R 编程语言

5.主要用途

Python: 主要用于开发和生产
R: 主要用于数据分析和统计建模

推荐阅读: Python vs Julia 编程

您已到达文章结尾!干得好!所以现在的大问题是:用哪种编程语言:Python vs R?

答案是,这种用法完全取决于你的项目或程序的目标。它还取决于解决方案的时间限制。

R 和 Python 之间的差距一天比一天小,大多数事情都可以使用这两种编程语言来完成。但是有一点是肯定的,学习 Python 比学习 R 编程语言要容易得多。

最后你可以选择最适合你的!希望你喜欢这篇文章!

感谢您的阅读!

原文:https://www.askpython.com/python/python-vs-scala

你好,初学者!今天我们将比较两种编程语言,即 Python 和 Scala。首先,我们将分别理解这两种语言,然后将这两种语言进行相互比较。

属性 Scala 编程语言 Python 编程语言 在性能方面比 Python 快 10 倍慢的 就复杂程度而言Scala 可能比 Python 复杂一点不太复杂 在重构方面重构要容易得多重构会导致 Python 中的错误 项目类型大型项目。小规模项目。 代码测试scala 中的测试要好得多代码测试可能会变得复杂 双语社区不错,但仍不及 Python大型社区

推荐阅读: Python 模块 vs Python 包——有什么区别?

Python 仍然是最流行的开源编程语言之一,并且作为脚本语言和自动化语言被广泛使用。Python 是一种强大、快速、易于学习和理解的语言。

Python 编程语言的优势

  • 易于学习和理解
  • 与许多其他编程语言相比,许多开发人员更喜欢 python
  • 它附带了大量的库、模块和函数
  • 它还支持许多内置函数、数据类型和模块。
  • 它速度很快,是初学者开始开发的**语言之一。

Python 编程语言的缺点

  • Python 是一种动态类型语言,与 C、C++或 Java 相比,它会让计算机消耗更多的时间。
  • 除了时间消耗,Python 编程语言中的内存消耗也很高。

Scala 编程语言是面向对象和函数式编程方法在一种小型高级语言中的结合。

这种语言最初是为 Java 虚拟机(JVM)而构建的,这使得支持 Java 变得更加容易,并且还允许开发人员构建高性能系统,并且可以轻松访问大量的库。

Scala 的优势

  1. 访问 JVM 库以支持 Java
  2. 共享其他流行语言(如 Ruby 和 Java)的几个可读语法方面
  1. 编程语言的代码语言可以变得复杂,因为它既是面向对象的又是函数式编程语言。
  2. 很少有开发者使用 Scala 作为编程语言来开发应用和模型。

就是这样!您已到达文章结尾!

我希望这篇文章对你了解 Python 和 Scala 编程语言有所帮助。本文还讨论了这两种语言之间的一些基本差异。

感谢您的阅读!

原文:https://www.askpython.com/python/examples/python-wait-for-a-specific-time

大家好!在这篇文章中,我们将看看如何在 Python 中等待一个特定的时间。

当您将某些事件或任务安排在特定时间段之后时,这一点尤为重要。

Python 为我们提供了不同的方法来做到这一点。因此,让我们看看我们可以使用的所有方法:在单线程和多线程环境中!


如果你的主程序只包含一个单独的线程/程序,那么 Python 让这变得非常容易。

在 Python 中让程序等待特定时间的一种可能方法是使用 时间 模块。

使用 time.sleep()等待

我们可以用来等待秒。当然,我们可以将设为十进制,这样我们的区间会更精确!

下面是一个简单的例子,它将两个函数调用安排在 3 秒钟之内。

讯享网

输出

 

很简单,对吧?


如果你的程序中有多个线程,你仍然可以通过使用相同的逻辑让一个特定的线程在 Python 中等待特定的时间

下面是一个例子,它产生了 3 个线程,让它们交替休眠一秒钟,而其他线程继续打印从 1 开始的数字。

我们将使用模块并使用来共享和执行线程,同时使用来获取结果。

使用线程生成和获取的基本结构如下:

讯享网

现在,让我们编写主程序的代码。

 

输出

讯享网

如您所见,我们产生了 4 个线程,它们在给出函数结果之前都等待了 1 秒钟。这非常接近 1 秒,所以我们的输出是有意义的!

使用线程。Timer()来调度函数调用

然而,如果你想让一个特定的函数在 Python 中等待特定的时间,我们可以使用来自模块的方法。

我们将展示一个简单的例子,它每 5 秒调度一次函数调用。

 

输出

讯享网

这里,主程序在 5 秒钟之前到达了最后一行,所以 Timer 让程序等待,直到它调用。

在调用之后,它终止程序,因为没有其他东西可以运行。

还要注意,函数的返回值不能被主程序使用。

希望这给了你更多关于安排和等待间隔的想法。


在本文中,我们学习了使用在 Python 中等待一段特定的时间。我们还看到了如何在多线程环境中使用它,以及调度函数调用。

  • 线程计时器上的 Python 文档
  • StackOverflow 问题关于创建时间延迟

原文:https://www.askpython.com/python/python-while-loop

  • Python while 循环用于重复一段代码,直到指定的条件为
  • 当我们不知道代码块必须执行的次数时,就使用 while 循环。
  • 我们应该在编写 while 循环条件时小心谨慎。如果条件从不返回 False,while 循环将进入无限循环。
  • Python 中的每个对象都有一个布尔值。如果值为 0 或无,则布尔值为假。否则,布尔值为真。
  • 我们可以通过实现函数来定义一个对象布尔值。
  • 我们使用保留关键字–while–来实现 Python 中的 while 循环。
  • 我们可以使用 break 语句终止 while 循环。
  • 我们可以在 while 循环中使用 continue 语句来跳过代码块的执行。
  • Python 支持嵌套的 while 循环。

 

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

while Loop Flow Diagram


假设我们必须打印给定次数的消息。我们可以使用 while 循环来编写这个实用程序 函数

讯享网

输出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Python while Loop Example


有时我们明确地想要无限期地执行一个代码块,直到收到退出信号。我们可以使用“while True”block 和 break 语句来实现这个特性。

下面是一个实用程序脚本的例子,它接受用户输入(整数)并打印其平方值。当用户输入 0 时,程序终止。

 

下面是这个程序的示例运行的输出。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Python while Loop with break Statement


假设我们希望上面的脚本只处理正数。在这种情况下,当用户输入负数时,我们可以使用 continue 语句跳过执行。

讯享网

输出:

 

我们可以在 while 循环中使用 else 块。当 while 循环正常终止,即条件变为 False 时,else 块代码将被执行。

如果 while 循环由于 Error 或 break 语句而终止,则不会执行 else 块代码。

讯享网

输出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Python While Loop With Else Block

让我们看看当 while 循环由于错误而终止时会发生什么。

 

输出:

讯享网

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

While Loop Else with Error

让我们更改程序以跳出 while 循环。

 

输出:

讯享网

我们也可以嵌套 while 循环。下面是一个使用嵌套 while 循环生成元组列表的示例。

 

输出 :


Python while 循环用于运行特定次数的代码块。我们可以在 while 循环中使用 break 和 continue 语句。当 while 循环正常终止时,将执行带有 while 循环的 else 块。while 循环在无限循环中无限期运行脚本时也很有用。

小讯
上一篇 2025-05-15 11:36
下一篇 2025-04-16 20:05

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/196810.html