python的基础知识

安装

  • https://www.python.org/ftp/python/3.6.3/python-3.6.3-amd64.exe

输入输出

  • print('text') 

  • 'hi,我是%s,我%d岁了'%('Wang',20)
  • print('abc','def','ghi')

  • inputName = input('输出信息')  inputName类型为str

注释

  • #

数据类型

  • 不变对象不需声明
    • 整数  
    • 浮点数
    • 字符串
    • 布尔(TrueFalse and or not运算)
    • 空值None
    • 变量
  • 可变对象需声明
    • 列表(数组)
      •  len(list)获取长度
      • list[-n]获取倒数第n个
      • list.append('world')末尾添加
      • list.insert(index,'hello')指定index插入
      • list.pop()删除末尾  pop(index)删除index
      • list.sort()
    • 元组
      • tuple = (1,2,3)
      • 一旦定义不可改变
    • 字典
      • dict = {'wang':1,'li':2,'qun':3}
        dict['add'] = 4
        'add' in dict 输出true
      • dict.get('add','notfound')找不到输出notfound
    • 集合

      • s = set([a,b,c])
        print(s)
        {a,b,c}
        接收一个list
      • 集合不可重复,确定,无序,互异
      • s.set(key)添加
      • s.remove(key)删除

条件

  • if用法
  • if i<5:
        print('Hello World')
    elif i>10:
        print('Hello World')
    else :
        print('Hello World')

 

循环

  • for循环
  • list = [a,b,c]
    for i in list:
        print(i)
    i依次为a,b,c

 

  • while循环
  • while i<5:
        print(i++)
        i=i+1
  • break
  • continue

函数

  • def fun(a,b,c=3):
        print(a+b+c)
    fun(4,5)
    fun(4,5,6)

    需传入2到3个参数,否则为错

  • 默认参数必须指向固定,否则会记录上一次的结果
  • def fun(*number):
        #可变参数,number变为数组
  • 参数组合
    • 顺序:必选参数,默认参数,可变参数,命名关键字参数,关键字参数
    • *args是可变参数,接受一个tuple, **kw是关键字参数,接受一个dict
    • 关键字参数需要加*作为分隔符
    • def f1(a, b, c=0, *args, **kw):
      def f2(a, b, c=0, *, d, **kw):
  •  

高级特性

  • 切片(list,tuple)
    • L[m:n]左闭右开
    • L[-m]倒数第m个元素
    • L[:n]默认为0开始取
    • L[m:]取到最后(包含)
    • L[m:n:5]每隔五个取一个
  • 迭代
    • 对于数组 for i ,value in enumerate(list) (迭代index和value)
    • 对于字典 for k in dict:(迭代key) for v in dict。values():(迭代value)  for k,v in dict.items():(迭代key,value)
    • from collections import Iterable
      #isinstance(unknown,Iterable)
      #判断是不是迭代器对象,True or False
  • 列表生成式
    • [x*x for x in range(1,10) if x>4]  自动生成,{}等都可以
  • 生成器
    • #[x for x in range(1,5)]变成(x for ix in range(1,5))生成器
    • #保存算法运算规律,需要的时候计算出来
    • #next(函数())即可一步一步调用
    • #最后报StopIteration错误
    • 包含yield的函数是generator
    • 从上次yield之后的语句开始执行
    • #通过捕获StopIteration错误拿到return值
    • 生成器不能像函数一样执行,可以通过next()获取一个,通过for获取所有
  •  迭代器
    • Iterable   for皆可
    • Iterator   iter(iterable)

 高阶函数

  • 可以接受函数体作为参数,与js类似
  • r=map(f,[1,2,3]) r=reduce(f,[1,2,3]) r=filter(f,[1,2,3])
  • sorted([1,2,3],key=abs,reverse=True)#数组 规则 反向

 闭包

  • 函数体作为返回值
  • 调用时才执行

匿名函数

  • f=lambda x,y:x*y

装饰器

  • @function
    def func():
        pass
  • @修饰符,将'函数名'作为@函数参数,生成的结果代替原来的函数,并执行。(所以装饰器中必须返回'函数名')
  • 函数__name__属性,可以获取函数名
  • @classmethod可传cls,@staticmethod都是静态

 类和实例

  • __init__构造函数,可以引用类的实例传值赋属性
  • class Student(object):
        __init__(self,a):
            print(a)
    A=Student('helolo world')
  • _开头的变量或者函数不应该访问,但是没有机制限制,__开头的不可被访问,因为对外变成了‘_类名__属性‘
  • 可以通过内置函数给私有量设置查,改等
  • class Dog(Animal):#继承
  • type()判断类型  types模块types.FunctionType判断函数类型
  • instance()同上,另外还可以判断是否是继承而来的。
  • dir()列出方法的所有属性和方法
  • getattr(),setattr(),hasattr()

 面向对象

  • __slots__=('name','year')#tuple
    • 表示可以定义的属性(其余是不可以定义的)
    • 针对当前实例,对子类无用
    • 子类定义__slots__才可以有效继承父亲的
  •  @property属性限制
    • class Student(object):
          @property
          def score(self):
              return self._store
      
          @property.setter
          def score(self,value):
              #限制条件
              self._store=value
      
      s=Student()
      s.store=99

 错误处理

  • try except finally
  • except Exception as e:

 IO处理

  • f=open('文件名',‘r’)#读方式打开文件  二进制rb  写w或wb
  • str=f.read()#一次读取所有,可用数字限定最多读取个字节(readline()一行,readlines()返回行列表)
  • f.close()
  • with open() as f:
      f.read()#自动保持关闭,不用close()
  • StringIO和BytesIO
    from io import StringIO
    f=StringIO()
    f.write('hello')
    f.getvalue()#获取写入的
    #在内存中读写。类似文本操作
    from io import ByteIO
    f=ByteIO()
    f.write('hello'.encode('utf-8'))
    f.close()
    #必须关闭,防止丢失
  • os模块
  • json模块
    • import json
      json_str="{'age':20,"score":88,"name":"Bob"}"
      json.loads(json_str)
      #转化为json(dict)格式

 

 

 

 

 

 

 

 

 

 

 

 

 

 

:结尾的以缩进(四个空格)作为代码块

python大小写敏感

数据类型:整数浮点数(科学计数法)字符串(r''表示不转义\转义\n换行\t制表)布尔值TrueFalse

/除//地板除%取余

对数大小无限制,超出即无穷大

Unicode Utf-8

ord('中')表示获取数字表示

chr(数字)转换对应的字

isinstance(unknown,type)判断类型

pass补全格式,不做任何操作

in,not in

sys.path导入模块查找的路径

enumerate()将数组转换为索引对,用于遍历取索引

python的set

  • a=[1,3,5]
    b=[1,2,3]
    #并集,set(a).union(b)
    set(a) | set(b)    [1,2,3,5]
    #交集,set(a).intersection(b)
    set(a) & set(b) [3]
    #差集,set(a).difference(b)
    set(a)-set(b)    [5]
    #对称差集,set(a).symmetric_difference(b)
    set(a) ^ set(b)    [5,2]

 

posted @ 2018-01-31 13:04  王利群  阅读(231)  评论(0编辑  收藏  举报