测试基础 测试基础-Python 篇 问&答①

耿晓 · 2023年02月14日 · 最后由 49875183 回复于 2023年02月14日 · 4728 次阅读

面对洋洋洒洒的知识点,我往往 “一看就会,一写就废”,为了更有针对性的加深知识点的印象,我将以做题的形式继续总结 Python 系列,每篇 10 道问答,以下是本篇目录:

Python 系列总结都是我自己平时的学习笔记,如果有不正确的地方,希望各位佬儿哥指正纠偏🤗

  • 问:列表的增删查改?
  • 问:字典的增删查改?
  • 问:元祖的增删查改
  • 问:例举 Python6 种基本的数据类型,并标出哪些是不可变数据类型?
  • 问:请说明循环结构和异常处理中的 else 在什么情况下会执行?
  • 问:列举 python 函数定义中有哪些不同的参数类型?
  • 问:python 中==和 is 的区别?
  • 问:请描述 global 关键字在什么条件下必须被使用?
  • 问:请说明 if name == 'main':语句的作用?
  • 问:面向对象编程有哪三大特性?请说明各个特性的意义。

问:列表的增删查改?

答:


  • l.insert(idx, value) ---指定索引位置增加
    l.append(value) ---在末尾追加
    l.extend(iterable) ---取出可迭代对象的值,追加到列表末尾

    l1 = [1,2,3,3,4,5]
    l1.extend([1,[2]])
    print(l1)
    --------------------------
    [1, 2, 3, 3, 4, 5, 1, [2]]
    

  • del l[idx] ---删除索引处元素,索引超出会报错:IndexError: list assignment index out of range
    del l ---彻底删除列表
    l.pop(idx) ---删除索引处元素,索引超出会报错:IndexError: pop index out of range
    l.pop() ---删除列表最后一个元素,列表为空会报错:IndexError: pop from empty list
    l.remove(value) ---删除列表中第一个出现 value 的元素,值不在会报错:ValueError: list.remove(x): x not in list
    l.clear() --清除列表中的所有元素


  • l[idx]
    l.count(value) ---统计列表中指定元素出现次数,指定元素不在列表中会返回:0
    l.index(value) ---返回列表中第一个指定元素的索引,指定元素不在列表中会报错:ValueError: 11 is not in list


  • l[idx] = value

问:字典的增删查改?

答:


  • d[new_key] = value ---如果 key 已存在则是更新操作
    d.update({key: value}) ---如果 key 存在则是更新操作
    d = dict.fromkeys(keys, value) ---dict.fromkeys(keys, value) 方法用于创建一个新字典,其中包含指定的键,并将所有键的值设置为相同的值
    d.setdefault(key, default_value) ---如果 key 已存在,则返回对应的 value,若 key 不存在,则返回 default_value,并在原字典中新增键值对 key: default_value

    # 可用setdefault()统计每个单词的出现次数
    text = "Hello world! Hello python! Hello chatbot!"
    word_list = text.split()
    word_count = {}
    for word in word_list:
    word_count[word] = word_count.setdefault(word, 0) + 1
    print(word_count)
    --------------------------------------------------------------------------------------------
    {'Hello': 3, 'world!': 1, 'python!': 1, 'chatbot!': 1}
    

  • d.pop(key) ---key 不存在会报错:KeyError: 'addr'
    d.popitem() ---随机删除一个键值对,因为字典无序,所以是随机删除,字典为空则报错:KeyError: 'popitem(): dictionary is empty'
    del d[key] ---删除指定 key,若 key 不存在则报错:KeyError: 'addr'
    del d ---彻底删除字典
    d.clear ---清空字典


  • d[key] ---若 key 不存在则报错:KeyError: 'addr'
    d.get(key) ---若 key 不存在则返回 None
    d.keys() ---以列表形式返回字典的所有 key
    d.values() ---以列表的形式返回字典的所有 value
    d.items() --以列表的形式返回字典的所有键值对,每一组键值对是一组元祖

d1 = {'name': 'Tom', 'age': 25}
print(d1.keys())
print(type(d1.keys()))
print()

print(d1.values())
print(type(d1.values()))
print()

print(d1.items())
print(type(d1.items()))
------------------------------------------------
dict_keys(['name', 'age'])
<class 'dict_keys'>

dict_values(['Tom', 25])
<class 'dict_values'>

dict_items([('name', 'Tom'), ('age', 25)])
<class 'dict_items'>

d[key] = value
d1.update(d2) ---将 d2 更新到 d1 中,相同的 key 则更改 d1 中的 value

问:元祖的增删查改

答:

因为元祖是不可变数据类型,所以不能不能在原元祖新增

t = (1,2,'hello')
t2 = (2,3,'world')

print(id(t))
t += t2

print(t)
print(id(t))
-------------------------
2049302192960
(1, 2, 'hello', 2, 3, 'world')
2049302145920

del t ---不能 del t[idx],否则报错:TypeError: 'tuple' object doesn't support item deletion

t[idx] ---idx 不能越界,否则报错:IndexError: tuple index out of range
可遍历元祖

for _ in t:
    print(_)

t.count(value) ---返回元祖中 value 的个数,value 不存在返回 0
t.index(value) ---返回元祖中首个 value 的索引,value 不存在则报错:ValueError: tuple.index(x): x not in tuple

元组是不可变的,因此不能修改元组中的任何元素。

问:例举 Python6 种基本的数据类型,并标出哪些是不可变数据类型?

答:整形-int-不可变、浮点型-float-不可变、字符型-str-不可变、列表-list-可变、元祖-tuple-不可变、字典-dict-可变;

问:请说明循环结构和异常处理中的 else 在什么情况下会执行?

答:
在 for.else 循环结构中,当循环提全部循环完毕后,没有 break 或者 return 的情况下,会执行 else 代码段;
在异常处理中,try 下的代码段没有出现异常的情况下,会执行 else 代码段;

条件分支语句用 else 来表示"否则执行某件事"

问:列举 python 函数定义中有哪些不同的参数类型?

答:
1.位置参数:根据参数在函数定义中的位置来确定。
2.默认参数:在函数定义中指定的参数值。
3.关键字参数:在调用函数时指定参数名称和对应的值。
4.星号参数:在函数定义中使用来捕获剩余的参数。
5.双星号参数:在函数定义中使用
* 来捕获剩余的关键字参数。

问:python 中==和 is 的区别?

答:
==比较的是两个对象的值,is 比较的是两个对象的内存地址。
不能用 is 替代==,仅当你需要判断某个对象是否是 None、False、True 时,使用 is,其他情况下请使用==。

a = [1,2,3]
b = [1,2,3]
print(id(a))
print(id(b))
print(a == b)
print(a is b)
--------------------
2278285654592
2278285654272
True
False
a = [1,2,3]
b = a
print(id(a))
print(id(b))
print(a == b)
print(a is b)
---------------------
2021576555072
2021576555072
True
True

额外:关于赋值或者复制后 id() 是否异同的知识点,结论:除了'='赋值,其余的 id() 都不一样,直接举例:

import copy

a = [1,2,3]
b = a
c = a.copy()
d = copy.copy(a)
e = copy.deepcopy(a)
f = a[:]
print(id(a))
print(id(b))
print(id(c))
print(id(d))
print(id(e))
print(id(f))
------------------
1927143455168
1927143455168
1927140937408
1927140937152
1927143557824
1927143558528

问:请描述 global 关键字在什么条件下必须被使用?

答:在函数局部要重新赋值全局变量之前,需要使用 global 关键字声明全局变量。

问:请说明 if name == 'main':语句的作用?

答:在 Python 中,当一个模块被执行时,if name == 'main':语句块会被执行。此语句块可以用来测试模块的代码,而不会影响模块的其他功能。
如果模块被其他模块导入,则name的值为该模块的名称,而不是main。如果该模块是主程序,则name的值为main,此时该语句块会被执行。
这样的语句使得可以在模块被其他模块导入时忽略测试代码,并且只在模块被独立运行时执行测试代码。

问:面向对象编程有哪三大特性?请说明各个特性的意义。

答:
封装:隐藏内部状态和实现细节,仅提供必要的接口给外部使用。
继承:允许创建新的对象类型,并基于现有的对象类型派生,从而继承其行为和状态。
多态:允许不同类型的对象对相同消息做出不同的响应。

测试基础-Python 篇 问&答②

共收到 1 条回复 时间 点赞

高产博主😂

耿晓 测试基础-Python 篇 琐碎但十分实用的知识点 中提及了此贴 02月14日 15:40
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册