学习Java一年的程序员的Python学习记录(转行了,校招Java根本找不到工作)

一 基础语法

  1. Python如果是部署在Linux上,是需要通过源码去编译安装的,在编译的过程中,会以来一些第三方的软件。所以这些软件需要提前安装一下。

    yum install wget zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel th-devel gce make zlib zlib-devel libffi-devel -y
    
  2. python的输出函数print()使用逗号就可以进行拼接

  3. python的输出函数print()有一个参数end,默认为换行符n。可以设置这个end参数,让print()不换行

  4. 在python中,变量是没有类型的,只是变量存储的数据是有类型的。

  5. python中类型转换直接使用str() int() float()方法就可以

  6. python中整型和浮点型无法与字符串类型进行拼接,即数字类型无法自动类型转换成字符串类型。

  7. python中字符串格式化有两种方式:

    • %占位符的方式:与其它类型的拼接一般使用占位符的形式。%d表示整数占位符,%f表示浮点数占位符,%s表示字符串占位符

      • 可以使用%m.n来控制占位符显示的宽度和精度。m表示宽度,即在命令行打印出的数字宽度,宽度大于数字本身会使用空格填充,空格小于数字本身则不生效;.n表示小数部分的精度。
    • f格式化方式:另一种字符串格式化的方式是使用f"{变量}"来进行。这种方式变量类型没有限制,也没有精度控制。适合对精度没有要求的场景

  8. python中的boolean类型首字母大写(Java全小写)

  9. python是严格缩进的语言。通过严格缩进来控制代码块的域。即通过缩进来替换其他语言中的{}。

  10. python中的逻辑判断符是 and 和 or,而不是&、|、&&、||

  11. python中的条件判断一般会省略()

  12. python的for循环的语法为

    for 临时变量 in 待处理的数据集:
        ...
    
    • 其中,待处理的数据集是一种序列类型
    • 在python中,序列类型有:字符串、range()函数生成的类型
  13. range()函数的语法

    • range(num):[0, num)

    • range(num1, num2):[num1, num2)

    • range(num1, num2, step):[num, num2),步长为step

  14. python中,在for循坏外部,竟然可以访问for语句中的临时变量!尽管这是不符合规范的,但确实可以访问。

  15. 在python中,返回值None可用作if的判断条件,None相当于False

  16. 在python中,变量中存放的数据类型可以随意变换,因此在初始化时,若没有初始化要求,则可以进行None值初始化

  17. 函数注释在函数中使用三引号进行定义,形式如下

    def fun(x):
        """
        :param x: 输入数据
        :return: 返回为空
        """
        print(x)
        return None
    
  18. python中无法在外部访问局部变量,但为什么for循环的局部变量是可以访问的?

  19. global关键字可以将函数中定义的变量申明为全局变量

二 集合

  1. python中,集合被称为数据容器,而且数据容易中的数据类型是不受限制的,那是不是就没有泛型?

  2. python中的列表就像是Java中数组和list的合体。下标索引从左向右是从0开始递增,从右向左是从-1开始递减。下标索引超出范围也会报错。

  3. python中list的方法有:

    • index(element):返回element元素在数组中的下标,如果不存在会报错

    • insert(index, element):在index位置插入element

    • append(element):将element插入到列表的尾部

    • extend(list):将其他的list插入到列表的尾部,即批量插入

    • del(index):删除index位置的元素

    • pop(index):取出index位置的元素,并删除。即弹出index位置的元素

    • remove(element):删除element元素。从左到右搜索,删除第一个符合条件的元素。

    • clear():清空列表

    • count(element):统计element元素在列表中的数量

    • len():返回列表的长度

  4. python中函数和方法是两个明确的概念。函数是在类之外的代码单元,方法是在类内部的代码单元。它们的功能是相似的,只是方法中多了一个参数self

  5. python中的元组可以认为是不可以被修改的列表。使用()来进行定义,或者使用tuple()来定义一个空元组。若元组只有一个元素,则需要在此元素之后增加一个逗号,,如果不加逗号则将被认为是string。

  6. 元组不可修改,因此tuple的方法比较少,有如下三个:

    • index(element)

    • len()

    • count(element)

  7. 元组的不可修改,意思是元组不可增加,删除,修改元素的类型。但如果元组的元素为其他可修改的数据容器,则可以修改该该数据容器的内容。

  8. 数据容器str也无法修改的。对str的任何的修改都不是在原str的,而是生成一个新的str。str本质上是一个字符的容器

  9. str的方法:

    • index(substr):查找substr在str中的骑士为止

    • replace(substr, new_substr):将substr替换为new_substr

    • split(substr):按照substr将str进行分割

    • strip(substr):str头尾的字符只要在substr中出现就会被删除,直到第一个没有出现在substr中为止。不传参数默认取出空格和换行符

    • count(substr):统计str中substr出现的次数

    • len():统计str的长度

  10. 序列的切片:就是和substring类似。序列是连续、有序、支持下标索引的数据容器的统称(列表,元组,字符串)。语法为:

    序列[开始位置:结束位置:步长]
    
    • 表示取出[开始位置, 结束位置)的子序列。左开右闭。
    • 当步长为负数时,表示从右到左进行反向切片。
    • 切片操作可以连续执行
  11. 集合就是Set,可以存储不重复的、无序的数据。使用{}或者set()进行定义。

  12. 集合的方法:

    • add(element):向set重添加一个元素element

    • remove(element):移除element元素

    • pop():随机取出一个元素,并从set中删除。即随机弹出一个元素。

    • clear():清空set

    • set1.difference(set2):返回set1和set2的差集。即找存在set1中而不存在set2中的元素

    • set1.difference_update(set2):在set1中消除set1和set2的差集

    • set1.union(set2):返回set1和set2的并集

    • len():返回set的长度

  13. set不支持下标索引,因此只能使用for循环来遍历

  14. 字典dict,就是Map。使用{}或者dict()进行定义,语法如下:

    {key:value, key:value, key:value...}
    my_dict = {} # 定义一个空字典、{}表示空字典而不是空集合,空集合只能使用set()来申明
    
  15. 字典的key不允许重复。dict的方法:

    • 获取key对应的value的方式为:

      my_dict[key]
      
    • 新增/更新字典元素的方式

      my_dict[key] = value
      
    • pop(key):删除元素

    • clear():清空元素

    • my_dict.keys:获取所有的key,类型为dict_keys

    • len():统计字典的长度

  16. 对字典进行for循环时,临时变量就是字典的key

  17. 数据容器的通用方法:

    • len()

    • max()

    • min()

    • 容器转换:

      • list(容器):将容器转换为列表。如果容器是字典,则之保留key,舍弃value
      • str(容器):将容器转换为字符串
      • tuple(容器):将容器转换为元组
      • set(容器):将容器转换为set。如果容器是字典,则之保留key,舍弃value
    • sorted(容器, reverse = True):排序,得到一个排序好的列表

三 函数

  • python中函数可以有多个返回值。在接收的时候可以使用相应个数的变量进行接收即可

  • python中函数的传参方式有:

    • 默认位置传参

    • 关键字参数:使用键=值的方式进行传参

    • 缺省参数:可以定义参数的默认值,在传参时如果不手动传参,则以默认值传参。默认值参数必须放在参数列表最后。

    • 不定长传参:

      • 使用*args来表示参数,在函数中,args为一个参数的元组
        • 使用**kwargs来表示参数,在传参的时候必须使用key = value的形式,在函数中mkwargs为一个参数的字典
  • python中,参数的类型可以是方法。这其实和Java中的匿名内部类比较相似。形参是接口,在传值的时候传一个匿名内部类,定义具体的方法逻辑。因此二者都可以使用lambda表达式。

四 IO

  • python中读取文件直接使用open()方法就可以

  • 文件对象的方法:

    • read(count):读取count长度的数据,如果不传入count,则默认读取整个文件

    • readline():读取一行

    • readlines():读取所有行,封装成一个列表

    • for line in 文件对象:循环遍历文件,每次得到一行数据

    • close():关闭文件对象

  • 使用with open() as f对文件进行操作,会在操作结束后自动关闭文件对象

  • python中的异常捕获语法

    try:
        ...
    except Error1 as e:
        ...
    except Error2 as e:
        ...
    else:
        ...
    finally:
        ...
        
    或者
    
    try:
        ...
    except (Error1, Error2, ...) as e:
        ...
    else:
        ...
    finally:
        ...
    

五 项目结构

  1. python模块就是一个.py文件。一个.py文件中可以有函数,类,变量等组成成分

  2. python模块导入的常用语法如下:

    [from 模块名] import [模块| 类 | 变量 | 函数 | *] [as 别名]
    
  3. 常用的组合形式如下:

    • import 模块名

    • from 模块名 import 类、变量、方法

    • from 模块名 import *

    • import 模块名 as 别名

    • from 模块名 import 功能名 as 别名

  4. 如果从不同模块导入了同名的功能,则后导入的会覆盖先导入的

  5. 在导入模块时,如果被导入模块中有可以执行的语句,则会直接执行这些语句。因此python中有一个__name__变量,哪个模块被执行了,当前模块的__name__变量就会被赋值为__main__,在被导入的模块中,将可执行的代码放入if __name__ == __main__中,在调用该模块时,这些可执行语句就不会执行了。

  6. 在python中,还有一个变量__all__,他是用来控制*的作用范围的。如果模块中定义了__all__,那么从别的模块中使用import *导入的时候,会导入__all__中申明的左右功能。没有在__all__中申明的则不会被导入。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r00phRko-1686202869988)(C:Usersding.shiAppDataRoamingLarkShellsdk_storage624d9c964a82fa272102de78ace684fbresourcesimagesimg_v2_ad4279bc-83b4-4f2f-85da-626c3096c3eg.jpg)]

  7. python包本质上是一个文件夹,用来管理某个部分的python模块。如果一个文件夹中有__init__.py文件,则这个文件夹就被认为是一个python包。

  8. import既可以导入模块,也可以导入类、方法、变量,因此导入包中的功能的时候,可以有多重写法:

    • from 包名.模块名 import 功能名,然后直接使用功能名进行调用

    • from 包名 import import 模块名,然后使用 模块名.功能名 进行调用

    • import 包名.模块名,然后使用 包名.模块名.功能名 进行调用

    • import 包名.模块名 as 别名,然后使用 别名.功能名 进行调用

  9. 常用的第三方包有;

    • 科学技术中常用的包:numpy

    • 数据分析中常用的包:pandas

    • 大数据计算中常用的包:pyspark、apache-flink

    • 图形可视化中常用的包:matplotlib、pyecharts

    • 人工智能中常用的包:tensorflow、pytorch

六 面向对象

  1. python中创建对象不需要new关键字,直接类名()就可以

  2. self关键字:表示调用该方法的类对象自身。在定义类的方法的时候必须带上这个参数,但在调用时传参可以忽略这个参数。

  3. 在类的内部访问类的成员变量或者成员方法的时候,必须要带上self。

  4. python中没有方法的重载,定义多个同名方法,只有最后一个会生效

  5. python中的成员变量可以不显式的定义,在构造函数中对成员变量进行赋值的时候,如果没有显式的定义成员变量,则赋值语句会隐式定义成员变量并赋值

  6. python的魔术方法:

    • __init__:初始化方法

    • __str__:相当于Java中的toString()

    • __lt__:小于或者大于比较,直接使用运算符

    • __le__:大于等于或者大于等于比较,直接使用运算符

    • __eq__:等于比较,直接使用运算符

  7. python中私有属性以两个下划线__定义。给类中的私有属性赋值不会报错,但会无效;获取类的私有属性会直接报错

  8. python中继承的语法是,直接在子类后面加个括号,括号里面是要继承的父类。

  9. python中是可以多继承的。在多继承中,如果发生同名冲突,按照谁先来谁优先级高原则进行覆盖。

  10. python中一个py文件可以有多个class

  11. pass关键字,表示什么都没有,起到一个占位符的作用。通常是为了满足语法的要求。也可以表示方法为抽象方法。

  12. python是一种弱类型的语言,传参的时候或者在方法里面使用参数的时候,可能无法知道有哪些方法可以使用。pycharm也无法做出提示。因此python提供了类型注解这一功能。在开发阶段为编译器和开发者提供类型的注释。

  13. 变量的类型注解的语法为:

    方式一:
    变量:类型 = 值
    
    方式二:
    变量 =# type: 类型
    

    在这里插入图片描述

  14. 函数形参的类型注解和函数返回值的类型注解的语法为:

    def 函数方法名(形参: 类型, ..., 形参: 类型) -> 返回值类型:
        pass
    
  15. union类型注解:用来定义混合类型的注解

  16. python中也有抽象类、接口、多态的概念。但是抽象类、接口并没有关键字来定义。是一种非强制性的约束。一般认为,方法体是pass的方法是抽象方法,含有抽象方法的类称为抽象类。所有方法都是抽象方法的类就是接口。这点和Java是相似的。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇

)">
下一篇>>