为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
python进阶_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 解释器内部会将**kw拆分成对应的dict. setattr()方法接受3个参数:setattr(对象,属性,属性的值) class Person(object): def __init__(self, name, gender, birth, **kw): self.name = name self.gender = gender self.birth = birth for key in kw: setattr(self, key, kw[key]) xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student') print xiaoming.name print xiaoming.job 这个可以 class Person(object): def __init__(self, name, gender, birth, **kw): self.name = name self.gender = gender self.birth = birth for key in kw: self.key = kw[key] xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student') print xiaoming.name print xiaoming.job 这个就不行。。为啥 self.key = xxx就是设置key属性为xxx了, 注意这里的self.key就是key属性,一个变量而已, 而不是你想的key in kw所代表的key setattr(self,k,v)相当于self.k = v kw.iteritems()历遍字典kw的所有key和value,分别匹配k,v 用for来取值是更健壮的做法,不仅能接收到job,还能同时再接收一些其他的键值对
    查看全部
  • for n in range(num): ------for循环和 range函数用来控制下方代码块的循环次数,注意这里是0~num-1,共循环num次 L.append(a) ------给list在尾部加上一个新元素a,这个就是上一次循环退出时存在a中的斐波那契数字 a, b = b, a + b ------这已经中a, b = b, a + b其实就是多个变量的赋值运算,先算等号右边,再赋值给左边变量,这是python中一大亮点,a+b中的b不会被a所覆盖,如果是C,就要写成:int a=0,b=1,t ; t=a,a=b,b=b+t; self.numbers = L ------这一句就是把之前产生的list用类变量锁定,以后就可以通过变量名调用这个list
    查看全部
    1 采集 收起 来源:python中 __len__

    2018-02-27

  • reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。 例如,编写一个f函数,接收x和y,返回x和y的和: def f(x, y): return x + y 调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算: 先计算头两个元素:f(1, 3),结果为4; 再把结果和第3个元素计算:f(4, 5),结果为9; 再把结果和第4个元素计算:f(9, 7),结果为16; 再把结果和第5个元素计算:f(16, 9),结果为25; 由于没有更多的元素了,计算结束,返回结果25。
    查看全部
  • 假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list: 输入:['adam', 'LISA', 'barT'] 输出:['Adam', 'Lisa', 'Bart']
    查看全部
  • *args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前,像foo(a=1, b='2', c=3, a', 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。
    查看全部
  • Filter函数
    查看全部
  • Map函数
    查看全部
  • cmp爲比較函數 cmp(x,y) 若x>y 則返回1 x=y 則返回0 x<y 則返回-1
    查看全部
    0 采集 收起 来源:python中 __cmp__

    2018-03-22

  • lambda p1, p2: cmp(p1.name, p2.name) 是匿名函数的用法 L2 = sorted(L1,key = lambda x:x.name) 利用key 忘了很多了
    查看全部
  • **kw是关键字参数,用于字典 iteritems()用于字典kw的遍历 setattr(self, k, v)就等价于self.k = v 综上就是,遍历dict kw 中的属性,给每个属性设置了属性值
    查看全部
  • 首先可以用 type() 函数获取变量的类型,它返回一个 Type 对象: >>> type(123) <type 'int'> >>> s = Student('Bob', 'Male', 88) >>> type(s) <class '__main__.Student'> 可以用 dir() 函数获取变量的所有属性,对于实例变量,dir()返回所有实例属性 getattr(s, 'name') # 获取name属性'Bob' >>> setattr(s, 'name', 'Adam') # 设置新的name属性 >>> s.name 'Adam' >>> getattr(s, 'age', 20) # 获取age属性,如果属性不存在,就返回默认值20: 20
    查看全部
  • 把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
    查看全部
  • reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。
    查看全部
  • 函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。 s.strip()去除前后空格,s.strip(rm)去除开头结尾处rm序列的字符,当rm为空时,默认删除空白符。
    查看全部
  • s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头,结尾处,位于rm删除序列的字符 s.lstrip(rm) 删除s字符串中开头处,位于rm删除序列的字符 s.rstrip(rm) 删除s字符串中结尾处,位于rm删除序列的字符 注意:1、当rm为空时,默认删除空白符(包括'\n','\r','\t'.'') 2、rm删除序列是只要变(开头或结尾)上的字符在删除序列内,就删除掉
    查看全部

举报

0/150
提交
取消
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!