这份python面试题是面向测试工程师来巩固编程基础知识而写的,为了实现自动化测试所需用到的python基础,总结了面试时可能会被问到的问题。对于开发工程师而言本篇文章可能就太基础了。
number、string、list、tuple、set、dictionary、boolean、none
列表是可以修改的序列,而元组中的内容是无法进行修改的。
在循环中,可以通过break退出整个循环,或者通过continue退出本次循环跳到下个循环。
pass关键字,在if判断语法中,用于表示略过。一般在判断过程中,如果不需要执行额外代码的情况下,可以调用pass实现。另外,有时可能还没想好函数怎么写,只写了函数声明,但为了保证语法正确,必须输入一些东西,在这种情况下,我们也会使用pass关键字。
import random
print(random.randint(1, 10))
print()、input()、type()、int()、range()
str = '123456789'
print(str[::-1])
split()可以实现对现有字符串进行切片,通过指定分隔符将原有字符串进行分割,按照要求切分为多个不同的字符串内容,可以指定分隔符和分割次数,默认分割所有,分割后会以list格式返回结果。
x = lambda a, b: a * b
print(x(2, 2))
sort()会对list进行重新排序,排序后会完全改变原有list值的顺序。
sorted()则是临时修改list的元素排列顺序。
当一个类继承自另一个类,它就被称为一个子类/派生类,继承自父类/基类。它会继承/获取到父类的所有类属性和类方法。继承能更容易的创建和维护应用。
*args表示任意多个无名参数,通过元组的形态进行传递,根据函数参数的顺序依次匹配元组中的每一个元素,一般情况下元组长度必须与参数数量保持一致。此类传递参数的方式,可以在调用函数时非常灵活将所有参数一次性传入,不用再一个个指定。便于函数调用的扩展使用,也就是所谓的不定值不定长传参模式。
**kwargs表示关键字参数。通过字典的key,value格式进行传入参数,所有传入的参数都会遵循key=value的格式,根据函数的形参名逐一匹配字典的key,将对应value进行传参,一般情况下字典的key必须与形参相同。此类传递参数的方式,可以在调用函数时快速基于形参名将所有的参数一次性赋值,也就是所谓的定值不定长传参。
join()用于将指定序列中的元素以指定的字符连接生成一个新的字符串,并返回。
区分大小写。
print(' hello'.lstrip())
print('AAA'.lower())
print('aaa'.upper())
一共有7种运算符:算术运算符、关系运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。
算数运算符(7种):加号(+)减号(-)乘号(*)除号(/)返回除法中的余数(%)返回x的y次幂(**)除法返回商的整数部分(向下取整)(//)
关系运算符:小于号(<)大于号(>)小于等于号(<=)大于等于号(>=)等于号(==)不等于号(!=)
赋值运算符:(+=)(-=)(*=)(/=)(%=)(**=)(//=)
逻辑运算符:and、or、not
位运算符:在自动化测试领域中可以忽略。
成员运算符:in、not in
身份运算符:is、is not
a,b,c=1,2,3 或 a=b=c=3
静态方法在声明前需写上@staticmethod装饰器,因静态方法中不需要传入self参数,所以静态方法的调用,不需要实例化类,直接通过类名调用即可,也因为缺少self,所以静态方法无法获取类中其他的属性与方法,是相对独立的存在。
可以被next()函数调用并不断返回下一个值得对象成为迭代器,迭代器表示的是一个数据流,可以只在需要时才去调用next来计算出一个值。迭代器从第一个元素开始访问,直到所有的元素访问完毕为止。迭代器只能往前不能后退。所以迭代器与普通程序运行不同,不会在一次调用时就结束。通过iter()函数将可迭代对象,比如一个list转为迭代器对象,然后通过next()函数进行一个个取值。
使用yield关键字的函数被称为生成器,和普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代。所以生成器其实也属于迭代器。若要取值,则需要通过next()获取,或者通过循环获取。
函数是组织好的,可重复使用的,用来实现单一或者相关联功能的代码块,可以直接调用。方法与函数类似,定义方法都是通过def关键字声明,只是方法是在类中定义,而函数不用在类中定义,方法是需要通过对象来调用的。
想要在类中定义到专属于类内部的私有属性与私有方法,则可以通过在属性或方法的名称前添加__来表示。私有属性和私有方法无法在类外部被调用,也无法被实例化对象调用。私有属性和私有方法的使用,只限于在类本身之中,如果想要获取这些私有内容,则需要通过公有方法来调用,或者通过return将私有属性返回,达到外部使用的目的。
list(set(list))
列出一组数据,经常用在for in range()循环中。
定义函数时,一般函数的操作是无法修改函数外的变量值。如果想通过调用函数来修改函数外变量的值,则需要在函数中将该变量声明为global变量,也就是全局变量。在函数中声明之后,则可以改变它的值。
==比较两个对象或值的相等性。
is用于检查两个对象是否属于同一内存对象。
全局变量:在函数外或全局空间中声明的变量称为全局变量。这些变量可以由程序中的任何函数访问。
局部变量:在函数内声明的任何变量都称为局部变量。此变量存在于局部空间中,而不是全局空间中。
在字符串处理中,可以通过三引号对复杂的字符串进行处理。三引号允许一个字符串跨多行,同时字符串中可以包含各类特殊字符,用法与多行注释类似。此类方式对于sql、html等内容的输出会特别方便。
a = [9,8,7,6,5,4,3,2,1]
for i in range(len(a)):
for j in range(0,len(a)-1-i):
if a[j] > a[j+1]:
a[j] , a[j+1] = a[j+1] , a[j]
print(a)
for i in range(1, 10):
for j in range(1, 10):
num = i * j
print('{0}*{1}={2}'.format(i, j, num), end=" ")
print("")