python1000题_python面试1000题之1-3

1  利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法.

正解1:

def trim(s):

while s[:1] == ' ':

s = s[1:]

while s[-1:] == ' ':

s = s[:-1]

return s

正解2:

def trim(s):

if s[:1] == ' ':

s = trim(s[1:])

if s[-1:] == ' ':

s = trim(s[:-1])

return s

容易写错的方法:

def trim(s):

while s[0] == ' ':

s = s[1:]

while s[-1] == ' ':

s = s[:-1]

return s

解释:当s=''时,s[0]和s[-1]会报IndexError: string index out of range,但是s[:1])和s[-1:]不会。

2   请设计一个decorator,它可作用于任何函数上,并打印该函数的执行时间.

# -*- coding: utf-8 -*-

import time, functools

def metric(fn):

@functools.wraps(fn)

def wrapper(*args, **kw):

time0 = time.time()

ret = fn(*args, **kw)

time1 = time.time()

print('%s executed in %s ms' % (fn.__name__, time1-time0))

return ret

return wrapper

3  装饰器的实质是什么?或者说为什么装饰器要写2层嵌套函数,里层函数完全就已经实现了装饰的功能为什么不直接用里层函数名作为装饰器名称?

答:装饰器是要把原来的函数装饰成新的函数,并且返回这个函数本身的高阶函数

本文首发于Python黑洞网,博客园同步跟新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值