首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

27 个问题,告诉你Python为什么这么设计

为什么有单独的元组和列表数据类型? 列表是如何在CPython实现的? 字典是如何在CPython实现的? 为什么字典key必须是不可变的? 为什么 list.sort() 没有返回排序列表?...最后,它解决了变量赋值的语法问题:为了 Python 的局部变量(根据定义!)...然后,hash代码用于计算内部数组中将存储该的位置。假设您存储的键都具有不同的hash,这意味着字典需要恒定的时间 -- O(1),用Big-O表示法 -- 来检索一个键。...Python使用动态类型。事先不可能知道在运行时引用哪个属性。可以动态地在对象添加或删除成员属性。这使得无法通过简单的阅读就知道引用的是什么属性:局部属性、全局属性还是成员属性?...然而,Python并没有告诉解释器这一点。假设 "a" 是整数,会发生什么?如果有一个名为 "x" 的全局变量,它是否会在with块中使用?您所见,Python动态特性使得这样的选择更加困难。

6.6K11

python变量变量赋值的几种形式

动态类型的语言 python动态类型的语言,不需要声明变量的类型。 实际上,python变量仅仅只是用来保存一个数据对象的地址。...无论是什么数据对象,在内存创建好数据对象之后,都只是把它的地址保存到变量。所以变量名是类型无关的,但它指向的是类型相关的,可以是数值、字符串、列表、函数、类、对象等等。...还有一些有特殊意义的变量命名方式(目前这些内容了解即可): 前缀并后缀双下划线的变量__name__,这种类型的变量python中有特殊意义,属于对象的内置属性,以后学了类和对象就知道了 单下划线前缀的变量...,_x,这类变量不会被from ModuleName import *的方式导入 双下划线前缀的变量__x,这类变量是类的本地变量或称为类的私有变量,它会扩展成__classname_x 除此之外...变量赋值的几种形式细节 本文解释python变量赋值的形式,并解释一些细节。后面还有一篇文章解释python按引用赋值的文章。 python变量赋值的几种形式。

2.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

干货 | 27 个问题,告诉你 Python 为什么如此设计?

返回表示当前目录的文件的字符串列表。如果向目录添加了一两个文件,对此输出进行操作的函数通常不会中断。 元组是不可变的,这意味着一旦创建了元组,就不能用新替换它的任何元素。...只有不变元素可以用作字典的 key,因此只能将元组和非列表用作 key。 18. 列表如何在 CPython 实现? CPython 的列表实际上是可变长度的数组,而不是 lisp 风格的链表。...然后,hash 代码用于计算内部数组中将存储该的位置。假设您存储的键都具有不同的 hash ,这意味着字典需要恒定的时间 -- O(1),用 Big-O 表示法 -- 来检索一个键。 20....Python 使用动态类型。事先不可能知道在运行时引用哪个属性。可以动态地在对象添加或删除成员属性。这使得无法通过简单的阅读就知道引用的是什么属性:局部属性、全局属性还是成员属性?...您所见,Python动态特性使得这样的选择更加困难。 然而,Python 可以通过赋值轻松实现 "with" 和类似语言特性(减少代码量)的主要好处。

2.7K10

Python 核心设计理念27个问题及解答

在 C++ ,可以通过缺少局部变量声明来判断(假设全局变量很少见或容易识别) —— 但是在 Python 没有局部变量声明,所以必须查找类定义才能确定。...最后,它解决了变量赋值的语法问题:为了 Python 的局部变量(根据定义!)...然后,hash 代码用于计算内部数组中将存储该的位置。假设您存储的键都具有不同的 hash ,这意味着字典需要恒定的时间 -- O(1),用 Big-O 表示法 -- 来检索一个键。 20....Python 使用动态类型。事先不可能知道在运行时引用哪个属性。可以动态地在对象添加或删除成员属性。这使得无法通过简单的阅读就知道引用的是什么属性:局部属性、全局属性还是成员属性?...您所见,Python动态特性使得这样的选择更加困难。 然而,Python 可以通过赋值轻松实现 "with" 和类似语言特性(减少代码量)的主要好处。

3.3K21

Python官方二十七问,你知道个啥?

返回表示当前目录的文件的字符串列表。如果向目录添加了一两个文件,对此输出进行操作的函数通常不会中断。 元组是不可变的,这意味着一旦创建了元组,就不能用新替换它的任何元素。...只有不变元素可以用作字典的 key,因此只能将元组和非列表用作 key。 18. 列表如何在 CPython 实现? CPython 的列表实际上是可变长度的数组,而不是 lisp 风格的链表。...然后,hash 代码用于计算内部数组中将存储该的位置。假设您存储的键都具有不同的 hash ,这意味着字典需要恒定的时间 -- O(1),用 Big-O 表示法 -- 来检索一个键。 20....Python 使用动态类型。事先不可能知道在运行时引用哪个属性。可以动态地在对象添加或删除成员属性。这使得无法通过简单的阅读就知道引用的是什么属性:局部属性、全局属性还是成员属性?...您所见,Python动态特性使得这样的选择更加困难。 然而,Python 可以通过赋值轻松实现 "with" 和类似语言特性(减少代码量)的主要好处。

2.5K20

27 个问题,告诉你Python为什么这么设计?

返回表示当前目录的文件的字符串列表。如果向目录添加了一两个文件,对此输出进行操作的函数通常不会中断。 元组是不可变的,这意味着一旦创建了元组,就不能用新替换它的任何元素。...只有不变元素可以用作字典的key,因此只能将元组和非列表用作key。 列表如何在CPython实现? CPython的列表实际上是可变长度的数组,而不是lisp风格的链表。...然后,hash代码用于计算内部数组中将存储该的位置。假设您存储的键都具有不同的hash,这意味着字典需要恒定的时间 -- O(1),用Big-O表示法 -- 来检索一个键。...Python使用动态类型。事先不可能知道在运行时引用哪个属性。可以动态地在对象添加或删除成员属性。这使得无法通过简单的阅读就知道引用的是什么属性:局部属性、全局属性还是成员属性?...然而,Python并没有告诉解释器这一点。假设 "a" 是整数,会发生什么?如果有一个名为 "x" 的全局变量,它是否会在with块中使用?您所见,Python动态特性使得这样的选择更加困难。

3.1K20

干货 | 27 个问题,告诉你 Python 为什么如此设计?

返回表示当前目录的文件的字符串列表。如果向目录添加了一两个文件,对此输出进行操作的函数通常不会中断。 元组是不可变的,这意味着一旦创建了元组,就不能用新替换它的任何元素。...只有不变元素可以用作字典的 key,因此只能将元组和非列表用作 key。 18. 列表如何在 CPython 实现? CPython 的列表实际上是可变长度的数组,而不是 lisp 风格的链表。...然后,hash 代码用于计算内部数组中将存储该的位置。假设您存储的键都具有不同的 hash ,这意味着字典需要恒定的时间 -- O(1),用 Big-O 表示法 -- 来检索一个键。 20....Python 使用动态类型。事先不可能知道在运行时引用哪个属性。可以动态地在对象添加或删除成员属性。这使得无法通过简单的阅读就知道引用的是什么属性:局部属性、全局属性还是成员属性?...您所见,Python动态特性使得这样的选择更加困难。 然而,Python 可以通过赋值轻松实现 "with" 和类似语言特性(减少代码量)的主要好处。

2.6K20

分享 30 道 TypeScript 相关面的面试题

06、TypeScript 中元组与常规数组的区别是什么? 答案:TypeScript 元组是一个数组,其中元素的类型、顺序和数量已知。...另一方面, === 是一个严格的相等运算符,它检查和类型,使其在类型敏感的上下文中更安全、更可预测。 15、如何在 TypeScript 声明只读数组,以及为什么要使用它?...19、如何在 TypeScript 中使用类型断言?何时需要它? 答案:TypeScript 的类型断言是一种告诉编译器将变量视为某种类型的方法。这就像其他语言中的类型转换。...20、描述 TypeScript 索引签名的用途和语法。 答案:TypeScript 的索引签名允许对象具有某种类型的动态属性。...虽然鼓励显式类型,但编译器会尽可能使用上下文(变量初始化、返回语句等)来推断类型。上下文输入等功能有助于函数表达式等场景。 27、什么是类型防护,如何创建自定义类型防护?

60130

python学习笔记之初识Python

(1)输入input()、输出print() 注意输入input()括号是提示符,返回才是输入的数 a=input("请输入一个数") (2)数据类型 1)python中使用变量不需要提前对变量进行声明...(3)python存在一些组合数据类型 元组、列表,其中元组是固定大小的,而列表是可变的,创建列表可以使用[] (4)python传递变量全部都是按照引用传递(不像C++可以选择 、指针和引用...) 这样全都按照引用传递,对应固定类型(字符串、整数、元组)的参数传递其实与C传递类似,而可变类型(列表)的参数传递与C按引用传递类似。...: ? (5)逻辑操作符 1)身份操作符  is 这个是由于前面说到的python变量都是按照引用进行传递的,所以使用is来验证两个变量是否指向的是同一个对象。...这里需要注意的是字符串变量和普通变量的区别,所谓引用其实就是一个“标签”,对内存的某一个或一段数据添加一个“标签”作为别名而已,如果将一个变量赋值成已经存在内存的一个字符串,那么内存中将不再重新存储一遍

94750

Python面试突击

Python动态型语言,即在声明变量时,不需要说明变量的类型的。...Python装饰器是Python的特有变动,可以使修改函数变得更容易。 数组和元组之间的区别是什么? 数组和元组之间的区别:数组内容是可以被修改的,而元组内容是只读的。...另外,元组可以被哈希,比如作为字典的关键字。 参数按传递和引用传递是怎样实现的? Python的一切都是类,所有的变量都是一个对象的引用。引用的是由函数确定的,因此无法被改变。...* Python中文档字符串被称为docstring,它在Python的作用是为函数、模块和类注释生成文档。 如何在Python拷贝一个对象?...如何在一个function里面设置一个全局的变量

1.6K41

前50个Python面试问题(最受欢迎)

这就是Python在处理循环方面与其他编程语言的不同之处。 #9)如何在Python定义数据类型以及整数和十进制数据类型保留多少字节? 答:在Python,无需显式定义变量的数据类型。...根据分配给变量Python存储适当的数据类型。对于整数,浮点数等数字,数据长度是无限的。 #10)如何在Python中使用数组? 答: Python不支持数组。...也可以代替变量使用。 #17)如何在Python完成异常处理? 答:共有3个主要关键字,即try,except和finally,它们用于捕获异常并相应地处理恢复机制。尝试是监视错误代码段。...但是,如果要从主函数开始,则应在源文件中将以下特殊变量设置为: if__name __ ==“ __main__ main() #19)列出Python可用的一些重要模块。...PYTHONSTARTUP:此环境变量包含包含源代码的初始化文件的路径。 PYTHONCASEOK:此变量用于在导入语句中查找第一个不区分大小写的匹配项 #27)什么是Python元组

5.1K30

【16】进大厂必须掌握的面试题-100个python面试

Python的列表和元组有什么区别? LIST TUPLES 列表是可变的,即可以编辑。 元组是 不可变的(元组是无法编辑的列表)。 列表比元组慢。 元组比列表快。...Python动态类型的,这意味着您在声明变量或类似的东西时不需要声明变量的类型。...Python没有访问说明(C ++的public,private)。 在Python,函数是一流的对象。这意味着可以将它们分配给变量,从其他函数返回并传递给函数。...您如何在Python中将列表项随机化?...它可以创建任何基于文本的格式,XML,CSV,HTML等。模板包含在评估模板时将变量替换为变量,以及用于控制模板逻辑的标签(%tag%)。 ?

16.2K30

Python快速学习第一天

第一天: Python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言 一、运行Python: 1、 在交互式环境下,直接输入Python进入Python编程环境 [root@tanggao/...test.py helloworld [root@tanggaopythonwork]# 二、Python中一切皆为对象 类、函数、模块等等一切都是对象 三、数据类型 1、字符串 1.1、如何在Python...1:5]: ('chemistry',1997) print"tup1[1:5]:", tup1[1:3] 7.2、修改元组 元组的元素是不允许修改的,但我们可以对元组进行连接组合,例如: tup1...# tup1[0] = 100; # 创建一个新的元组 tup3 = tup1 + tup2; print tup3; #(12,34.56, 'abc','xyz') 7.3、删除元组 元组的元素是不允许删除的...键必须独一无二,但则不必;可以取任何数据类型,但必须是不可变的,字符串,数或元组。 8.2、访问字典里的 #!

3.7K50

python自测100题「建议收藏」

元组)——元组和列表一样,也是一些的有序集合,区别是元组是不可变的,意味着我们无法改变元组内的。...在call-by-value,表达式或是否绑定到函数的相应变量的参数。Python会将该变量视为函数级范围的本地变量。对该变量所做的任何更改都将保留在本地,并且不会反映在该函数之外。...这是Python的默认操作。不过,如果我们传递字面参数,比如字符串、数字或元组,它们是按传递,这是因为它们是不可变的。 Q40.什么是猴子补丁? 在运行期间动态修改一个类或模块。...它可以创建任何基于文本的格式,XML,CSV,HTML等。模板包含在评估模板时替换为变量和控制模板逻辑的标记(%tag%)。 Q82.在Django框架解释会话的使用?...Q85.如何在NumPy数组获得N个最大的索引?

5.6K20

50道Python面试题集锦(附答案)「建议收藏」

Python是一种解释型语言。与C语言等语言不同,Python不需要在运行之前进行编译。 Python动态语言,当您声明变量或类似变量时,您不需要声明变量的类型。...Python适合面向对象的编程,因为它允许类的定义以及组合和继承。Python没有访问说明(C ++的public,private)。 在Python,函数是第一类对象。它们可以分配给变量。...Q13、如何在Windows上安装Python并设置路径变量?...查找路径变量,选择其并选择“编辑”。 如果不存在,请在的末尾添加分号,然后键入%PYTHON_HOME% Q14、python是否需要缩进? 缩进是Python必需的。它指定了一个代码块。...Q50、如何在Python实现多线程?

10.4K10

python面试题目及答案(数据库常见面试题及答案)

Python是一种解释型语言。与C语言等语言不同,Python不需要在运行之前进行编译。 Python动态语言,当您声明变量或类似变量时,您不需要声明变量的类型。...Python适合面向对象的编程,因为它允许类的定义以及组合和继承。Python没有访问说明(C ++的public,private)。 在Python,函数是第一类对象。它们可以分配给变量。...Q13、如何在Windows上安装Python并设置路径变量?...查找路径变量,选择其并选择“编辑”。 如果不存在,请在的末尾添加分号,然后键入%PYTHON_HOME% Q14、python是否需要缩进? 缩进是Python必需的。它指定了一个代码块。...Q50、如何在Python实现多线程?

11.2K20

100个Python面试问题集锦

Python是一种解释型语言。与C语言等语言不同,Python不需要在运行之前进行编译。 Python动态语言,当您声明变量或类似变量时,您不需要声明变量的类型。...Python适合面向对象的编程,因为它允许类的定义以及组合和继承。Python没有访问说明(C ++的public,private)。 在Python,函数是第一类对象。它们可以分配给变量。...Q13、如何在Windows上安装Python并设置路径变量?...查找路径变量,选择其并选择“编辑”。 如果不存在,请在的末尾添加分号,然后键入%PYTHON_HOME% Q14、python是否需要缩进? 缩进是Python必需的。它指定了一个代码块。...Q50、如何在Python实现多线程?

9.8K20

python自测100题

元组)——元组和列表一样,也是一些的有序集合,区别是元组是不可变的,意味着我们无法改变元组内的。...在call-by-value,表达式或是否绑定到函数的相应变量的参数。Python会将该变量视为函数级范围的本地变量。对该变量所做的任何更改都将保留在本地,并且不会反映在该函数之外。...这是Python的默认操作。不过,如果我们传递字面参数,比如字符串、数字或元组,它们是按传递,这是因为它们是不可变的。 Q40.什么是猴子补丁? 在运行期间动态修改一个类或模块。...它可以创建任何基于文本的格式,XML,CSV,HTML等。模板包含在评估模板时替换为变量和控制模板逻辑的标记(%tag%)。 ? Q82.在Django框架解释会话的使用?...Q85.如何在NumPy数组获得N个最大的索引?

4.6K10
领券