当前位置: 首页 > news >正文

python与java的区别

java老程序员来学习python了,记录一下两种类型语言的区别:

Python与Java变量类型对比

 python里面定义变量不需要指定变量的数据类型,并且是可以修改成其他类型java里面定义变量要指定变量的数据类型,指定以后不可以修改成其他数据类型

类型系统基础

特性PythonJava
类型系统动态类型 (Dynamic Typing)静态类型 (Static Typing)
类型检查时机运行时检查编译时检查
变量重新赋值可赋值为不同类型不可改变变量声明类型

变量声明

Python

# 动态类型
x = 10          # 整数
x = "hello"     # 合法,变为字符串# 类型注解(Python 3.5+)
y: int = 20     # 注解仅为提示,不影响运行

Java

// 静态类型
int x = 10;
x = "hello";    // 编译错误// 泛型
List<String> list = new ArrayList<>();

类型严格性

情景Python行为Java行为
类型不匹配操作抛出TypeError编译错误
数字+字符串5 + “3” → TypeError5 + “3” → “53”(隐式转换)
类型比较“5” == 5 → False“5” == 5 → 编译错误

面向对象差异

多态实现

Python鸭子类型:
class Duck:def quack(self): passclass Person:def quack(self): pass#接受任何有quack()的对象
def make_quack(obj):obj.quack()
Java接口继承:
interface Quackable {void quack();
}class Duck implements Quackable { ... }// 只接受实现Quackable的对象
void makeQuack(Quackable q) {q.quack();
}

容器类型对比

特性PythonJava
列表/数组可混合不同类型必须声明元素类型
泛型运行时类型擦除编译时泛型检查
典型声明lst = [1, “a”]List list = …

总结对比表

对比维度Python特点Java特点
类型确定性运行时确定编译时确定
变量灵活性可随时改变类型类型固定
类型注解可选(3.5+)强制声明
多态方式鸭子类型接口继承
错误发现时机运行时编译时
典型应用场景快速开发/脚本大型企业应用

python中的函数名称也可以当成一个变量

java用久了,很容易写出下面这种代码,在python里面运行就会报错。原来在python里面,这种操作就是将函数调用结果赋值给了函数名本身,导致原始函数被覆盖。

def hello():print("hello!")hello = hello()
hello()

python支持下面这种写法,也就是相当于将函数重命名:

def hello():print("hello!")f = hello
f()

python中函数的形参可以指定默认值,这样在调用函数的时候可以不传这个参数

def sayHello(name="world"):print("hello,", name)sayHello()

python中的函数实参传递支持按参数名称传参

def sayHello(name="world", age=20):print("hello,", name, "age:", age)sayHello(age=18, name="mary")
http://www.dtcms.com/a/250593.html

相关文章:

  • Appium + Ruby 测试全流程
  • Java线程转储:快速定位死锁与阻塞
  • Kubernetes镜像拉取认证指南
  • BeckHoff PLC --> 料筐(KLT Box)自动对中与抓取程序分析
  • 从检索到生成:RAG 如何重构大模型的知识边界?
  • 【无标题】二维势能塌陷的拓扑色动力学:数学物理框架与引力本质探索
  • 通达信腾龙凤舞幅图指标公式
  • 【算法篇】逐步理解动态规划模型7(两个数组dp问题)
  • 高效录屏工具推荐:从系统自带到专业进阶
  • leetcode 2566. 替换一个数字后的最大差值 简单
  • Relook:softmax函数
  • python第52天打卡
  • Anylogic中使用Python执行3(求和)
  • CountDownLatch入门代码解析
  • ELK日志文件分析系统——L(Logstash)
  • Flask 动态模块注册
  • python中的异常处理try-except - else - finally与自定义异常处理
  • 探索数据的力量:Elasticsearch中指定链表字段的统计查询记录
  • 生日悖论理论及在哈希函数碰撞中的应用
  • AndroidMJ-mvp与mvvm
  • ASR语音转写技术全景解析:从原理到实战
  • 人工智能学习21-Pandas-pivot_table
  • 关于MCU、MPU、SoC、DSP四大类型芯片
  • 基于区块链的去中心化身份验证系统:原理、实现与应用
  • 【软测】接口测试 - 用postman测试软件登录模块
  • GDI+ 中与GDI32取图形区域函数对比CreateEllipticRgn/CreatePolygonRgn
  • day31 打卡
  • 茶文化部分答案
  • 数据库学习(六)——MySQL事务
  • Linux文件权限管理核心要点总结