实际上,Python是一种部分编译和部分解释的语言。当我们执行代码时,首先完成编译部分,这将在内部生成字节码,该字节码由Python虚拟机(pvm)根据底层平台(机器+操作系统)进行转换。
’#’ 用于注释该行后面的所有内容。
可变数据类型可以编辑,即它们可以在运行时更改。例如,列表、字典等。 不可变数据类型无法编辑,即它们无法在运行时更改。例如——字符串、元组等。
Python 中的一切都是对象,所有变量都保存对对象的引用。参考值根据功能而定;因此,您无法更改引用的值。但是,如果对象是可变的,您可以更改它。
集合是数据类型的无序集合,可迭代、可变且没有重复元素。 Python中的字典是数据值的无序集合,用于像地图一样存储数据值。
列表理解是一种语法构造,可简化基于现有可迭代对象的列表的创建。
例如:
my_list = [i for i in range(1, 10)]
lambda 函数是匿名函数。该函数可以有任意数量的参数,但只能有一个语句。例如:
a = lambda x, y : x*y print(a(7, 19))
pass表示不执行任何操作,或者说,它是复合语句中的占位符,其中应该留有空白,并且可以不写任何内容。
// 代表楼层划分,/ 代表精确划分。例如:
5//2 = 2 5/2 = 2.5
有3个主要关键字,即try、 except和finally,用于捕获异常并相应地处理恢复机制。Try 是监视错误的代码块。发生错误时执行 except 块。
最后一个块的优点是在尝试错误后执行代码。无论是否发生错误,该块都会被执行。最后,块用于执行对象/变量所需的清理活动。
它是一个字符串函数,可将所有大写字符转换为小写字符,反之亦然。它用于更改字符串的现有大小写。此方法创建包含交换大小写中所有字符的字符串副本。例如:
string = "GeeksforGeeks" string.swapcase() ---> "gEEKSFORgEEKS"
“for”循环通常用于迭代各种集合类型的元素,例如List、Tuple、Set和Dictionary。开发人员使用“for”循环,其中有条件开始和结束。而“while”循环是任何其他编程语言中使用的实际循环功能。程序员使用 Python while 循环,其中只有结束条件。
是的,可以将多个参数传递给函数,包括对象、变量(具有相同或不同的数据类型)和函数。函数可以作为参数传递给其他函数,因为它们是对象。高阶函数是可以将其他函数作为参数的函数。
要将可变数量的参数传递给 Python 中的函数,请在函数规范中使用特殊语法args 和 *kwargs 。它用于传递可变长度、无关键字参数列表。通过使用 *,我们与 * 关联的变量变得可迭代,允许您对其进行操作,例如迭代它以及使用映射和过滤器等高阶操作。
是的,Python 中需要缩进。通过使用 Python 缩进, Python解释器可以获知一组语句属于特定的代码块。缩进使所有编程语言的开发人员都可以轻松阅读代码,但在 Python 中,按特定顺序缩进代码非常重要。
我们可以找到变量并在需要时访问它的位置称为变量的范围。
Python 文档字符串(或文档字符串)提供了一种将文档与 Python 模块、函数、类和方法关联起来的便捷方法。
类型化语言是我们定义数据类型的语言,机器在编译时或运行时会知道它。类型语言可以分为两类:
Break 语句用于终止它所在的循环或语句。之后,控制权将传递给break语句之后出现的语句(如果可用)。
和break语句一样, Continue也是一个循环控制语句。continue语句与break语句相反,它不是终止循环,而是强制执行循环的下一次迭代。
以下是 Python 中的标准或内置数据类型:
数值: Python 中的数值数据类型表示具有数值的数据。数值可以是整数、浮点数、布尔值,甚至是复数。
序列类型:
Python 中的序列数据类型是相似或不同数据类型的有序集合。Python中有几种序列类型:
Python范围
映射类型:
在Python中,可以使用映射对象将可哈希数据映射到随机对象。目前只有一种常见的映射类型,字典,并且映射对象是可变的。
Python 字典
集合类型:在Python中,集合是数据类型的无序集合,它是可迭代的、可变的并且没有重复元素。尽管集合可能由各种元素组成,但集合中元素的顺序是未定义的。
Python 数学模块包含一个可用于计算数字下限的方法。
range() 和 xrange() 是两个函数,可用于在 Python 中的 for 循环中迭代一定次数。在 Python 3 中,没有 xrange,但 range 函数的行为类似于 Python 2 中的 xrange。
字典理解是一种语法构造,可以简化基于现有可迭代对象的字典的创建。
例如:my_dict = {i:1+7 for i in range(1, 10)}
(i for i in (1, 2, 3))
元组理解在 Python 中是不可能的,因为它最终会出现在生成器中,而不是元组理解。
我们来分析一下List和Tuple的区别:
列表
元组
创建新实例类型时使用浅复制,它保留复制的值,而深复制则存储已复制的值。
浅拷贝具有更快的程序执行速度,而深拷贝则使其速度变慢。
Python 使用Tim Sort算法进行排序。这是一种稳定的排序,最坏情况是 O(N log N)。它是一种混合排序算法,源自合并排序和插入排序,旨在对多种实际数据表现良好。
装饰器是 Python 中非常强大且有用的工具,因为它们是我们在 Python 语法中进行的特定更改,以便轻松更改函数。
通过使用这个命令我们可以调试Python程序:
$ python -m pdb python-script.py
在 Python 中,迭代器用于迭代一组元素、容器(例如列表)。迭代器是项目的集合,它们可以是列表、元组或字典。Python 迭代器实现 itr 和 next() 方法来迭代存储的元素。我们通常使用循环来迭代Python中的集合(列表、元组)。
在Python中,生成器是一种指定如何实现迭代器的方式。它是一个普通函数,只不过它在函数中产生表达式。它不实现 itr 和 next() 方法,并减少其他开销。
如果一个函数至少包含一个yield语句,它就成为一个生成器。Yield 关键字通过保存其状态来暂停当前执行,然后在需要时从相同状态恢复。
与 Java 不同,Python 确实支持多重继承。多重继承意味着一个类可以从多个父类派生。
多态性意味着采取多种形式的能力。因此,例如,如果父类有一个名为 ABC 的方法,那么子类也可以有一个具有相同名称 ABC 的方法,并且有自己的参数和变量。Python 允许多态性。
封装意味着将代码和数据绑定在一起。Python 类是封装的一个示例。
数据抽象仅提供所需的细节,并向外界隐藏实现。在Python中可以通过使用接口和抽象类来实现。
Python 使用其私有堆空间来管理内存。基本上,所有的对象和数据结构都存储在私有堆空间中。即使程序员也无法访问这个私有空间,因为解释器会处理这个空间。Python还有一个内置的垃圾收集器,它回收所有未使用的内存并释放内存并使其可供堆空间使用。
我们可以通过以下方式使用Python删除文件:
Python 切片是一种字符串操作,用于提取字符串的一部分或列表的一部分。使用此运算符,可以指定切片开始位置、结束位置以及指定步骤。列表切片从现有列表中返回一个新列表。
语法:Lst[ 初始 : 结束 : IndexJump ]
命名空间是一种命名系统,用于确保名称唯一以避免命名冲突。
PIP 是 Python Installer Package 的缩写,它提供了安装各种 Python 模块的无缝接口。它是一个命令行工具,可以通过互联网搜索软件包并安装它们,而无需任何用户交互。
Python zip() 函数返回一个 zip 对象,该对象映射多个容器的相似索引。它接受一个可迭代对象,将其转换为迭代器,并根据传递的可迭代对象聚合元素。它返回元组的迭代器。
Pickle 模块接受任何 Python 对象并将其转换为字符串表示形式并使用 dump 函数将其转储到文件中,这个过程称为 pickling。从存储的字符串表示中检索原始 Python 对象的过程称为 unpickling。
在Python中,术语“猴子补丁”仅指在运行时动态修改类或模块。
# g.py class GeeksClass: def function(self): print "function()" import m def monkey_function(self): print "monkey_function()" m.GeeksClass.function = monkey_function obj = m.GeeksClass() obj.function()
init 相当于 OOP 术语中的构造函数,是 Python 类中的保留方法。每当启动新对象时,都会自动调用 init 方法。该方法在新对象创建后立即为其分配内存。该方法也可用于初始化变量。
currenttime= time.localtime(time.time()) print (“Current time is”, currenttime)
Python 使用“_”符号来确定对特定数据成员或类的成员函数的访问控制。Python 中的类具有三种类型的Python 访问修饰符:
单元测试是软件测试的第一级,其中测试软件的最小可测试部分。这用于验证软件的每个单元是否按设计运行。单元测试框架是Python的xUnit风格的框架。白盒测试方法用于单元测试。
Python 全局解释器锁(GIL) 是 Python 处理进程时使用的一种进程锁。一般来说,Python只使用一个线程来执行一组书面语句。Python 中单线程进程和多线程进程的性能是相同的,这是因为 Python 中的 GIL。我们无法在Python中实现多线程,因为我们有一个全局解释器锁来限制线程并作为单线程工作。
函数注释是一项允许您将元数据添加到函数参数和返回值的功能。这样你就可以指定函数参数的输入类型和函数返回值的返回类型。
函数注释是与函数各个部分相关联的任意 Python 表达式。这些表达式在编译时计算,在 Python 的运行时环境中没有生命力。Python 没有为这些注释赋予任何含义。当由第三方库(例如 mypy)解释时,它们会被夺走生命。
Python 3.11 的最新功能,异常组。可以使用新的 except 语法来处理 ExceptionGroup。 符号表示每个 except* 子句可以处理多个异常。
ExceptionGroup 是不同类型异常的集合/组。在不创建多个异常的情况下,我们可以将不同的异常分组在一起,以后在需要时可以一一获取,异常在异常组中的存储顺序在调用它们时并不重要。
try: raise ExceptionGroup('Example ExceptionGroup', ( TypeError('Example TypeError'), ValueError('Example ValueError'), KeyError('Example KeyError'), AttributeError('Example AttributeError') )) except* TypeError: ... except* ValueError as e: ... except* (KeyError, AttributeError) as e: ...
从 3.10 版本开始,Python 实现了一个称为“结构模式匹配”的 switch case 功能。您可以使用 match 和 case 关键字来实现此功能。请注意,下划线符号用于定义 Python 中 switch 语句的默认情况。
注意:在 Python 3.10 之前,Python 不支持 match 语句。
match term: case pattern-1: action-1 case pattern-2: action-2 case pattern-3: action-3 case _: action-default