昨日作业讲解
写函数,接收N个数字,求这些数字的和
def sum_func(*args):
total = 0
for i in args:
total += i
return total
a = sum_func(1, 2, 3, 4, 5, 6, 7, 8, 9)
print(a)
读代码,猜测abc分别是什么
a = 10
b = 20
def func(a, b):
print(a, b)
c = func(b,a)
print(c)
读代码,回答代码打印出来的abc分别是什么?
a = 10
b = 20
def func(a, b):
print(a, b)
a = 3
b = 5
return a,b
c = func(b, a)
print(c)
写函数,检查获取传入列表或元祖对象的所有奇数位素引(不是奇数)对应的元素,并将其作为新列表返回给调用者
def func(l):
return l[1::2] #切片,有规律的取值
result = func([1, 2, 3, 4, 5, 6])
print(result)
写函数,判断用户传入的对象(字符串 列表 元祖)长度是否大于5
def func(x):
return len(x) > 5
result = func('abcdef')
print(result)
写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者
def func(l):
if len(l) > 2:
return l[:2]
result = func([1, 2, 3, 4, 5])
print(result)
写函数,计算传入字符串中【数字】,【字母】,【空格】以及【其他】的个数,并返回结果
def func(s):
# num = 0 # 计算数字的个数
# alpha = 0 # 计算字母的个数
# space = 0 # 计算空格的个数
# other = 0 # 计算其他码的个数
dic = {'num': 0, 'alpha': 0, 'space': 0,'other': 0}
for i in s:
if i.isdigit():
dic['num'] += 1
elif i.isalpha():
dic['alpha'] += 1
elif i.isspace():
dic['space'] += 1
else:
dic['other'] += 1
return dic
result = func('sahjdhh17 8hqjsjh2 2hjss?sadaa_2asda 2ada2rdd sdads ad ')
print(result)
写函数,检查用户传入的对象(字符串,列表,元组)的每一个元素是否含有空内容,并返回结果
def func(x):
if type(x) is str and x: # 参数是字符串,且不为空
for i in x:
if i == ' ':
return True
elif type(x) is list or type(x) is tuple:
for i in x:
if not i:
return True
elif not x:
return True
res = func([1, ''])
print(res)
写函数,检查传入字典的一个Value的长度,如果大于2那么仅保留两个长度的内容,并将内容返回给调用者
def func(dic):
for k in dic:
if len(dic[k]) > 2:
dic[k] = dic[k][:2]
return dic
dic = {'k1': 'abcd', 'k2': [1, 2, 3, 4]}
res = func(dic)
print(res)
写函数,接收两个数字参数,返回比较大的哪个数字
第一种:
def func(a, b):
if a > b:
return a
else:
return b
print(func(1, 5))
第二种:运用三元运算
def func(a, b):
c = a if a > b else b
return c
print(func(1, 5))
写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(进阶)
def func(filename, old, new):
with open(filename, encoding='utf-8') as f, open('%s.bak' % filename, 'w', encoding='utf-8') as f2:
for line in f:
if old in line:
line = line.replace(old,new)
f2.write(line)
import os
os.remove(filename)
os.rename('%s.bak' % filename, filename)
装饰器
意义:不修改函数的调用方式,但还可以在原函数前后添加功能
time方法
延时
import time
time.sleep(5)
print('哈哈哈')
计算运行时间
import time
def func():
start = time.time() # 获取当前时间
print('计数器')
end = time.time()
return end-start
res = func()
print(func())
单独用函数写计时器
import time
def timer(f):
start = time.time() # 获取当前时间
f()
end = time.time()
print(end - start)
def func():
time.sleep(2)
print('计数器')
timer(func)
语法糖
标准格式
def wrapper(f):
def inner(*args, **kwargs):
ret = f(*args, **kwargs) // 被装饰的函数
return ret
return inner
@wrapper
def func():
print('hello world')
a = 1
return a
result = func()
print(result)
在以下代码中@timer 和 func = timer(func)作用相同
import time
def timer(f):
def inner():
start = time.time() # 获取当前时间
f()
end = time.time()
print(end - start)
return inner
@timer
def func():
time.sleep(0.05)
print('计数器')
# func = timer(func)
func()
返回值‘hello’
import time
def timer(f):
def inner():
start = time.time() # 获取当前时间
ret = f()
end = time.time()
print(end - start)
return ret
return inner
@timer
def func():
time.sleep(0.05)
print('计数器')
return 'hello'
# func = timer(func)
res = func()
print(res)