Python相关题-其他内容

其他内容

91. 解释一下Python中pass语句的作用?

答: pass实际上就是一个占位符,在写一个函数但是不确定里面写啥的时候,这个时候可以使用pass。示例如下

    def foo():
        pass

92. 简述你对input()函数的理解

答: 在Python3中input函数可以接收用户输入的字符串。然后根据程序的需要转换成所需格式即可。

93 .Python中的 is==

答: 先说 == 它的作用是判断两个对象的值是否相同,然后说isis 表示的谁是谁,这也就意味着对象完全相等。我们知道一个对象有各自的内存地址和对应的值,当内存地址和值都相同的时候使用 is 可以得到结果True。另外需要注意的下面两点特殊的情况。这些变量很可能在许多程序中使用。 通过池化这些对象,Python可以防止对一致使用的对象进行内存分配调用。

  1. 介于数字 - 5和256之间的整数
  2. 字符串仅包含字母、数字或下划线

94. Python中的作用域

答: Python中,一个变量的作用域总是由在代码中被赋值的地方所决定当Python遇到一个变量的话它会按照这的顺序进行搜索本地作用域(Local) - -->当前作用域被嵌入的本地作用域(Enclosinglocals) --->全局 /模块作用域(Global) - -->内置作用域(Built - in)

95. 三元运算写法和应用场景?

答: Python中的三元运算又称三目运算,是对简单的条件语句的简写。 是一种比较Pythonic的学法,形式为:val = 1 if 条件成立 else 2
代码示例如下:

    a = 2
    b = 5

    # 普通写法
    if a > b:
    val = True
    else :
    val = False
    # 改为三元运算符后
    val = a if a > b else b
    print(val)  # 5

96.了解enumerate么?

答: enumerate
可以在迭代一个对象的时候,同时获取当前对象的索引和值。 代码示例如下

    from string import ascii_lowercase
    s = ascii_lowercase
    for index, value in enumerate(s):
        print(index, value)

97. 列举5个Python中的标准模块

答:

  • pathlib: 路径操作模块,比os模块拼接方便。
  • urllib: 网络请求模块,包括对url的结构解析。
  • asyncio: Python的异步库,基于事件循环的协程模块。
  • re:正则表达式模块。
  • itertools:提供了操作生成器的一些模块。

98. 如何在函数中设置一个全局变量

答: 通过使用 global 对全局变量进行修改。

    n = 0
    def foo():
        global n
        n = 100
    foo()
    print(n)
    x = 0
  • 具体讲解链接:https://www.bilibili.com/video/av50865713

99. pathlib的用法举例

答: pathlib是面向对象的文件系统路径,可以对文件以及文件的其他属性进行操作。比较喜欢的一点是路径拼接符"/"的使用。

    from pathlib import Path, PurePath
    p = Path('.')
    # 列出子目录
    for x in p.iterdir():
        print(f"path:{x},is_dir:{x.is_dir()}")
    # 路径拼接
    >>> p = PurePath('/etc')
    >>> p / 'init.d' / 'apache2'
    PurePosixPath('/etc/init.d/apache2')
    >>> q = PurePath('bin')
    >>> '/usr' / q
    PurePosixPath('/usr/bin')

100. Python中的异常处理,写一个简单的应用场景

答: 比如在计算除法中出现为0的情况出现异常

    try:
        1 / 0
    except ZeroDivisionError as e:
        print(e.args)

101. Python中递归的最大次数,那如何突破呢?

答 :Python有递归次数限制,默认最大次数为1000。通过下面的代码可以突破这个限制

    import sys
    sys.setrecursionlimit(1500)  # set the maximum depth as 1500
  • 另外需要注意的是sys.setrecursionlimit()只是修改解释器在解释时允许的最大递归次数,此外,限制最大递归次数的还和操作系统有关。

102. 什么是面向对象的mro

答: Python是支持面向对象编程的,同时也是支持多重继承的。一般我们通过调用类对象的mro()方法获取其继承关系。

103. isinstance作用以及应用场景?

答: isinstance是判断一个对象是否为另一个对象的子类的,例如我们知道在Python3中bool类型其实是int的子类,所以我们可以对其检测。
print(isinstance(True, int))

104. 什么是断言?应用场景?

答: 在Python中是断言语句assert 实现此功能,一般在表达式为True的情况下,程序才能通过。

# assert()方法,断言成功,则程序继续执行,断言失败,则程序报错
# 断言能够帮助别人或未来的你理解代码,
# 找出程序中逻辑不对的地方。一方面,
# 断言会提醒你某个对象应该处于何种状态,
# 另一方面,如果某个时候断言为假,
# 会抛出 AssertionError 异常,很有可能终止程序。
    def foo(a):
        assert a == 2, Exception("不等于 2")
        print("ok", a)
    if __name__ == '__main__':
        foo(1)

105. lambda 表达式格式以及应用场景?

答: lambda 表达式其实就是一个匿名函数, 在函数编程中经常作为参数使用。 例子如下

    a = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
    a_1 = list(map(lambda x:x[0], a))

106. 新式类和旧式类的区别

答: Python2.x中默认都是经典类,只有显式继承了object才是新式类,Python3.x中默认都是新式类,经典类被移除,不必显式的继承object。 新式类都从object继承,经典类不需要。
新式类的MRO(methodresolutionorder基类搜索顺序)算法采用C3算法广度优先搜索,而旧式类的MRO算法是采用深度优先搜索。新式类相同父类只执行一次构造函数,经典类重复执行多次。

107. dir()是干什么用的?

答: 当在使用某一个对象不知道有哪些属性或者方法可以使用时,此时可以通过dir()方法进行查看。

108.一个包里有三个模块,demo1.py、demo2.py、demo3.py,但使用from tools import *导入模块时,如何保证只有demo1、demo3被导入了。

答: 增加_init_.py文件,并在文件中增加:__all__ = ['demo1', 'demo3']

109. 列举5个Python中的异常类型以及其含义

答:

  • AttributeError对象没有这个属性
  • NotImplementedError尚未实现的方法
  • StopIteration迭代器没有更多的值
  • TypeError对类型无效的操作
  • IndentationError缩进错误

110. copy和deepcopy的区别是什么?

答: copy.copy()浅拷贝,只拷贝父对象,不会拷贝对象的内部的子对象。 copy.deepcopy()深拷贝,拷贝对象及其子对象。

111. 代码中经常遇到的 *args, **kwargs含义及用法。

答: 在函数定义中使用 *args**kwargs传递可变长参数。 *args用来将参数打包成tuple给函数体调用。 **kwargs打包关键字参数成dict给函数体调用。

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

答: "单下划线"开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量; "双下划线"开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。
以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”而导入;以双下划线开头的(__foo)代表类的私有成员;
以双下划线开头和结尾的(_foo)代表Python里特殊方法专用的标识,如__init__()代表类的构造函数。

113. wa +wb文件写入模式的区别

答: w表示写模式支持写入字符串,如果文件存在则覆盖。 a +w的功能类型不过如果文件存在的话内容不会覆盖而是追加。 wb是写入二进制字节类型的数据。

114. 举例sort和sorted的区别

答: 相同之处sort和sorted都可以对列表元素排序,
sort()与sorted()的不同在于,sort是在原位重新排列列表,而sorted()是产生一个新的列表。 sort是应用在list上的方法,sorted可以对所有可迭代的对象进行排序操作。
list的sort方法返回的是对已经存在的列表进行操作,而内建函数sorted方法返回的是一个新的list,而不是在原来的基础上进行的操作。

115. 什么是负索引?

答: 负索引一般表示的是从后面取元素。

116. pprint模块是干什么的?

答: pprint是print函数的美化版,可以通过import pprint导入。示例如下

    import pprint
    pprint.pprint("this is pprint")

117. 解释一下Python中的赋值运算符

答: 通过下面的代码列举出所有的赋值运算符

a = 7
a += 1
print(a)
a -= 1
print(a)
a *= 2
print(a)
a /= 2
print(a)
a **= 2
print(a)
a //= 3
print(a)
a %= 4
print(a)

118. 解释一下Python中的逻辑运算符

答: Python中有三个逻辑运算符: and 、 or 、not

print(False and True)  # False
print(7 < 7 or True)  # True
print(not 2 == 2)  # False

119. 讲讲Python中的位运算符

答: 按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:
下表中变量a为60,b为13,二进制格式如下:

a = 0011
1100
b = 0000
1101
-----------------
a & b = 0000
1100
a | b = 0011
1101
a ^ b = 0011
0001
~a = 1100
0011
enter
image
description
here

120. 在Python中如何使用多进制数字?

答: 我们在Python中,除十进制外还可以使用二进制、八进制和十六进制,二进制数字由0和1组成,我们使用0b或0B前缀表示二进制数print(int(0b1010)) # 10
使用bin()函数将一个数字转换为它的二进制形式print(bin(0xf)) # 0b1111
八进制数由数字0 - 7组成,用前缀0o或0O表示8进制数print(oct(8)) # 0o10
十六进数由数字0 - 15组成,用前缀0x或者0X表示16进制数print(hex(16)) # 0x10,print(hex(15)) # 0xf

121. 怎样声明多个变量并赋值?

答: Python是支持多个变量赋值的,代码示例如下
# 对变量 a,b,c 声明并赋值a, b, c = 1, 2, 3

你可能感兴趣的:(Python相关题-其他内容)