学习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分组

  

 十、

 十一、

原文地址:https://www.cnblogs.com/yinguojin/p/9320810.html