问题1。 Python的主要功能是什么?
python特性如下:
- 解释型
- 动态类型
- 面向对象
- 简洁明了
- 免费自由
- 有一个庞大的社区
Q.2。区分深层和浅层拷贝。
深拷贝将对象复制到另一个对象中。这意味着如果您对对象的副本进行更改,则不会影响原始对象。在Python中,我们使用函数 deepcopy(),我们导入拷贝模块,用法如下:
>>> import copy >>> b=copy.deepcopy(a)
但是,浅拷贝会将一个对象的引用复制到另一个对象。因此,如果我们在副本中进行更改,则会影响原始对象。方法 copy(),用法如下:
>>> b=copy.copy(a)
Q.3。区分列表和元组。
主要区别在于列表是可变的,但元组是不可变的。例子:
>>> mylist=[1,3,3] >>> mylist[1]=2 >>> mytuple=(1,3,3) >>> mytuple[1]=2
Traceback (most recent call last):
File “<pyshell#97>”, line 1, in <module>
mytuple[1]=2
TypeError: ‘tuple’ object does not support item assignment
Q.4。用Python解释三元运算符。
在Python中,与C++不同,我们没有?:,但我们有:
[on true] if [expression] else [on false]
如果表达式为True,则执行[on true]下的语句。否则,在[on false]下执行。
以下是如何使用它:
>>> a,b=2,3 >>> min=a if a<b else b >>> min
2
>>> print("Hi") if a<b else print("Bye")
Hi
Q.5。如何在Python中实现多线程?
线程是一个轻量级的进程,并且多线程允许我们一次执行多个线程。如您所知,Python是一种多线程语言。它有一个multi-threading包。
GIL(全局解释器锁)确保一次执行单个线程。一个线程保存GIL并在将其传递给下一个线程之前做了一些工作。这就产生了并行执行的错觉。但实际上,它只是在CPU上轮流轮流。当然,所有传递都会增加执行的开销。
问题6。在Python中解释继承。
当一个类继承自另一个类时,它被称为继承自parent /base /super类的子类/派生/子类。它继承/获取所有成员(属性和方法)。
继承使我们可以重用我们的代码,并且还可以更轻松地创建和维护应用程序。 Python支持以下类型的继承:
- 单一继承 – 类继承自单个基类。
- 多重继承 – 一个类继承自多个基类。
- 多级继承 – 类继承自基类,而基类又继承自另一个基类。
- 分层继承 – 多个类继承自单个基类。
- 混合遗传 – 混合继承是两种或更多种类型的继承的组合。
Q.7。什么是Flask?
Python Flask正如我们之前讨论的那样,是一个用于Python的Web微框架。它基于’Werkzeug,Jinja 2和良好意图’BSD许可证。它的两个依赖项是Werkzeug和Jinja2。这意味着它几乎不依赖于外部库。因此,我们可以称之为轻型框架。
会话使用签名cookie来允许用户查看和修改会话内容。它会记住从一个请求到另一个请求的信息。但是,要修改会话,用户必须具有密钥Flask.secret_key。
Q.8。如何在Python中管理内存?
Python有一个私有堆空间来容纳所有对象和数据结构。作为程序员,我们无法访问它;由解释器来管理它。但是使用核心API,我们可以访问一些工具。 Python内存管理器控制分配。
此外,内置的垃圾收集器会回收所有未使用的内存,以便可以将其用于堆空间。
Q.9。在Python中解释 help()和 dir()函数。
help()函数显示文档字符串及其参数的帮助。
>>> import copy >>> help(copy.copy)
有关copy模块中的方法copy的帮助:
copy(X)
对任意的浅拷贝操作Python对象。
有关详细信息,请参阅模块的__doc__字符串。
dir()函数显示对象(任何类型)的所有成员。
>>> dir(copy.copy)
[ ‘__annotations__’, ‘__call__’, ‘__class__’, ‘__closure__’, ‘__code__’, ‘__defaults__’, ‘__delattr__’, ‘__dict__’, ‘__DIR__’, ‘__doc__’, ‘__eq__’, ‘__format__’,’ __ge__”, ‘__get__’, ‘__getattribute__’, ‘__globals__’, ‘__gt__’, ‘__hash__’, ‘__init__’, ‘__init_subclass__’, ‘__kwdefaults__’, ‘__le__’, ‘__lt__’, ‘__module__’, ‘__name__’ , ‘__ne__’, ‘__new__’, ‘__qualname__’, ‘__reduce__’, ‘__reduce_ex__’, ‘__repr__’, ‘__setattr__’, ‘__sizeof__’, ‘__str__’, ‘__subclasshook__’]
Q.10。每当你退出Python时,所有内存都是de-allocated吗?
这里的答案是否定的。该模块使用循环引用其他对象或从全局命名空间引用的对象,并不总是在退出Python时释放。
另外,C库保留的部分内存是不可能de-allocate的。
Q.11。什么是monkey补丁?
在run-time上动态修改类或模块。
>>> class A: def func(self): print("Hi") >>> def monkey(self): print "Hi, monkey" >>> m.A.func = monkey >>> a = m.A() >>> a.func() 输出
Hi,monkey
Q.12。 Python中的字典是什么?
A python dictionary 是我从未在其他语言中看到过的东西,比如C++或者Java编程。Python中的字典拥有key-value对。
>>> roots={25:5,16:4,9:3,4:2,1:1} >>> type(roots)
>>> roots[9]
3
字典是可变的,我们也可以使用comprehension来创建它。
>>> roots={x**2:x for x in range(5,0,-1)} >>> roots
{25:5,16:4,9:3,4:2,1:1}
Q.13。 * args和** kwargs是什么意思?
如果我们不知道将多少个参数传递给函数,比如当我们想要传递一个列表或一个元组值时,我们使用* args。
>>> def func(*args): for i in args: print(i) >>> func(3,2,1,4,7)
3
2
1
4
7
**当我们不知道将会有多少关键字参数时,它会获取关键字参数。
>>> def func(**kwargs): for i in kwargs: print(i,kwargs[i]) >>> func(a=1,b=2,c=7)
A.1
B.2
C.7
args和kwargs这个词是一个惯例,我们可以使用任何东西代替它们,但最好延用管理。
Q.14。编写Python逻辑来计算文件中的大写字母数。
>>> import os >>> os.chdir('C:\\Users\\lifei\\Desktop') >>> with open('Today.txt') as today: count=0 for i in today.read(): if i.isupper(): count+=1 print(count)
26
Q.15。什么是负的索引?
我们来看一个list吧。
>>> mylist=[0,1,2,3,4,5,6,7,8]
与正索引不同,负索引从右边开始搜索。
>>> mylist[-3]
6
这也有助于从后面切片:
>>> mylist[-6:-1]
[3,4,5,6,7]
Q.16。你如何本地(in-place)随机化列表的内容?
为此,我们将从random模块中导入函数 shuffle()。
>>> from random import shuffle >>> shuffle(mylist) >>> mylist
[3,4,8,0,5,7,6,2,1]
Q.17。用Python解释 join()和 split()。
join()允许我们通过我们指定的字符将字符串中的字符连接在一起。
>>> ','.join('12345')
“1,2,3,4,5”
split()允许我们在指定的字符周围分割一个字符串。
>>> '1,2,3,4,5'.split(',')
[‘1’,’2’,’3’,’4’,’5’]
问题18。Python是区分大小写(case-sensitive)吗?
如果语言区分myname和Myname之类的标识符,则语言为case-sensitive。换句话说,它关心小写或大写。让我们用Python尝试一下。
>>> myname='Ayushi' >>> Myname
Traceback (most recent call last):
File “<pyshell#3>”, line 1, in <module>
Myname
NameError: name ‘Myname’ is not defined
如您所见,这引发了NameError。这意味着Python确实是case-sensitive。
Q.19。在Python中标识符可以多长?
在Python中,标识符可以是任意长度。除此之外,我们必须遵循一些规则来命名一个:
- 它只能以A-Z或a-z中的字符或下划线开头。
- 其余部分可以包含以下内容:A-Z /a-z /_ /0-9。
- 正如我们在前一个问题中所讨论的那样,Python是区分大小写的(case-sensitive)。
- 关键字不能用作标识符。 Python有以下关键字:
and | def | False | import | not | True |
as | del | finally | in | or | try |
assert | elif | for | is | pass | while |
break | else | from | lambda | with | |
class | except | global | None | raise | yield |
continue | exec | if | nonlocal | return |
问题20。你如何将字符串转换为小写?
我们使用 lower()方法。
>>> 'AyuShi'.lower()
“ayushi”
要将其转换为大写,我们使用 upper()。
>>> 'AyuShi'.upper()
“AYUSHI”
另外,要检查字符串是全部大写还是全部小写,我们使用方法 isupper()和 islower()。
>>> 'AyuShi'.isupper()
False
>>> 'AYUSHI'.isupper()
True
>>> 'ayushi'.islower()
True
>>> '@yu$hi'.islower()
True
>>> '@YU$HI'.isupper()
True
因此,像@和$这样的字符同时满足大小写判断。
此外, istitle()将告诉我们字符串是否属于标题情况。
>>> 'The Corpse Bride'.istitle()
True
Q.21。 Python中的pass语句是什么?
我们的代码中可能有时候还没有决定要做什么,但我们必须输入一些东西才能使它在语法上正确。在这种情况下,我们使用pass语句。
>>> def func(*args): pass >>>
同样,break终止循环。
>>> for i in range(7): if i==3: break print(i)
0
1
2
最后,continue语句跳到下一次迭代。
>>> for i in range(7): if i==3: continue print(i)
0
1
2
4
五
6
Q.22。什么是Python中的闭包?
当嵌套函数引用其封闭范围中的值时,会产生闭包。这里的重点是它记住了价值。
>>> def A(x): def B(): print(x) return B >>> A(7)()
7
有关闭包的更多深度解析,请参阅Python中的闭包。
Q.23。解释Python中的//,%和**运算符。
//运算符执行除法(floor division)。它将返回除法结果的整数部分。
>>> 7.0//2
3
普通除法将在这里返回3.5。
同样,**执行取幂。
>>> 2**10
1024
最后,%是模数。
>>> 13%7
6
>>> 3.5%1.5
0.5
问题24。什么是membership操作符?
通过操作符’in’和’not in’,我们可以确认某个值是否是另一个的成员。
>>> 'me' in 'disappointment'
真正
>>> 'us' not in 'disappointment'
真正
Q.25。在Python中解释identity运算符。
操作符’是’和’不’告诉我们两个值是否具有相同的身份。
>>> 10 is '10'
False
>>> True is not False
True
Q.26。Python除了10进制,还可以使用那些进制?
在Python中,可以用二进制,八进制和十六进制输入数字。
- 二进制数由0和1组成。要输入二进制,我们使用前缀0b或0B。
>>> int(0b1010)
10
要将数字转换为二进制形式,我们使用 bin()。
>>> bin(0xf)
“0b1111”
- 八进制数可以包含0到7之间的数字。我们使用前缀0o或0O。
>>> oct(8)
“0o10”
- 十六进制数字可以包含0到15之间的数字。我们使用前缀0x或0X。
>>> hex(16)
“为0x10”
>>> hex(15)
“0xf”
问题27。如何获得字典中所有键的列表?
使用函数 keys()。
>>> mydict={'a':1,'b':2,'c':3,'e':5} >>> mydict.keys()
dict_keys([‘a’,’b’,’c’,’e’])
Q.28。带有前导下划线的标识符的意义?
由于Python没有私有变量的概念,因此使用前导下划线来声明变量private是一种惯例。这就是为什么我们不能对我们不想私有的变量这样做。
Q.29。如何在一个语句中声明多个赋值?
有两种方法可以做到这一点:
>>> a,b,c=3,4,5 #This assigns 3, 4, and 5 to a, b, and c respectively >>> a=b=c=3 #This assigns 3 to a, b, and c
Q.30。什么是tuple unpacking?
这是一种将一组值打包成元组的方法。
>>> mytuple=3,4,5 >>> mytuple
(3,4,5)
这将3,4和5打包成mytuple。
现在,我们将元组中的值解包为变量x,y和z(tuple unpacking)。
>>> x,y,z=mytuple >>> x+y+z
12