我们整理了Python面试的主要问题清单,分为7个部分:
LIST | TUPLES |
---|---|
列表是可变的,即可以编辑。 | 元组是 不可变的(元组是无法编辑的列表)。 |
列表比元组慢。 | 元组比列表快。 |
语法:list_1 = [10,'全栈程序员社区',20] | 语法:tup_1 =(10,'全栈程序员社区',20) |
x=111
,然后x="I'm mushiming"
没有错误public
,private
)。回答: Python能够编写脚本,但从一般意义上讲,它被认为是一种通用编程语言。
回答:解释语言是在运行时之前不在机器级别代码中的任何编程语言。因此,Python是一种解释型语言。
回答: PEP代表Python增强建议书。这是一组规则,用于指定如何格式化Python代码以实现最大的可读性。
答:
回答:命名空间是用于确保名称唯一以避免命名冲突的命名系统。
回答:这是一个环境变量,在导入模块时使用。每当导入模块时,都会查找PYTHONPATH以检查各个目录中是否存在导入的模块。解释器使用它来确定要加载哪个模块。
回答: Python模块是包含Python代码的文件。该代码可以是函数类或变量。Python模块是包含可执行代码的.py文件。
一些常用的内置模块是:
全局变量:
在函数外部或全局空间中声明的变量称为全局变量。程序中的任何函数都可以访问这些变量。
局部变量:
在函数内部声明的任何变量都称为局部变量。此变量存在于局部空间而不是全局空间中。
例:
a=2
def add():
b=3
c=a+b
print(c)
add()
输出: 5
当您尝试在函数add()之外访问局部变量时,它将引发错误。
答:是的。Python是区分大小写的语言。
回答:类型转换是指将一种数据类型转换为另一种数据类型。
int() –将任何数据类型转换为整数类型
float() –将任何数据类型转换为float类型
ord() –将字符转换为整数
hex()–将整数转换为十六进制
oct() –将整数转换为八进制
tuple()–此函数用于转换为元组。
set()–此函数在转换为set后返回类型。
list()– 此函数用于将任何数据类型转换为列表类型。
dict()– 此函数用于将顺序(键,值)的元组转换为字典。
str()– 用于将整数转换为字符串。
复数(实数,imag)– 此函数将实数转换为复数(实数,imag)。
Q13。如何在Windows上安装Python并设置路径变量?
回答:要在Windows上安装Python,请执行以下步骤:
回答:缩进对于Python是必需的。它指定一个代码块。循环,类,函数等中的所有代码都在缩进块中指定。通常使用四个空格字符来完成。如果您的代码没有必要缩进,那么它将无法正确执行,并且也会引发错误。
回答:在Python中,数组和列表具有相同的数据存储方式。但是,数组只能容纳一个数据类型元素,而列表可以容纳任何数据类型元素。
例:
import array as arr
My_Array=arr.array('i',[1,2,3,4])
My_list=[1,'system_mush',1.20]
print(My_Array)
print(My_list)
输出:
array('i', [1, 2, 3, 4]) [1, 'system_mush', 1.2]
回答:函数是仅在调用时才执行的代码块。要定义Python函数,可以使用def关键字。
例:
def Newfunc():
print("您好,欢迎关注Java架构师社区公众号")
Newfunc(); #calling the function
输出:您好,欢迎关注Java架构师社区公众号
回答: init是Python中的方法或构造函数。创建类的新对象/实例时,将自动调用此方法以分配内存。所有类都具有init方法。
这是一个如何使用它的例子。
class Employee:
def __init__(self, name, age,salary):
self.name = name
self.age = age
self.salary = 20000
E1 = Employee("XYZ", 23, 20000)
# E1 is the instance of class Employee.
#__init__ allocates memory for E1.
print(E1.name)
print(E1.age)
print(E1.salary)
输出:
XYZ
23
20000
回答:匿名函数称为lambda函数。此函数可以具有任意数量的参数,但是只能有一个语句。
例:
a = lambda x,y : x+y
print(a(5, 6))
输出: 11
回答:
Self是类的实例或对象。在Python中,这明确包含为第一个参数。但是,在Java中不是这种情况,它是可选的。它有助于区分具有局部变量的类的方法和属性。
init方法中的self变量引用新创建的对象,而其他方法中的self变量引用其方法被调用的对象。
Break | 当满足某些条件并将控制权转移到下一条语句时,允许循环终止。 |
---|---|
Continue | 当满足某些特定条件并将控制权转移到循环的开始时,允许跳过循环的某些部分 |
Pass | 在语法上需要一些代码块,但想跳过其执行时使用。这基本上是一个空操作。当执行此操作时,没有任何反应。 |
回答: [::-1]用于反转数组或序列的顺序。
例如:
import array as arr
My_Array=arr.array('i',[1,2,3,4,5])
My_Array[::-1]
输出:array('i',[5,4,3,2,1])
[::-1]重印有序数据结构(如数组或列表)的反向副本。原始数组或列表保持不变。
答: 请看下面的例子:
from random import shuffle
x = ['Keep', 'The', 'Blue', 'Flag', 'Flying', 'High']
shuffle(x)
print(x)
以下代码的输出如下。
['Flying', 'Keep', 'Blue', 'High', 'The', 'Flag']
回答:迭代器是可以遍历或迭代的对象。
回答: 随机模块是用于生成随机数的标准模块。该方法定义为:
import random
random.random
语句random.random()方法返回[0,1)范围内的浮点数。该函数生成随机浮点数。随机类使用的方法是隐藏实例的绑定方法。可以完成Random实例来显示创建单个线程的不同实例的多线程程序。在此使用的其他随机生成器是:
回答: 就功能而言,在大多数情况下,xrange和range完全相同。它们都提供了一种生成整数列表供您使用的方法,但是您可以随意使用。唯一的区别是range返回一个Python列表对象,而x range返回一个xrange对象。
这意味着xrange在运行时实际上不会像range那样生成静态列表。它使用称为yield的特殊技术根据需要创建值。该技术与一种称为生成器的对象一起使用。这意味着,如果您的范围非常大,则想生成一个列表(例如十亿),则可以使用xrange函数。
如果您有一个真正的内存敏感系统(例如正在使用的手机),则尤其如此,因为range将使用尽可能多的内存来创建整数数组,这可能导致内存错误并使您的崩溃程序。
回答: Python中的注释以#字符开头。但是,有时也可以使用docstrings(用三引号引起来的字符串)进行注释。
例:
#Comments in Python start like this
print("Comments in Python start with a #")
输出: Python中的注释以#开头
Comments in Python start with a #
回答: Pickle模块接受任何Python对象并将其转换为字符串表示形式,并使用转储函数将其转储到文件中,此过程称为pickling。从存储的字符串表示形式检索原始Python对象的过程称为unpickling。
回答:返回可迭代项目集的函数称为生成器。
回答:在Python中,capitalize()方法将字符串的首字母大写。如果字符串开头已经由大写字母组成,那么它将返回原始字符串。
回答:要将字符串转换为小写,可以使用lower()函数。
例:
stg='ABCD'
print(stg.lower())
输出:
abcd
回答:多行注释出现在多行中。所有要注释的行都以#开头。您也可以使用非常好的 快捷方式注释多行。您需要做的就是按住ctrl键,并 在要包含#个字符的任何地方单击鼠标左键,然后只键入一次#。这将注释您引入光标的所有行。
回答:*文档字符串实际上不是注释,但是它们是 文档字符串*。这些文档字符串用三引号引起来。它们没有分配任何变量,因此有时也可以用作注释的目的。
例:
"""
Using docstring as a comment.
This code divides 2 numbers
"""
x=8
y=4
z=x/y
print(z)
输出: 2.0
回答:运算符是特殊功能。它们采用一个或多个值并产生相应的结果。
is:当两个操作数为true时返回true(例如:“ a”为“ a”)
not:返回布尔值的倒数
in:检查某个元素是否以某种顺序存在
回答: Help()和dir()这两个函数都可以从Python解释器访问,并用于查看内置函数的合并转储。
答:
回答: Python中的内置数据类型称为字典。它定义了键和值之间的一对一关系。字典包含一对键及其对应的值。字典由键索引。
让我们举个例子:
下面的示例包含一些键。国家,首都和总理。它们对应的值分别是印度,德里和莫迪。
dict={'Country':'India','Capital':'Delhi','PM':'Modi'}
print dict[Country]
输出:India
print dict[Capital]
输出:Delhi
print dict[PM]
输出:Modi
答案: 三元运算符是用于显示条件语句的运算符。它由true或false值以及必须对其评估的语句组成。
语法:
三元运算符将为: [on_true]如果[expression]否则[on_false] x,y = 25,50big = x如果x <y否则
例:
该表达式的求值方式类似于x < y else y,在这种情况下,如果x < y为true,则该值以big = x返回,如果不正确,则将发送big = y。
回答: 当我们不确定要向函数传递多少个参数时,或者如果要将存储的参数列表或元组传递给函数时,可以使用 args。** kwargs在我们不知道将多少个关键字参数传递给一个函数时使用,或者可用于将字典的值作为关键字参数传递。标识符args和kwargs是一个约定,您也可以使用 bob和** billy,但这并不明智。
Ans:用于确定字符串,列表,数组等的长度。
例:
stg='ABCD'
len(stg)
回答: 为了修改字符串,Python的“ re”模块提供了3种方法。他们是:
回答: Python中的序列已编入索引,并且由正数和负数组成。正数使用“ 0”作为第一个索引,使用“ 1”作为第二个索引,过程继续进行。
负数的索引从代表序列中最后一个索引的“ -1”开始,而倒数第二个索引则是“ -2”,并且该序列像正数一样前移。
负索引用于从字符串中删除任何换行符,并允许字符串除以S [:-1]给出的最后一个字符外。负索引还用于显示索引以正确的顺序表示字符串。
回答: Python软件包是包含多个模块的名称空间。
回答:要在Python中删除文件,您需要导入OS模块。之后,您需要使用os.remove()函数。
例:
import os
os.remove("xyz.txt")
回答: Python中的内置类型如下:
答:
回答:可以使用append(), extend() 和 insert(i,x) 函数将元素添加到数组 。
例:
a=arr.array('d', [1.1 , 2.1 ,3.1] )
a.append(3.4)
print(a)
a.extend([4.5,6.3,6.8])
print(a)
a.insert(2,3.8)
print(a)
输出:
array('d',[1.1,2.1,3.1,3.4])
array('d',[1.1,2.1,3.1,3.4,4.5,6.3,6.8])
array('d',[1.1,2.1,3.8,3.1,3.4,4.5,6.3,6.8])
回答:可以使用pop() 或 remove() 方法删除数组元素 。这两个函数的区别在于前者返回删除的值,而后者不返回。
例:
a=arr.array('d', [1.1, 2.2, 3.8, 3.1, 3.7, 1.2, 4.6])
print(a.pop())
print(a.pop(3))
a.remove(1.1)
print(a)
输出:
4.6
3.1
array('d',[2.2,3.8,3.7,1.2])
回答: Python是一种面向对象的编程语言。这意味着可以通过创建对象模型在python中解决任何程序。但是,Python既可以当作过程语言,也可以当作结构语言。
回答: 创建新实例类型时,将使用浅表副本,并且它将复制的值保留在新实例中。浅复制用于复制参考指针,就像复制值一样。这些引用指向原始对象,并且在类的任何成员中所做的更改也会影响其原始副本。浅拷贝允许更快地执行程序,并且取决于所使用的数据大小。
深度复制用于存储已复制的值。深层复制不会将引用指针复制到对象。它引用一个对象,并存储其他对象指向的新对象。在原始副本中所做的更改不会影响使用该对象的任何其他副本。由于为每个被调用的对象制作了某些副本,因此深层复制会使程序的执行速度变慢。
答:
回答: 编译和链接允许正确扩展新扩展名,而不会出现任何错误,并且只有在通过编译过程时才能进行链接。如果使用动态加载,则取决于系统提供的样式。python解释器可用于提供配置设置文件的动态加载,并将重新构建解释器。
在此所需的步骤为:
Python库是Python软件包的集合。一些最常用的python库是– Numpy,Pandas,Matplotlib,Scikit-learn等。
split()方法用于在Python中分隔给定的字符串。
例:
a="edureka python"
print(a.split())
输出: ['edureka','python']
Q54。 如何在python中导入模块?
可以使用import 关键字导入模块。您可以通过三种方式导入模块:
例:
import array #importing using the original module name
import array as arr # importing using an alias name
from array import * #imports everything present in the array module
答案: 继承允许一个类获取另一类的所有成员(例如属性和方法)。继承提供了代码可重用性,使创建和维护应用程序变得更加容易。我们继承的类称为超类,而继承的类称为派生/子类。
它们是Python支持的不同类型的继承:
回答: Python中的类是使用class关键字创建的。
例:
class Employee:
def __init__(self, name):
self.name = name
E1=Employee("abc")
print(E1.name)
输出: abc
回答: 在Python中,术语“猴子补丁”仅指运行时对类或模块的动态修改。
考虑以下示例:
# m.py
class MyClass:
def f(self):
print "f()"
然后我们可以像这样运行猴子补丁测试:
import m
def monkey_f(self):
print "monkey_f()"
m.MyClass.f = monkey_f
obj = m.MyClass()
obj.f()
输出如下:
monkey_f()
如我们所见,我们使用模块m之外 定义的函数 Monkey_f() 对 MyClass 中 f()的行为进行了一些更改。
回答:多重继承意味着一个类可以从多个父类派生。与Java不同,Python确实支持多重继承。
回答:多态性是指采取多种形式的能力。因此,例如,如果父类具有一个名为ABC的方法,则子类也可以具有一个具有相同名称和参数的ABC方法。Python允许多态。
回答:封装意味着将代码和数据绑定在一起。封装示例中的Python类。
回答:数据抽象仅提供所需的详细信息,并从世界中隐藏实现。这可以在Python中通过使用接口和抽象类来实现。
回答: Python不会剥夺对实例变量或函数的访问权限。Python提出了在变量,函数或方法的名称前加上单下划线或双下划线的概念,以模仿受保护和专用访问说明符的行为。
回答:空类是在其块内未定义任何代码的类。可以使用pass 关键字创建它 。但是,您可以在类本身之外创建此类的对象。在PYTHON中,PASS命令在执行时不执行任何操作。这是一个空语句。
例如-
class a:
pass
obj=a()
obj.name="xyz"
print("Name = ",obj.name)
输出:
名称= xyz
回答:它返回一个无特征的对象,该对象是所有类的基础。而且,它不带任何参数。
def bs(a): # a = name of list
b=len(a)-1 # minus 1 because we always compare 2 adjacent values
for x in range(b):
for y in range(b-x):
if a[y]>a[y+1]:
a[y],a[y+1]=a[y+1],a[y]
return a
a=[32,5,3,6,7,54,87]
bs(a)
输出: [3、5、6、7、32、54、87]
def pyfunc(r):
for x in range(r):
print(' '*(r-x-1)+'*'*(2*x+1))
pyfunc(9)
输出:
*
***
*****
*******
*********
***********
*************
***************
*****************
# Enter number of terms needed #0,1,1,2,3,5....
a=int(input("Enter the terms"))
f=0 #first element of series
s=1 #second element of series
if a<=0:
print("The requested series is
",f)
else:
print(f,s,end=" ")
for x in range(2,a):
next=f+s
print(next,end=" ")
f=s
s=next</pre>
输出:输入术语5 0 1 1 2 3
a=int(input("enter number"))
if a>1:
for x in range(2,a):
if(a%x)==0:
print("not prime")
break
else:
print("Prime")
else:
print("not prime")
输出:
输入数字3
a=input("enter sequence")
b=a[::-1]
if a==b:
print("palindrome")
else:
print("Not a Palindrome")
输出:
输入序列323 palindrome
回答: 让我们先编写一个多行解决方案,然后将其转换为单行代码。
with open(SOME_LARGE_FILE) as fh:
count = 0
text = fh.read()
for character in text:
if character.isupper():
count += 1
现在,我们将尝试将其转换为一行。
count sum(1 for line in fh for character in line if character.isupper())
回答: 以下代码可用于在Python中对列表进行排序:
list = ["1", "4", "0", "6", "9"]
list = [int(i) for i in list]
list.sort()
print (list)
A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))
A1 = range(10)A2 = sorted([i for i in A1 if i in A0])
A3 = sorted([A0[s] for s in A0])
A4 = [i for i in A1 if i in A3]
A5 = {i:i*i for i in A1}
A6 = [[i,i*i] for i in A1]
print(A0,A1,A2,A3,A4,A5,A6)
回答: 以下将是A0,A1,... A6的最终输出
A0 = {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4} # the order may vary
A1 = range(0, 10)
A2 = []
A3 = [1, 2, 3, 4, 5]
A4 = [1, 2, 3, 4, 5]
A5 = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
A6 = [[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]
回答: Flask是基于“ Werkzeug,Jinja2和良好意图” BSD许可证的Python Web微框架。Werkzeug和Jinja2是其两个依赖项。这意味着它将几乎不依赖外部库。它使框架变得轻巧,同时几乎没有更新依赖性,并且安全漏洞更少。
会话基本上使您能够记住从一个请求到另一个请求的信息。在烧瓶中,会话使用签名的cookie,因此用户可以查看会话内容并进行修改。如果只有会话具有密钥Flask.secret_key,则用户可以修改会话。
回答: Django和Flask将在网络浏览器中键入的URL或地址映射为Python中的函数。
与Django相比,Flask简单得多,但是Flask并没有为您做很多事情,这意味着您需要指定详细信息,而Django为您做了很多工作,其中您不需要做很多工作。Django由预编写的代码组成,用户需要对其进行分析,而Flask则允许用户创建自己的代码,因此使理解代码变得更加简单。从技术上讲,两者都同样好,并且都有各自的优缺点。
答:
答案: Django MVT模式:
图: Python面试问题– Django体系结构
开发人员提供模型,视图和模板,然后将其映射到URL,而Django发挥了神奇的作用将其提供给用户。
回答: 您可以使用命令edit mysite / setting.py,它是一个普通的python模块,模块级别表示Django设置。
Django默认使用SQLite。对于Django用户而言,这很容易,因为它不需要任何其他类型的安装。如果您的数据库选择不同,则必须与DATABASE“默认”项中的以下键相匹配才能匹配数据库连接设置。
Django使用SQLite作为默认数据库,它将数据作为单个文件存储在文件系统中。如果您确实有数据库服务器-PostgreSQL,MySQL,Oracle,MSSQL-并希望使用它而不是SQLite,请使用数据库的管理工具为Django项目创建一个新数据库。无论哪种方式,在您拥有(空)数据库之后,剩下的就是告诉Django如何使用它。这是项目的settings.py文件进入的位置。
我们将以下代码行添加到setting.py文件:
DATABASES = {
'default': {
'ENGINE' : 'django.db.backends.sqlite3',
'NAME' : os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
答: 这就是我们可以在Django中使用的视图视图:
from django.http import HttpResponse
import datetime
def Current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now %s</body></html> % now
return HttpResponse(html)
以HTML文档形式返回当前日期和时间
回答: 模板是一个简单的文本文件。它可以创建任何基于文本的格式,如XML,CSV,HTML等。模板包含在评估模板时将变量替换为值的变量,以及用于控制模板逻辑的标签(%tag%)。
图: Python面试问题– Django模板
回答: Django提供了一个会话,使您可以基于每个站点访问者存储和检索数据。Django通过将会话ID cookie放置在客户端并将所有相关数据存储在服务器端来抽象化发送和接收cookie的过程。
图:Python面试问题– Django框架
因此数据本身不存储在客户端。从安全角度来看,这很好。
Q81。 列出Django中的继承样式。
回答: 在Django中,有三种可能的继承样式:
回答: 我们将使用以下代码从URL地址本地保存图片
import urllib.request
urllib.request.urlretrieve("URL", "local-filename.jpg")
回答: 请使用以下网址格式:
http://webcache.googleusercontent.com/search?q=cache:URLGOESHERE
确保将“ URLGOESHERE”替换为要检索其缓存并查看时间的页面或站点的正确网址。例如,要检查edureka.co的Google Webcache年龄,您可以使用以下URL:
http://webcache.googleusercontent.com/search?q=cache:edureka.co
答: 我们将使用以下代码行:
from bs4 import BeautifulSoup
import requests
import sys
url = 'http://www.imdb.com/chart/top'
response = requests.get(url)
soup = BeautifulSoup(response.text)
tr = soup.findChildren("tr")
tr = iter(tr)
next(tr)
for movie in tr:
title = movie.find('td', {'class': 'titleColumn'} ).find('a').contents[0]
year = movie.find('td', {'class': 'titleColumn'} ).find('span', {'class': 'secondaryInfo'}).contents[0]
rating = movie.find('td', {'class': 'ratingColumn imdbRating'} ).find('strong').contents[0]
row = title + ' - ' + year + ' ' + ' ' + rating
print(row)
上面的代码将帮助从IMDb的前250名列表中删除数据
回答: map函数在作为第二参数给出的iterable的所有元素上执行作为第一参数给出的功能。如果给定的函数接受多个参数,那么将给出许多可迭代的变量。#关注链接以了解更多类似功能。
回答: 由于以下三个原因,我们使用python numpy数组而不是列表:
回答: 我们可以使用以下代码在NumPy数组中获得N个最大值的索引:
import numpy as np
arr = np.array([1, 3, 2, 4, 5])
print(arr.argsort()[-3:][::-1])
输出量
[ 4 3 1 ]
答: 我们可以使用以下代码计算百分位数
import numpy as np
a = np.array([1,2,3,4,5])
p = np.percentile(a, 50) #Returns 50th percentile, e.g. median
print(p)
输出量
3
答:
回答: 与2D绘图一样,3D图形也超出了NumPy和SciPy的范围,但就像在2D情况下一样,存在与NumPy集成的软件包。Matplotlib在mplot3d子软件包中提供了基本的3D绘图,而Mayavi利用强大的VTK引擎提供了多种高质量的3D可视化功能。
a) d = {}
b) d = {“john”:40, “peter”:45}
c) d = {40:”john”, 45:”peter”}
d) d = (40:”john”, 45:”50”)
答案: b,c和d。
通过指定键和值来创建字典。
答案: b)//
当两个操作数均为整数时,python会切掉小数部分并为您提供四舍五入值,以使用下位除法获得准确的答案。例如,5/2 = 2.5,但是两个操作数都是整数,因此python中此表达式的答案为2。要获得2.5作为答案,请使用//进行下限除法。所以5 // 2 = 2.5
答案: d)以上都不是
标识符可以是任何长度。
答: a)它们用于指示类的私有变量
由于Python没有专用变量的概念,因此前导下划线用于指示不得从类外部访问的变量。
答案: b)abc = 1000 2000 3000
变量名称中不允许使用空格。
try:
if '1' != 1:
raise "someError"
else:
print("someError has not occured")
except "someError":
print ("someError has occured")
答案: c)无效代码
一个新的异常类必须继承自BaseException。这里没有这样的继承。
答案: c)25
索引-1对应于列表中的最后一个索引。
答案: b)该位置包含双斜杠(),并且w用于指示正在写入文件。
f = None
for i in range (5):
with open("data.txt", "w") as f:
if i > 2:
break
print f.closed
答案: a)正确
与打开文件一起使用时,WITH语句可确保在with块退出时关闭文件对象。
答案: c)没有异常发生时
else部分在没有异常发生时执行。
我希望这套Python面试问题能帮助您准备面试。祝一切顺利!
本文由 Java架构师必看 作者:javajgs_com 发表,其版权均为 Java架构师必看 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。