python面试之综合(二)

1.python中的pass语句

Python pass 是空语句,是为了保持程序结构的完整性。不做任何事情,一般用做占位语句。

2.python中的is和==

==用来比较判断两个对象的value(值)是否相等,is用来比较判断两个对象的唯一身份标识是否相等(id()得出来的不同那么就不相等)

    a = 1
    b = 1
    print(a == b) #True
    print(id(a)) #10914496
    print(id(b)) #10914496
    print(a is b)  # True

3.作用域

在一个 python 程序中,直接访问一个变量,会从内到外依次访问所有的作用域直到找到,否则会报未定义的错误。Python 中,
程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。变量的作用域决定了在哪一部分程序可以
访问哪个特定的变量名称。

4.三元运算

python:
if __name__ == '__main__':
    a = 1
    b = 2
    c = a if a > 1 else b  # 如果a大于1的话,c=a,否则c=b
    print(c) #2
    
java:
	int a = 1;
	int b = 2;
	int c = a > 1 ? a : b;
	System.out.println(c); //2

5.python中enumerate函数

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

if __name__ == '__main__':
    seq = ['1', '2', '3']
    print(type(enumerate(seq)))
    for i, element in enumerate(seq):
        print(i,element)
        print(type(i),type(element))

结果:
<class 'enumerate'>
0 1
<class 'int'> <class 'str'>
1 2
<class 'int'> <class 'str'>
2 3
<class 'int'> <class 'str'>

6.python函数中使用全局变量

g = 0

def test():
    global g
    g += 1
    print(g)

if __name__ == '__main__':
    test() #1

7.简单举例python当中的pathlib

该模块提供表示文件系统路径的类

from pathlib import Path

if __name__ == '__main__':
    p = Path(".")
    print(type(p.iterdir()))
    for x in p.iterdir():
        print(f"path:{x},is_dir:{x.is_file()}")

8.面向对象的 mro

方法解析顺序,它指的是对于一棵类继承树,当调用最底层类对象所对应实例对象的方法时,Python解释器在继承树上搜索方法的顺序。

9.isinstance和type的区别

sinstance判断一个对象的类型,传入两个参数,主要用于判断A类是否继承于B类。type得到传入的object的类型,但是只
传入一个参数,主要用于获取未知变量的类型
 
class father(object):
    pass
class son(father):
    pass
   
if __name__ == '__main__':
   a = father()
   b = son()
   print(isinstance(b,father)) #True
   print(type(b) == father) #False
   print(type(b) == son) #True
   c = 1
   print(isinstance(c, int))  # True
   print(isinstance(c, (str, int, list)))  # True

10.python中lambda表达式

lambda函数也叫匿名函数,即函数没有具体的名称。lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的是返回值。

if __name__ == '__main__':
    f = lambda x: x * 2
    print(f(4)) #8

11.python中的dir()函数

它返回包含查询对象的所有属性和方法名称的列表。

print(dir(object))

12.arg和*args和**kwargs

*args和**kwargs都是用于函数定义时的功能性标识,其主要作用是参数传递。

单独使用*args:(不确定参数,多个输入值将会以元组的形式传入函数)
def func(*args):
    print(args, type(args))

if __name__ == '__main__':
    func(1, 2, 3) #(1, 2, 3) <class 'tuple'>

单独使用**kwargs:(不确定参数,以键值对的方式封装为字典)
def func(**kwargs):
    print(kwargs,type(kwargs))

if __name__ == '__main__':
    func(a=1, b=2, c=3) #{'a': 1, 'b': 2, 'c': 3} <class 'dict'>

单独使用arg:(确定参数)
def function(arg):
    print(arg)

if __name__ == '__main__':
    function(1) # 1

13.Python 中会有函数或成员变量包含单下划线前缀和结尾,和双下划线前缀结尾,区别是什么?

“单下划线” 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量; “双下划线” 开始的是私有成员,
意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。

13.python文件读写模式(r,w,a,rb,wb,r+,w+,a+)

r : 读取文件,若文件不存在则会报错

w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件

a : 写入文件,若文件不存在则会先创建再写入,但不会覆盖原文件,而是追加在文件末尾

rb,wb:分别于r,w类似,但是用于读写二进制文件

r+ : 可读、可写,文件不存在也会报错,写操作时会覆盖

w+ : 可读,可写,文件不存在先创建,会覆盖

a+ :可读、可写,文件不存在先创建,不会覆盖,追加在末尾


有关写入文件的过程中的指针:

if __name__ == '__main__':
    #file.tell()查询指针的位置
    with open("a.txt", "w") as file:
        print(file.tell()) #写入前指针为0
        file.write("123") #写入123
        print(file.tell()) #写入后指针变为3
    # a.txt为123

    # 重新打开同一个a.txt文件
    with open("a.txt", "w") as file:
        print(file.tell()) #写入前指针为0
        file.write("456") #写入456
        print(file.tell()) #写入后指针变为3
    # a.txt为456

    with open("a.txt", "a") as file:
        print(file.tell()) #写入前指针为3
        file.write("789") #写入789
        print(file.tell()) #写入后指针变为6
    # b.txt为456789


有关读文件的过程中的指针:

先创建一个a.txt文件,内容为123456

with open("a.txt", "r") as file:
        content = file.read(2) #读取长度为2
        #读的时候指针也会移动
        next_content = file.read() #第二次读取
        print(content) #12
        print(next_content) #3456


有关手动移动指针位置:
先创建一个a.txt文件,内容为123456
    with open("a.txt", "r") as file:
        content = file.read(3)
        #seek()来设置指针的位置进行读写操作
        file.seek(1) #设置指针位置为1
        next_content = file.read() #第二次读取
        print(content) #123
        print(next_content) #23456

14.sort 函数 与 sorted 函数区别

sort()对已存在的列表进行排序,排序方式可以自己设置reverse参数的值,无返回值,改变原列表

list = [1,2,3]
list.sort(reverse=True)
print(list) #[3, 2, 1]


sorted()对一切可迭代对象排序,排序方式也可以自己设置reverse参数的值,返回值是一个新的排序好的列表,并不改变原迭代对象
list = [1,2,3]
newList = sorted(list,reverse=True)
print(newList) #[3, 2, 1]

15.python中正索引和负索引

如果是正索引,0是序列中的第一个索引,1是第二个索引。

如果是负索引,-1是最后一个索引,-2是倒数第二个索引。

lst[:] ->获取全部元素
lst[:-1] ->排除最后一位元素的其他所有元素
lst[::-1] ->列表倒排序
lst[-1] ->取最后一个
lst[0] ->取第一个

16.Python 中的赋值运算符

c += a -> c = c + a
c -= b -> c = c - a
c *= a -> c = c * a
c / a -> c = c / a (求商)
c %= a -> c = c % a (取模,也叫求余数)
c **= a ->c ** a (有几个a就有几个c连续相乘)
c //= a -> c = c // a(求整除商)

17.Python 中的逻辑运算符

and:所有表达式都为真则返回True,否则相反
or:有一个表达式为真就返回True
not:真就为假,假就为真(取反)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python 面试中可能会问到以下问题: 1. 你对 Python 的了解程度,以及你用过的版本 2. 你使用 Python 的项目经历和代码实例 3. Python 的数据类型,如列表、字典、元组等 4. Python 的流程控制语句,如 if、for、while 等 5. Python 的函数定义、参数传递、作用域等 6. Python 的模块和包管理 7. Python 的异常处理 8. Python 与其他语言的比较 9. Python 的常用库,如 NumPy、Pandas、Matplotlib 等 10. 面向对象编程,如类和对象的定义、继承、多态等 这仅仅是一个参考,根据不同的面试官和职位要求,面试题目可能有所不同。 ### 回答2: Python面试会问的问题包括但不限于以下几个方面: 1. Python基础知识:问关于Python的数据类型、变量、函数、类、模块、异常处理等基础知识的问题,包括对Python中常用的内置函数和标准库的理解和应用。 例如:如何定义一个类?如何处理异常? 2. 编程能力:考察候选人的编码能力和解决问题的能力,可能会给出一些编程题目,要求候选人用Python编写相关的程序。 例如:如何实现一个简单的链表? 3. Web开发相关:问关于Python的Web开发框架(如Django、Flask等)、数据库操作、前后端交互等问题,考察候选人对Web开发的了解和实践经验。 例如:如何使用Django进行数据库操作? 4. Pythonic代码:问关于Python编码规范、最佳实践、常用的Python技巧等问题,考察候选人对Pythonic代码的理解和实践。 例如:如何编写一个生成器? 5. 数据分析和机器学习相关:问关于数据分析和机器学习领域常用的Python库(如Numpy、Pandas、Scikit-learn等)以及相关算法的问题,考察候选人对数据分析和机器学习的掌握程度。 例如:如何使用Pandas进行数据清洗? 6.系统设计能力:问关于系统设计和架构的问题,如分布式系统、缓存、消息队列等,考察候选人对大型系统的设计思路和解决方案的能力。 例如:如何设计一个高并发的Web系统? 除了以上几个方面,面试中还可能会根据候选人的简历和岗位要求询问相关的问题,以了解候选人的实际经验和适应能力。总体来说,面试官会根据岗位需求和候选人的背景综合考察候选人的Python编程能力、理论知识和实际项目经验等方面的内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值