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): pass

class 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")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值