zoukankan      html  css  js  c++  java
  • 学习python

    一、python的特点

      1.简洁,灵活,优雅,哲学;

      2.易于上手,难于精通;

      3.python既有动态脚本的特性,又有面向对象的特性,非常具有自己的特性;

      4.python相对C、C++、Java语言运行效率较慢,C、C++属于编译型语言,python、JavaScript属于解释型语言;其实目前硬件比较发达,开发人员更加注重开发效率,所以语言类型的区分已不再重要,选择一种适合当前应用场景的语言更加重要;

      5.python不止可以用来进行web编程,还可以应用于很多场景,例如大数据与数据分析、爬虫、自动化运维与自动化测试、机器学习、混合编程等等,python几乎可以说是万能的;

      6.语言有很多种,语言风格却各不相同;

    二、python的正确打开方式

      当你遇到一个问题,可以随手拿起python编写一个工具来解决问题;

    三、python基本数据类型

      number:数字

        整数:int

        浮点数:float

        type(2/2)是float,type(2//2)是int;单斜杠是除法,双斜杠是整除;

        进制:0b-二进制,0o-八进制,0x-十六进制;转换:二进制bin(),十进制用int(),八进制用oct(),十六进制用hex();

        bool:布尔类型,True,False;bool(0)=False,bool(1)=True,bool(2)=True,bool(0b01)=True,bool('abc')=True,bool('')=False;非空非零为True,否则为False;

        complex:复数

      str:字符串

        单引号,双引号,三引号都可以表示字符串

        转义字符:print('c:\north')与print(r'c: orth')等价,字符串前加r,表示原始字符串

        字符串的运算:'hello'+'world'  'hello'*3  'hello'[0]  'hello'[-1]  'hello'[0:4]  'hello'[0:-1]  'hello'[2:]  'hello'[-2:]

      list:列表

        [1,2,'a',True,[1,2,3]]

        访问列表元素,['a','b','c'][0]  ['a','b','c'][0:2]

        修改列表元素:['a','b','c']+['a','b','c']  ['a','b','c']*3

      tuple:元组

        (1,2,3)[0]  (1,2,3)[0:2]

        (1,2,3)+(1,2,3)  (1,2,3)*3

        疑问:为什么type((1))不是tuple,而是int?

           在python里,小括号可以表示元组,也表示运算;如果想表示单个元素的元组,需要加逗号,(1,),空元组()

      str,list,tuple在python里都叫序列,序列有序号,序列有切片操作

        print(users[2:5])#取角标2到5的元素,含头不含尾
        print(users[2:5:2])#取角标2到5的元素,步长为2
        print(users[:5])#如果切片前面值不写,从开头取
        print(users[2:])#末尾不写,一直取到结束
        print(users[:])#都不写,取全部

      Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符 

        >>> ord('A')
        65
        >>> ord('中')
        20013
        >>> chr(66)
        'B'
        >>> chr(25991)
        '文'

      set:集合(无序)(不重复)

        len({1,2,3,4,5})=3

        集合操作:求差集{1,2,3,4,5}-{3,4};求交集{1,2,3,4,5}&{3,4};合并集合且去重{1,2,3,4,5}|{3,4,5,6};定义空集合set()

      dict:字典(由key和value构成)

        {1:'a',2:'b',3:'c'}

        访问字典:{1:'a','2':'b',3:'c'}[1]  {1:'a','2':'b',3:'c'}['2']  定义空字典{}

        字典的key要求取不可变数据类型,value可以去任意一种数据类型

      数据类型总结:

        

    四、python变量

      python的变量比较简单,就是起名字。

      name=['marry','kitte']

      变量由字母数字下划线组成,不能以数字开头

      a=1

      b=a

      a=3

      b还是等于1

      a=[1,2,3,4]

      b=a

      a[0]='1'

      b也改变了

      原因:int,str,tuple类型是值类型(不可变),list,set,dict类型是引用类型(可变);

      

      运算符:+、-、*、/、//、%、**

       赋值运算符:=、+=、*=、/=、%=、**=、//=

      比较运算符:==、!=、>、<、>=、<=

      逻辑运算符:and,or,not

      

      成员运算符:in,not in

      

      身份运算符:is,not is  比较的是两个变量的身份是否相等,是内存地址,不是值。

      

       

      位运算符(操作对象为二进制数据):&按位与  |按位或  ^按位异或  ~按位取反  <<做移动  >>右移动

      

     五、流程控制语句

      判断语句

      

      

      while循环

      

      for循环

      用来遍历序列、集合、字典

      

     六、python项目的组织结构

      写高性能,可复用的代码;python项目的组织结构有包、模块、类

      包和模块,包就是文件夹,模块就是文件

      命名空间:包名.文件名

      一个普通文件夹要想成为python包,文件夹应该包含一个特殊文件,文件名为:__init__.py

      包和模块不会被重复的导入

      避免循环引入(文件间相互引入)

      python在导入一个模块时,会执行这个文件的代码

      模块的内置变量:

      __name__  模块的完整名称(经典用法:if __name__ == '__main__':)

      __doc__  注释

      __package__  包

      __file__  文件路径

      dir函数可以打印出当前模块的内部变量

      例如:import sys

         infos=dir(sys)

         print(infos)

      包和模块的导入:

      一般的项目结构:

      

      导入包的绝对路径,import+绝对路径

      导入包的相对路径,用from,目录但是不能超过顶级包目录,main所在的目录不是顶级

      入口模块不能用相对路径导入

     七、函数

      在python命令行下,help(函数名),查看内置函数用法

      在python命令行下,import this,如何查看python之禅

      python函数有顺序,要先定义,后调用

      定义函数:

    ·  

      设置递归的最大层数:

      import sys

      sys.setresursionlimit(10000)

      如果定义函数时,没有写return,默认返回None;python可以返回多个变量(默认元组形式),可以用多个变量接受

      默认参数,函数默认参数在定义函数的时候设置;默认参数不能放到必须参数后面,更不能混杂放置;形参和实参按顺序对应,如果指定关键字,可以不按顺序;

      可变参数,*的使用

      

      

      

      变量的作用域

      有全局变量、局部变量,没有块级作用域

      global可以使局部变量变成全局变量

     八、面向对象

      1.类和对象

      类是现实世界或思维世界中的实体在计算机中的反映,他将数据以及这些数据的操作封装在一起,只负责定义,不负责运行

      对象是具体的类,是实例化之后的类

      

      类变量和实例变量的区别:总体特点和个体特点

      self 就是调用类的对象(实例),不可以省略

      

      实例方法可以操作实例变量,也可以操作类变量;类变量是属于类的,实例变量属于实例自己。self和cls是约定的关键字,可以定义为其他的,但最好不要改。

      2.方法和函数的区别

      面向对象和面向过程

      3.静态方法

      也需要装饰器;没有默认参数;类和对象都可以调用;也可以操作类变量,需要写全类名,而类方法可以用默认参数cls加点号操作,但是不能操作实例变量;

      4.成员的可见性

      方法和变量都有内部调用和外部调用的区别;

      在类的内部,需要定义一些不允许在类外面操作的变量,只有在类的内部可以操作,保证类数据的安全;

      在类外提倡用方法操作类变量,不建议在类外直接修改类变量;

      方法和变量名前加两个下划线,变成私有方法和私有变量;

      python不能通过动态的方式添加私有变量;

      5.继承、封装、多态

      super关键字的用法

      python支持多继承(先搞清楚单继承,因为有单继承就够用了,多数语言只支持单继承)

     九、正则表达式

      正则表达式是一个特殊的字符序列,一个字符串是否符合我们的设定

      

      字符匹配规则

      

      匹配字符串,python默认采取贪婪的匹配模式,满足5的时候还会继续匹配;在花括号后面加?,就变成非贪婪匹配;

      

      

      

       字符串的替换--re.sub

      

      re.finfall  re.match  re.search

      re.finfall在字符串里找所有的匹配项;re.match从字符串开头找匹配项,找到一个即停止;re.search在字符串里找匹配项,找到一个即停止;

      group分组

      

     十、

     十一、

  • 相关阅读:
    BZOJ3252攻略——长链剖分+贪心
    BZOJ3522[Poi2014]Hotel——树形DP
    BZOJ4012[HNOI2015]开店——树链剖分+可持久化线段树/动态点分治+vector
    BZOJ3626[LNOI2014]LCA——树链剖分+线段树
    BZOJ2157旅游——树链剖分+线段树
    BZOJ3531[Sdoi2014]旅行——树链剖分+线段树
    BZOJ2243[SDOI2011]染色——树链剖分+线段树
    zookeeper(1)初识zookeeper
    任督二脉
    RPC框架之RMI
  • 原文地址:https://www.cnblogs.com/yinguojin/p/9320810.html
Copyright © 2011-2022 走看看