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

news2024/12/26 11:26:12

文章目录

    • 一 基础语法
    • 二 集合
    • 三 函数
    • 四 IO
    • 五 项目结构
    • 六 面向对象

一 基础语法

  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:\Users\ding.shi\AppData\Roaming\LarkShell\sdk_storage\624d9c964a82fa272102de78ace684fb\resources\images\img_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是相似的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/623149.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VS报错集锦 --- 出现:error LNK2005: _DllMain@12 已经在 *****.obj 中定义 错误

出现的问题: 1>mfcs140d.lib(dllmodul.obj) : error LNK2005: DllMain 已经在 DllMain.obj 中定义 解决方法: 项目 -- 属性 -- c/c -- 预处理器 -- 将预处理定义中的_USRDLL 删除即可

“大四在读生”都四面成功拿到字节跳动Offer了,你还有什么理由去摸鱼?

博主大四在读,投的是字节 Data 的软件测试岗位实习生,base 杭州。 时间线: 4.12 投递4.13 安排简历筛选4.14 安排面试4.19 16:00 一面4.22 16:00 二面 4.23 8:00 三面4.23 16:00 HR 面4.23 16:30 Offer 一面 你对字节跳动的了解和认知有哪…

Allegro16.6详细教程(四)

(2) PIN的定義 如果用第一種方式產生Netlist的話,就要對於一些Power pin加以定義。 1.滑鼠點選想定義的零件。 2.點選選單中Edit>Part。 3.用滑鼠點選想定義的Pin腳。 4.點選功能表中Edit>Properties,透過這些步驟就看到了下面的這個對話方塊了。 在這裏主要是把T…

Apache Flink 1.17

Apache Flink 1.17 1. Flink 1.17 Overview2. Flink 1.17 Overall Story3. Flink 1.17 Key Features4. Summary5. Q&A 1. Flink 1.17 Overview Flink 1.17 版本完成了 7 个 FLIP,累计贡献者 170,解决 600Issue 以及 1100Commits,整体来看…

ppt如何录屏?电脑怎么录制ppt文稿?

案例:在电脑上怎么录制PPT文稿,具体怎么操作? 【我工作的时候经常需要用到ppt文稿,有时还需要对PPT文稿进行录制,但我不知道如何操作。有小伙伴知道在电脑上如何录制ppt文稿吗?需要用到什么工具&#xff1…

热水器语音芯片,带有温度检测算法、数码管显示语音ic,WTV380

在现代科技不断进步的时代,智能家居产品成为越来越多消费者的选择,在热水器行业为了提供更智能、便捷的用户交互体验,一款带有数码管显示语音提示二合一,多功能语音芯片方案 —— WTV380 WTV380能够实现语音播报热水器的各种信息…

学PCB设计要精通模电吗?

PCB设计是电子工程师在电路设计领域中的重要一环,而模拟电路设计(简称:模电)是其中的核心内容之一,很多小白在初学PCB设计都会困惑,学PCB设计是否要精通模电?这篇文或许能解惑,本文将…

【LeetCode热题100】打卡第16天:组合总和

文章目录 组合总和⛅前言🔒题目🔑题解 组合总和 ⛅前言 大家好,我是知识汲取者,欢迎来到我的LeetCode热题100刷题专栏! 精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数…

Vue.js 中的 $router 和 $route

Vue.js 中的 $router 和 $route 在 Vue.js 中,$router 和 $route 是两个常用的对象,用于处理路由相关的操作。在本文中,我们将介绍 $router 和 $route 的区别,并且演示如何使用它们。 $router 和 $route 的区别 在 Vue.js 中&am…

Windows 下挂载使用 CephFS

一、Ceph集群搭建和CephFS创建 参考上期文章 Centos stream 8 使用 cephadm 安装 Ceph (17.2.6 quincy)集群_阿波罗.2012的博客-CSDN博客 二、将CephFS挂载到Windows Server 2019下 1、准备Dokany 下载地址:Release 1.5.1.1000 dokan-dev/dokany GitHub 下载…

【数据分享】1929-2022年全球站点的逐年平均降水量(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,说到常用的降水数据,最详细的降水数据是具体到气象监测站点的降水数据! 之前我们分享过1929-2022年全球气象站点的逐年平均气温数据、逐年最高…

实用工具篇(三):一款 IntelliJ IDEA 神级插件Bito

目录 1、什么是Bito 2、为什么要使用Bito 3、如何安装Bito插件 4、如何使用Bito插件 1、什么是Bito Bito是一款在IntelliJ IDEA编辑器中的插件,Bito插件是由ChatGPT团队开发的,它是ChatGPT团队为了提高开发效率而开发的一款工具。 Bito插件的强大…

Clion开发STM32之ESP8266系列(一)

系列开篇说明 结合个人的开发经验以及实际情况,分享stm32结合esp8266的一个开发项目。从0开始构建项目程序。为了方便记录项目开发记录,此系列的每个篇章都在git上做一个节点。此系列也是作为一个个人的开发思路和经验本次开发选用的芯片为stm32f103vet…

GIT安装教程(入门)

目录 前言 Git作者 官网 GIT优点 GIT缺点 为什么要使用 Git 下载以及安装步骤 一、官网下载 二、GIT安装步骤 GIT习题 习题一 总结 前言 Git 是一个分布式版本控制及源代码管理工具;Git 可以为你的项目保存若干快照,以此来对整个项目进行版本管理 Git作…

lan区段

LAN区段相当于说模拟出一个交换机或者集线器出来,把不同虚拟机连接起来,与物理机不进行数据交流,与外网也不进行数据交流,构建一个独立的网络。没有DHCP功能,需要手工配置IP或者单独配置DHCP服务器。

AG-Grid JavaScript 29.3.5 企业版 注册版

世界上最好的 JavaScript 网格 开发人员构建企业应用程序的专业选择 开始吧 Javascript 数据网格 Javascript 反应数据网格 反应 角度数据网格 有角的 Vue 数据网格 视图 实体数据网格 坚硬的 有很多基于组件的表库,但我相信 AG Grid 是黄金标准,也是我最…

抖音账号矩阵系统开发源码

技术自研框架开发背景: 抖音账号矩阵系统是一种基于数据分析和管理的全新平台,能够帮助用户更好地管理、扩展和营销抖音账号。 部分源码分享: //计算分页$active_list_all $Video_model->getCount($where);$page_libs new Libs_Pagin…

Mysql5.7.x镜像开启log-bin失效及解决

文章目录 [toc] 1.问题2.mysql5.7.16的部署及开启log-bin2.1 准备挂载目录2.2 启动容器命令2.3 开启log-bin配置文件内容 3.原因及解决办法4.了解binlog和redolog有什么区别?5.总结 1.问题 由于在本地搭建了一个数据同步的环境用到了mysql,所以用Docker的…

肠道健康从核心菌属开始:肠道菌群的关键

谷禾健康 5月29日,是世界肠道健康日。肠道是人体最重要的消化系统之一,与人体健康紧密相关。而肠道菌群作为肠道重要组成部分,在肠道健康中发挥着重要的作用。 编辑​ 由于基因、环境、饮食、药物等因素的影响,每个人的肠道菌群都…

前端VUE3+Vite +UniAPP-- 框架搭建

除了HBuilderX可视化界面,也可以使用 cli 脚手架,可以通过 vue-cli 创建 uni-app 项目。 全局安装 vue-cli 官网 npm install -g vue/cli npx degit dcloudio/uni-preset-vue#vite-ts vue3-uniapp配置tailwindcss插件 官网 npm install tailwindcss np…