-
此处把s用作逻辑“与”运算,与运算两边的表达式都是布尔类型,True或者False,在python里面如果s是整数0,空值None,空字符串'',空集合( )都会被判定为False。
单单一个len(s.strip())>0只能用于判断是否空字符串'',但0、空值none、空集合( )都用不了s.strip(),所以,将s放在and前面可以先过滤,当s是整数0,空值None,空字符串'',空集合( )时判定为False,那么and运算这时就“短路”直接返回False,当s是' '这种字符串时,s判定为True,就需要后面的strip()函数去除空格后长度>0来判定了。查看全部 -
%f 是 浮点类型 后面跟的s在这里应该是表示单位时间秒(s), 即 print('%fs'%a) a = 17.5 输出应为 17.500000s
f.__name__ : __name__是内置函数 获取 函数的名字
查看全部 -
f是个值,调用的时候不能加括号
查看全部 -
TypeError: method expected 2 arguments, got 3
原因:
MethodType (fn, p1, Person)
第一个参数是要绑定的方法,第二个参数是要绑定的对象,第三个参数是类名(可省略)
如果是Python3, 第三个参数必须省略,否则会报错。
查看全部 -
这里如果把return 改成print 会多一个None,这是为啥?
查看全部 -
filter是根据True 或 False,进行判断是否保留的, 所以表达式需要给出返回值
print filter(lambda s : s and len(s.strip())>0, ['test', None, '', 'str', ' ', 'END'])
查看全部 -
区分包和普通目录,包下面要有个__init__.py文件,每层都要有
查看全部 -
Python3.5中:iteritems变为items
查看全部 -
要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用:
def log(f): def fn(*args, **kw): print 'call ' + f.__name__ + '()...' return f(*args, **kw) return fn
查看全部 -
Python的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数。
使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码
查看全部 -
像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。
闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变
查看全部 -
class Person(object):
pass
# 不加pass 显示 IndentationError: expected an indented block
查看全部 -
Python3中已将StringIO归入io
查看全部 -
简单理解,包类似于Java和C#中的命名空间,包对应的级别是文件夹,模块对应的级别是文件。
查看全部 -
在python2里,如果打印函数时print加上括弧,会打印出括弧。但是在python3里就不会。
>>>print (f0(), f1(), f2())
(1 4 9)
查看全部
举报