Python学习

Python与java语言的一些区别

 

本博客部分内容是摘自其他博客的内容,具体链接我也忘记,忘多包涵

 

1、


    python
只有 4 种类型的数:整数,长整数,浮点数和 java 中没有的复数;
    java
则有 charshort,byteintlongfloat,double 类型 ;


2 、字符串
    python
没有表示单个字符的 char 类型,可以用单引号,双引号来表示一个常量字符串,也可以用三引号 (''' 或者 “”“) 来表示一个多行的字符串;
    java
char 来表示单个字符,用 String 类表示一个字符串,常量字符串由双引号表示;
   
当一个字符串在一行表示不下, python 中在行尾加一个反斜杠 (\) ,表示字符串在下一行继续; java 用加号 (+) 连接;
    python
中还有可以在字符串前加前缀 rR :表示自然字符串,即不对字符串做转移处理 (java 方便 ) ;还可以加前缀 uU :表示 unicode 字符串;
    python
字符串实际上是有序的字符集合,支持索引,分片操作,类似于 List 操作等。
3 、缩进
    python
用缩进来识别语句间的逻辑层次;
    java
主要用花括号和分号来识别,不强制缩进;

4 操作符
     python

     **
:表示幂符号,如 x**y 表示 xy 次方;
     //
:表示整除,即商的整数部分;
     ~
:按位翻转, ~x 就是 -(x+1)
    
以上这些都是 java 中没有的 , 但是 python 没有自增 , 自减运算符,并且 python     andornot 表示逻辑与,或,非。

5if 语句
    python
if 语言的条件表达式可以不接括号,和 java 不同的是, else ifpython 中写作 elif ,并且在 ifelifelse 语句后面需要加冒号;
    python
中没有 switch 语句,需要用 if 来代替;

6while 语句
    python
while 语句和 java 的最大不同是, while 语句可以接 elseelse 语句块在循环条件不满足时执行。 ( 这个是不是有点多余呀,循环条件不满足,程序不也是执行 while 块后面的语句嘛! )

While True

if 条件语句: break

7for 语句
     python
for 语句与 javac,c++,c# 中传统的 for 语句都不一样,它用 in 把表示变量的范围,类似 java 中的 foreach ;和 while 一样,也可以接 else 块;
     forwhile 中,如果被 break 中断,将不执行 else 语句块;循环中还支持 if not in 之类的
8
函数

函数只需要 def 函数名字(参数列表):

返回数据支持多个数据,也就是元组(参数 1 ,参数 2 ,参数 3 ,参数 4 ),也可以不返回数据默认返回 non

9 、注释
     python
中以 '#' 开始的行为注释(貌似很多脚本语言都喜欢用 # 做注释,还有 ””   “”” 三个双引号是多行的注释);
     java
中主要是 "//"" /* .... */ "

注意 python 的注释还很版本有关系,自己尝试的时候需要注意

10 、类的定义

构造函数是def __init__(self, 
参数):

所有类的函数都需要在函数参数列表中加一个self
,类似于java
语言的this

11 、类私有方法

如果一个 Python 函数,类方法,或属性的名字以两个下划线开始 ( 但不是结束 ) ,它是私有的;其它所有的都是公有的。 Python 没有类方法保护 的概念 ( 只能用于它们自已的类和子类中 ) 。类方法或者是私有 ( 只能在它们自已的类中使用 ) 或者是公有 ( 任何地方都可使用 )

12 、无处不在的异常处理

Python 使用 try...except 来处理异常,使用 raise 来引发异常。 Java C++ 使用 try...catch 来处理异常,使用 throw 来引发异常

13 、垃圾回收机制

如果说创建一个新的实例是容易的,那么销毁它们甚至更容易。通常,不需要明确地释放实例,因为当指派给它们的变量超出作用域时,它们会被自动地释放。内存泄漏在 Python 中很少见。

判断一个对象是否销毁:sys.getrefcount(obj)

 

Some common situations that may prevent the reference count of an object from going to zero include: circular references between objects (e.g., a doubly-linked list or a tree data structure with parent and child pointers); a reference to the object on the stack frame of a function that caught an exception (the traceback stored in sys.exc_traceback keeps the stack frame alive); or a reference to the object on the stack frame that raised an unhandled exception in interactive mode (the traceback stored in sys.last_traceback keeps the stack frame alive).


14、常见的语法操作

 

1 、常用的语法是:类的构造、需要特别熟练 python 中三个内置对象,分别是 list ()、 dict()tuple 这三个在开发中经常需要用到,具体的用法在这里就不阐明了,下面是一本比较好入门的书籍: http://www.woodpecker.org.cn/diveintopython dive into python

2 、时间类的操作分别为 datetime.datetime,time 这两个对于时间的操作

3 、模块的导入f rom module import 的基本语法:

from UserDict import UserDict

它与你所熟知的 import module 语法很相似,但是有一个重要的区别:UserDict 被直接导入到局部名字空间去了,所以它可以直接使用,而不需要加上模块名的限定。你可以导入独立的项或使用 from module import * 来导入所有东西。

什么时候你应该使用 from module import

  • 如果你要经常访问模块的属性和方法,且不想一遍又一遍地敲入模块名,使用 from module import
  • 如果你想要有选择地导入某些属性和方法,而不想要其它的,使用 from module import
  • 如果模块包含的属性和方法与你的某个模块同名,你必须使用 import module 来避免名字冲突。

 

15、开发中注意的地方

 

  • 字符串的连接问题, python 在连接字符串是用 + ,注意类型必须是一致的即字符串不能和数字连接否则就报错,所有的类型必须转换为字符串使用 str ()

如果字符串转换对应的类型就用类型强制转换,如: float ()

 

  •    内置函数: __cmp__ ==   __len__len ()

           __delitem__ del instance[key]  

  •   Java 中,通过使用 str1 == str2 可以确定两个字符串变量是否指向同一块物理内存位置。这叫做对象同一性 ,在 Python 中写为 str1 is str2 。在 Java 中要比较两个字符串值,你要使用 str1.equals(str2) ;在 Python 中,你要使用 str1 == str2

 

  •   数据属性和类属性     class FileInfo(dict): 继承

 

Python 支持数据属性 (Java Powerbuilder 中叫做 实例变量 ,在 C++ 中叫 数据成员 ”) ,它是由某个特定的类实例所拥有的数据。在本例中,每个 UserDict 实例将拥有一个 data 数据属性。要从类外的代码引用这个属性,需要用实例的名字限定它, instance .data ,限定的方法与你用模块的名字来限定函数一样。要在类的内部引用一个数据属性,我们使用 self 作为限定符。习惯上,所有的数据属性都在 __init__ 方法中初始化为有意义的值。然而,这并不是必须的,因为数据属性,像局部变量一样,当你首次赋给它值的时候 突然产生

类属性既可以通过直接对类的引用,也可以通过对类的任意实例的引用来使用,

Java 中,静态变量 (Python 中叫类属性 ) 和实例变量 (Python 中叫数据属性 ) 两者都是紧跟在类定义之后定义的 ( 一个有 static 关键字,一个没有 ) 。在 Python 中,只有类属性可以定义在这里,数据属性定义在 __init__ 方法中

Python 中没有常量。

 

  • 基于 dictionary 的字符串格式化介绍
  •  params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"} "%(pwd)s" % params 'secret'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值