最新回答 / 宝慕林6305465
我找到原因了普通变量如果在函数中赋值a = 2会有歧义。因为它既可以是表示引用全局变量a,也可以是创建一个新的局部变量,所以在python中,默认它的行为是创建局部变量,除非显式声明global。而对列表list变量进行赋值b[0] = 2则不会有歧义。它是“明确的”,因为如果把b当作是局部变量的话,它会报KeyError,所以它只能是引用全局的b,故不需要多此一举显式声明global。
2019-05-10
已采纳回答 / 荼灬
Python中的数据类型分为“不可变数据类型”和“可变数据类型”,不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变。不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象。列表属于可变数据类型,浮点数属于不可变数据类型。而 s = s*i 是先调用等号右边 s*i 中的s,此时系统会新建一个名为s的对象,s将不再指向原来的1,后面也没有对s的赋值操作,因此此时s并没有值,所以会报未定义的错误。列表是可变数据类型,运用append之后并不会创建新的对象,因此...
2019-05-10
最赞回答 / qq_栋_3
改为class Person(object): def __init__(self, name, score): self.name=name self.__score=score def get_grade(self): if self.__score>=80: return 'A' elif self.__score>=60: return 'B' elif sel...
2019-05-09
最赞回答 / 宝慕林6305465
借用一切都是浮云何必刻苦铭心的答案:sorted(iterable[, cmp[, key[, reverse]]]) sorted 这个函数接受这3个关键词,key表示排序的元素,比如一个人的信息,可以从名字排序, 可以从年龄排序,这就...
2019-05-07
已采纳回答 / 人间世支离疏
t = time.ctime() *1000 if unit =='ms' else time.time()首先题目要求是获取计算时间第二time.ctime()返回易读的字符串模式的当前时间 t = time.ctime() *1000就肯定会出错,去掉*1000就不会打印了无数次 t
2019-05-06
已采纳回答 / 慕移动4262466
print filter(lambda s: s,len(s.strip()) > 0, ['test',None,"",'str',' ','END'])filter(函数,list)其中函数返回值是 True 或者False,然后filter 根据TRUE 或者false作用到后面的list中每个元素s,len(s.strip()) >0 相当于一个整体所以就不用再加 if进去。
2019-04-27
已采纳回答 / 慕标7383595
这个是因为在终端上写python与.py文件里写python不同,你先在终端上将函数定义好,不要写print语句,定义好后按回车,出三个箭头后输入print语句就能正常运行输出了<...图片...>
2019-04-27