一、简答题【口述,每道1分钟】
1. 绝对路径与相对路径的区别?
– 绝对路径是从根目录符号"/“开始的路径;
– 相对路径是指路径不以根目录符号”/"开头,而以当前目录的下一级子目录名打头的路径。
2. 路径转义的方法?
– 再加上一个反斜杠,将斜杠转义为"",如"D:\cdsn\python.txt";
– 在路径字符串前面加上r,如r"D:\cdsn\python.txt";
– 将每一个"“转换为”/",如"D:/cdsn/python.txt"。
3. 函数参数的形式有哪些?
– 默认参数
– 实际参数
– 动态参数 *(元组) **(字典)
– 形式参数
4. 函数作用域的顺序?
– 优先在局部作用域中寻找,如果没有则去上级作用域中寻找。
5. 什么是装饰器?
– 装饰器就是用于拓展原来函数功能的一种函数,目的是在不改变原函数名(或类名)的情况下,给函数增加新的功能。
二、代码题
1. 说出下列三元表达式的结果?
a = 1>2 or 0 or False or 'False' and 1
print(a)
# 输出:1
2. 下面代码中两个print分别为
a=1
def function(a):
a = 1
a += 4
print(a)
function(a)
print(a)
# 输出:
2
1
3. 使用列表推导式筛选出100内的偶数且是3的倍数。
print([i for i in range(101) if i % 6 == 0])
# 输出:[0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96]
4. 使用生成器写个斐波那契数列
# 方法一
def fib(n):
a,b = 0,1
i = 0
while i < n:
a, b = b, a+b
yield a
i += 1
result = fib(5)
for i in result:
print(i)
# 输出:
输出:
1
1
2
3
5
# 方法二
def fib(max_count):
first = 1
second = 0
count = 0
while count < max_count:
next_value = first + second
first = second
second = next_value
yield next_value
count += 1
count = input("请输入要生成斐波那契数列的个数:")
count = int(count)
fib_generator = fib(count)
for num in fib_generator:
print(num)
# 输出:
请输入要生成斐波那契数列的个数:5
1
1
2
3
5
5. 请设计一个装饰器,它可以作用于任何函数上,打印函数执行时间。
import time
import functools
def time_func(func):
@functools.wraps(func)
def inner(*args, **kwargs):
start_time = time.time()
res = func(*args, **kwargs)
end_time = time.time()
print(end_time-start_time)
return res
return inner
@time_func
def data():
for i in range(5):
time.sleep(0.5)
print(i)
data()
# 输出:
0
1
2
3
4
2.5352702140808105