最新回答 / 慕粉7269117
第一个其实也没错,不过题目要求的格式不一样。第二个return f 那def 找个函数就没意义了,相当于这个函数返回又一个函数,而我们是要这个函数返回值的。
2018-07-10
已采纳回答 / Bigjing
首先我们要理解d()和d的区别:d()是调用函数,调用函数后才会返回函数运行的结果d是函数本身其次我们看d = c([1, 2, 3, 4]) 做了什么,按照顺序: 调用函数c(),并传入参数[1, 2, 3, 4] 使得 lst = [1, 2, 3, 4]def a(): 声明函数a(),a()实现的功能:def e(x,y): return x * y 声明函数e(),并表示传入参数x,y后,返回x,y相乘的结果reduce(e,lst,1) 计算对lst数列元素相乘的结果,从元素1开始返回函数a本...
2018-07-10
最赞回答 / 慕仰8584781
我是先按照楼主那样写的(悄悄咪咪地把print后面f1(),f2(),f3()的括号删掉了),因为发现这样写出来的话f1-f3都是数字了;那么就想着改进:让f1-f3调用一次函数后才得到数字(大概就是课程里讲的延迟吧),于是乎在f函数的定义中又加了一层g()让返回的f1-f3经过一次调用后才出结果#注意返回函数时是return g不是return g()(这样的话就是直接调用了g函数了)def count(): fs = [] for i in range(1, 4): def ...
2018-07-10
class Person(object):
def __init__(self, name, score):
self.name = name
self.__score = score
p = Person('Bob', 59)
print p.name
try:
print p.__score
except AttributeError:
print 'attributeError'
def __init__(self, name, score):
self.name = name
self.__score = score
p = Person('Bob', 59)
print p.name
try:
print p.__score
except AttributeError:
print 'attributeError'
2018-07-10
已采纳回答 / _ZakYu
调用函数是没错的,可以这样用问题出在 s[:1].upper() + s[1:].lower() 上s 是一个 list,对 list 进行切片,结果返回的是一个 list而upper(), lower() 是字符串的方法<...code...>
2018-07-09
最新回答 / 东来往北
filter会判断调用is_sqr函数中返回是是否为真,为真则输出x值到新list中,否则跳过。尝试了一下isinstance方法判断字符串,就失去了filter的意义。能运行通过,但是不会生成新的list
2018-07-05
最赞回答 / 雪菜夹馅包
不可以,因为**kw,kw这里是dict类型的,例如class Person(object): def __init__(self, name, gender, **kw): self.name = name self.gender = gender for k,v in kw.items(): setattr(self,k,v)p = Person('Bob', 'Male', age=18, course='Python')这里kw...
2018-07-05
使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。
命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。
定义命名的关键字参数不要忘了写分隔符*,否则定义的将是位置参数。
命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。
定义命名的关键字参数不要忘了写分隔符*,否则定义的将是位置参数。
2018-07-03
默认参数一定要用不可变对象
要注意定义可变参数和关键字参数的语法:
*args是可变参数,args接收的是一个tuple;
**kw是关键字参数,kw接收的是一个dict。
以及调用函数时如何传入可变参数和关键字参数的语法:
可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3));
关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})。
要注意定义可变参数和关键字参数的语法:
*args是可变参数,args接收的是一个tuple;
**kw是关键字参数,kw接收的是一个dict。
以及调用函数时如何传入可变参数和关键字参数的语法:
可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3));
关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})。
2018-07-03
已采纳回答 / 天奇农人
return s and len(s.strip())>0 中的 s 如果为none的话,你直接 return len(s.strip())>0 就会报错(因为你调用了s.strip()方法),所以return s and len(s.strip())>0 这样写会提前短路(and运算符 左半部分为false,则右半部分的表达式不执行)
2018-07-02