python面试题(11~20)

11、Python是按引用调用还是按值调用?

①不可变对象(如字符串、数字和元组等)是按值调用的。

注意下面的例子中,当在函数内部修改时,name的值在函数外部不会发生变化。name的值已分配给内存中该函数作用域的新块。

name = 'chr'
def add_chars(s): 
    s += 'is' 
    print(s)

add_chars(name)     #=> chris
print(name)    #=> chr

②可变对象(如列表等)是通过引用调用的。

注意下面的例子中,函数外部定义的列表在函数内部的修改是如何影响到函数外部的。函数中的参数指向内存中存储li值的原始块。 

li = [1,2]
def add_element(seq): 
    seq.append(3) 
    print(seq)

add_element(li)     #=> [1, 2, 3]
print(li)    #=> [1, 2, 3]

12、如何使用reverse函数反转一个列表?

下面的代码对一个列表调用reverse函数,对其进行修改。该方法没有返回值,但是会对列表的元素进行反向排序。

li = ['a','b','c']
print(li)     #=> ['a', 'b', 'c']
li.reverse
print(li)    #=> ['c', 'b', 'a']

13、字符串乘法是如何工作的?

'cat' * 3   ==> 'catcatcat',该字符串将自身连接3次。

14、列表乘法是如何工作的?

[1,2,3] * 2 ==> [1, 2, 3, 1, 2, 3],输出的列表包含了重复两次的列表[1,2,3]的内容。

15、类中的self指得是什么?

在Python中,self是类中方法的第一个参数,它表示对当前实例对象的引用。当你调用类的方法时,Python会自动传入当前实例对象作为self参数,这样在方法内部就可以通过self来访问该实例对象的属性和方法。

class MyClass:
    def __init__(self, x):
        self.x = x

    def print_x(self):
        print(self.x)

# 创建实例对象
obj = MyClass(10)

# 调用实例方法,Python会自动传入当前实例对象作为self参数
obj.print_x()  # 输出:10

16、如何在Python中连接列表?

将2个列表相加,就是将它们连接在一起。

17、浅拷贝和深拷贝之间有什么区别?

我们将在一个可变对象(列表)的上下文中讨论这个问题,对于不可变的对象,浅拷贝和深拷贝的区别并不重要。Python中的copy和deepcopy-CSDN博客

1. 引用原始对象。这将新对象li2指向li1所指向的内存中的同一位置。因此,我们对li1所做的任何更改也会在li2中发生。

li1 = [['a'],['b'],['c']]
li2 = li1
li1.append(['d'])
print(li2)    #=> [['a'], ['b'], ['c'], ['d']]

2. 创建原始对象的浅拷贝副本。浅拷贝创建一个新对象,新对象和原始对象共享内部内存地址。因此,向原始列表li3中添加新对象不会传播到li4中,但是修改li3中的一个对象将传播到li4中。

li3 = [['a'],['b'],['c']]
li4 = list(li3)
li3.append([4])
print(li4)    #=> [['a'], ['b'], ['c']]
li3[0][0] = ['X']
print(li4)    #=> [[['X']], ['b'], ['c']]

3. 创建一个深拷贝副本。这是用copy.deepcopy完成的。现在,这两个对象是完全独立的(不共享内存地址),并且对其中一个对象所做的更改不会对另外一个对象产生影响。 

import copy
li5 = [['a'],['b'],['c']]
li6 = copy.deepcopy(li5)
li5.append([4])
li5[0][0] = ['X']
print(li6)    #=> [['a'], ['b'], ['c']]

18、列表和数组有什么区别?

①列表存在于python的标准库中。数组由Numpy定义。

②列表可以在每个索引处填充不同类型的数据。数组需要同构元素。

③列表上的算术运算可从列表中添加或删除元素。数组上的算术运算按照线性代数方式工作。

④列表还使用更少的内存,并显著具有更多的功能。

19、如何连接两个数组?

使用Numpy的连接函数concatenate来实现。

import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
np.concatenate((a,b))    #=> array([1, 2, 3, 4, 5, 6])

20、你喜欢python的什么?

①简洁易读:Python具有清晰简洁的语法,易于阅读和学习,使得开发者能够更加专注于解决问题而不是语法细节。

②广泛应用:Python在多个领域得到广泛应用,包括Web开发、数据分析、人工智能、科学计算、网络编程等,因此具有很强的适用性。

③大量的库和工具:Python拥有丰富的标准库和第三方库,涵盖了几乎所有领域的功能需求,开发者可以方便地使用这些库来加速开发过程。

  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值