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

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.xdnf.cn/news/14241.html

相关文章:

  • 深入解析ReentrantReadWriteLock读写锁机制
  • 【python深度学习】Day53 对抗生成网络
  • 人工智能学习23-BP-图像编码
  • c++编译第三方项目报错# pragma warning( disable: 4273)
  • HTML5白云飘飘动态效果教程
  • 华为云Flexus+DeepSeek征文 | 基于华为云Dify-LLM应用开发平台构建写作助手
  • 达梦分布式集群DPC_DPC的执行计划新增操作符详解_yxy
  • 区间合并:牛奶
  • 【慢摹】TRL训练器细节详解(SFT/PPO/DPO/GRPO)
  • 自用方案总结
  • 如何在 Elementary OS 上安装 Snap Store
  • Thymeleaf功能标签th:block
  • java面试总结-20250605
  • 5G核心网Non-IP数据报文转发机制:Unstructured会话与协议栈解析
  • 抖音 pc + 翻页
  • C#最佳实践:推荐使用泛型而非装箱、拆箱
  • 60、数据访问-数据库场景的自动配置分析与整合测试
  • c++26新功能—契约编程
  • 单测时如何让 mock 的接口在长链路调用时一直生效
  • 从STM32到NXP:GPIO就像装修房子,多了个“智能开关”
  • 基于 SpringBoot+Servlet+JSP 的医院医保管理系统的设计与实现,论文7000字,可根据实际情况调整
  • ES+索引库文档操作
  • [CVPR 2025] DiCo:动态协作网络助力半监督3D血管分割新突破
  • AI Agent实战 - LangChain+Playwright构建火车票查询Agent
  • 人工智能学习28-BP过拟合
  • [k8s]--exec探针详细解析
  • java常见第三方依赖以及相关安全问题
  • http1.x VS http2.x 协议
  • Spring Cloud Alibaba 中间件
  • 硬编码(修改RIP相关指令)