我编写了如下函数,带有可选参数'b'.
url取决于b的存在.
def something(a, b=None)
if len(b) >= 1:
url = 'http://www.xyz.com/%sand%s' % (a, b)
else:
url = 'http://www.xyz.com/%s' (a)
Run Code Online (Sandbox Code Playgroud)
这会引起错误b=None,说"类型为'无类型'的对象没有长度"
任何想法如何解决这个问题?
你可以简单地改变 -
def something(a, b=None)
Run Code Online (Sandbox Code Playgroud)
至 -
def something(a, b="")
Run Code Online (Sandbox Code Playgroud)
除非你真的需要检查的长度b,为什么不简单地做
if b is not None:
...
Run Code Online (Sandbox Code Playgroud)
如果您还需要检查长度(因此该else部分也执行 if b == ""),请使用
if b is not None and len(b) >= 1:
...
Run Code Online (Sandbox Code Playgroud)
的and操作者的短路,这意味着如果b is None,表达式的第二部分甚至没有评价,所以没有将引发异常。