美文网首页
python学习笔记

python学习笔记

作者: 亲爱的孟良 | 来源:发表于2016-11-09 15:04 被阅读13次

    Python Note

    • 在解释器中(terminal)退出 exit()
    • 缩进:四个空格
    • 常用方法<p>1.input(),input()返回的是字符串,如果要提取数字,那就得类型转换啦,可以用int()b=input('number:') n=int(b)<p>2.reng(number)生成一个整数序列
    • 字符串内部有很多换行,不好阅读的情况下:
      '''content'''
      eg:print('''line1 line2 line3''')
    • 变量,没有固定的类型,可以赋不同类型的值
    • 通常用大写表示常量(其实也是可以变的)
    • 精确的除法(结果为浮点数)/
    • 地板除(结果为整数,只取整数部分)//
    • 余数%
    • 在文件的开头应该写这两句<p>#!/usr/bin/env python3 告知系统,这是一个python可执行程序<p># -*- coding: utf-8 -*-告知python解释器,按照utf-8读取源代码
    • 格式化字符串(和C语言一样):<p>%s:字符串替换(永远起作用)<p>%d:整数替换<p>%f:浮点数替换<p>%x:十六进制整数
    • [list](数组啊)常用方法:<p>1.len(list)取长度<p>2.append()追加list.append('meng)<p>3.insert(index,content)插到指定位置<p>4.pop()删除末尾的元素list.pop(index)<p>5.替换,直接赋值就可以<p>6.list的数据类型可以不同,也可以嵌套list
    • (tuple)(有序列表),特殊的是一旦初始化,就不能改啦!注意:<p>1.定义的时候就得初始化 t(1,2)或者t()<p>2.只有一个元素的时候,必须写成t(,1)要加个逗号,不然谁知道你这是小括号还是tuple<p>3.tuple的不变,指的是它的指向永远不变,比如说它的第二个元素是一个list,list的值是可以改变的,此时也不会报错,因为tuple指向的还是list这个元素,里面的值变了是可以的(指针呐!)
    • 关于代码块:<p>没有大括号,就是:加缩进,来表示他们是一个代码块的
    • 条件判断:<p>特别的一点就是有个elif,else if的缩写(杀马特风)
    • 循环:<p>第一种for...in循环<p>name=['meng','liang'] for item in name:print(item)和js的循环很像啊,遍历了每个元素<p>第二种while循环
    • 字典dict(其实就是对象,键值对):<p>语法:<p>定义d={'meng':1,'liang':2}<p>赋值d['meng']<p>取值d.get('meng')如果不存在也可以返回一个自定义的value,作为get的第二个参数d.get('meng',0)这样不存在的时候,返回0<p>删除d.pop('meng')<p>确定某个值是否存在'meng' in d会返回true或false<p>注意:不能让可变的对象作为key,(也就是‘属性名’不能变,得是常量)
    • set,和字典类似,但是不存储value,key也不能重复(就是属性名)<p>创建:需要提供一个list作为输入集合s = set([1,2,3]),重复的自动被过滤,就是添加几个都是显示一个<p>添加元素:add()方法s.add(4)<p>删除元素:remove()<p>set可以看成数学上的无序和无重复元素的集合,可以做交集并集操作
    • 函数<p>定义函数:defegdef my_function(x):略<p>空函数def nop(): pass占位符,比如先放在那里,函数也可以跑起来,不报错<p>参数类型检查isinstance(x,(类型)),eg:isinstance(x,(int))参数不正确可以抛出错误<p>返回‘多个’值,return a,b本质是返回了一个tuple<p>参数:<p>特殊名词:<p>位置参数(positional argument),意思就是说传进来的参数一一对应。<p>默认参数,可以有自定义的值,默认参数在后,位置参数在前。<p>可变参数,也就是参数是一个list或tuple,写的时候参数前面加一个*def cal(*nums),表示把nums的锁欧元素作为可变参数传进去,好像很重要,记住,这样就可以传进来列表了(也就是数组)。<p>关键字参数,person('jack',24,**extra)extra是一个dict,这就代表把extra里面所有的key-value都传进去了,灵活。<p>命名关键字参数,好烦,没看完
    • 切片操作,也就是取一个list或者tuple的一部分<p>切片操作符[startindex:endindex:间隔],包含开始的,不包含结束的.支持负数<p>字符串也可以用切片操作符'ABCD'[:3]
    • 迭代,for...in...理论上只要是可迭代对象就可以来迭代,判断一个对象是可迭代对象的方法:<p>通过collections模块的Iterable类型判断isinstance('abc',Iterable)返回true或者false,注意,要引入collections模块。<p>高级写法:for index,item in someListindex代表索引,item代表元素值
    • 列表生成式(太高大上了)<p>最简单的列表生成:list(range(1,11))生成[1,2,3,4,5,6,7,8,9,10]<p>复杂一点的列表:[x*x for x in range(1,11)]就生成了[1,4,9...]这样的列表,要生成的元素放在前面,后面跟for循环,就可以了。
    • 生成器,它存在的意义在于并不是真真正正在内存存储一个列表,而是类似一种套路,然后可以通过for来遍历它,取自己需要的内容,比较省内存,可发展。<p>yield关键字,如果函数定义中包涵yield,那么他就不是一个普通的函数啦,而是一个generator,yield相当于return+print,遇到就返回,还打印?
    • 迭代器,可以被next()函数调用,并且不断返回下一个值的对象,成为迭代器:Iterator,生成器都是Iterator对象,list、dict、str虽然可迭代,但不是迭代器对象,变成迭代器对象可以用iter()函数
    • 高阶函数,也就是行参接受一个函数作为参数(这不就是js回调函数么)
    • map()函数,接受两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用于序列的每个元素,并把结果作为新的Iterable返回,也就是取代原来的每个item。
    • reduce()函数,也是接受两个参数,一个函数,一个序列,reduce(f,[a,b,c]]) => (f(f(a,b),c)f函数必须接受两个参数,好奇怪@_@
    • filter() 函数,用于过滤序列。接受一个函数和一个序列作为参数,把传入的函数作用于每个元素,根据返回值(true或false)来决定保留还是丢弃这个元素。
    • sorted()函数,排序函数。sorted()函数可以对list排序,它也是一个高阶函数,接受一个key函数来实现自定义的排序,这个函数可以变吗?
    • 高阶函数之返回值为一个函数,里面还有闭包的概念,用到在看吧
    • 匿名函数:lambda x : x*xlambda来表示是匿名函数,x为参数,:后面就是‘函数体’,只能有一个表达式,不用写return
    • 装饰器,在函数运行期间动态增加功能的方式。本质上就是一个接受函数的高阶函数而已。有点意思,用的时候好好看一下
    • 对于返回一个函数的函数,终于理解了,就是按顺序执行的意思,看return的包裹关系就知道,最外面的先执行,然后里面的执行!!!
    • 偏函数,没看懂
    • 模块,任何模块的第一个字符串都被视为模块的文档注释。
    • 安装模块:pip install packageName
    • 类,又是类!!!!<p>定义一个类:class Student(object),object代表它继承自哪个类,如果没有就写object<p>创建实例:bart = Student()类名+()实现的<p>init函数,如果一个类,有一些必须绑定的属性强制的填写,那么可以定义这个方法,在类的内部def _init_(self,name,score):self.name=name(到底怎么样才能写这个代码块啊!好烦)注意第一个参数永远都要是self,self代表创建的实例本身。<p>数据封装,就是类的方法,类的方法的第一个参数必须是self,代表实例本身。<p>访问限制,要想让内部的属性不被外部访问,可以把属性的名称前加上两个_,就变成了一个私有变量,这样就直接拿不到了,但是也是可以改的,可以在类内部通过设置一个更改的函数,然后再去调用就可以了。就是曲折了一点。。。。<p>所谓多态,就是说当子类和父类有一个同名函数的时候,子类执行的是自己的,父类执行的是自己的<p>获取对象信息。type(some),可以知道这个对象是什么类型。返回值是对应的类型。dir(some)获得一个对象所有的属性和方法,返回一个包含字符串的list,hasattr()\setattr()\getattr()三剑客。<p>实例属性和类属性:实例属性可以通过实例变量或者self变量来绑定;类属性直接在类里面写就行了name = 'student',这样直接写就可以啦!<p>限制类实例的属性,__slots__:在定义类的时候,__slots__=('name','age')这样在给实例绑定属性的时候,除了这两个别的都不可以。仅对当前类的实例起作用,对继承的子类是不起作用的。<p>@property

    相关文章

      网友评论

          本文标题:python学习笔记

          本文链接:https://www.haomeiwen.com/subject/nzttpttx.html