【Python】python入门笔记(java对比版)

这里记录一下python的学习笔记,主要是看菜鸟教程,熟悉一下python语法
菜鸟教程的链接: https://m.runoob.com/python/

python环境搭建没有什么特别的,就是安装python的时候记得勾上创建环境变量一栏。

我的环境:python3.7,本人有一定的java基础,所有很多和java相似的就不做记录了,主要是做个对比增强记忆。

1、基本变量类型和运算符

1.1、基本变量类型:

  • 数字(理解为java里面的基本变量)
  • 字符串 (String)
  • 列表 (list)
  • 元组 (不可变list)
  • 字典 (Map)

其中数字分为

  • int
  • long(已删除)
  • float
  • complex

注意这里long在python已经没有了,超过int自动转换为long类型,这也符合python语言智能的特性

最基本的使用

# input("按下 enter 键退出,其他任意键显示...\n")

#python3将long移除了,超过int自动转成long
a, b, c, d = 1, 51924361, 0.0, 3.14j

#列表,元组(不可变列表),字典(集合)
list = [1, 2, 3]
tuple = (123, 'john')
dict = {}
dict[1] = 123
dict[2] = '123'

# 可变集合
set1 = set(dict)

# 集合增和删,没有改
print(set1)
set1.remove(1);set1.add(123);
print(set1)

# 不可变集合
set2 = frozenset(range(10))
print(set2)

类型之间的转换比java方便许多,不用调用Arrays、Collections等类,直接“强转”就行:

int(x [,base ])         将x转换为一个整数  
long(x [,base ])        将x转换为一个长整数  
float(x )               将x转换到一个浮点数  
complex(real [,imag ])  创建一个复数  
str(x )                 将对象 x 转换为字符串  
repr(x )                将对象 x 转换为表达式字符串  
eval(str )              用来计算在字符串中的有效Python表达式,并返回一个对象  
tuple(s )               将序列 s 转换为一个元组  
list(s )                将序列 s 转换为一个列表  
chr(x )                 将一个整数转换为一个字符  
unichr(x )              将一个整数转换为Unicode字符  
ord(x )                 将一个字符转换为它的整数值  
hex(x )                 将一个整数转换为一个十六进制字符串  
oct(x )                 将一个整数转换为一个八进制字符串  

1.2、运算符

运算符其他和java一样,只有 ** 这个是幂运算是特有的

a ** b = a的b次方

Python 中数学运算常用的函数基本都在 math 模块、cmath 模块中。

Python math 模块提供了许多对浮点数的数学运算函数。

Python cmath 模块包含了一些用于复数运算的函数。

cmath 模块的函数跟 math 模块函数基本一致,区别是 cmath 模块运算的是复数,math 模块运算的是数学运算。

2、python条件运算

if elif else 这里和Java很类型,只不过多了个:标志位

if 判断条件1:
    执行语句1……
elif 判断条件2:
    执行语句2……
elif 判断条件3:
    执行语句3……
else:
    执行语句4……

while 和 for 也基本一致,多加了 : 号 不多做介绍

3、I/O

3.1、基本的输出输入

输入:input (enter中断)
输出:print (和C++很像哈哈)
不换行输出:print(1, end="")

3.2、文件

file object = open(file_name [, access_mode][, buffering])

  • file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
  • access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
  • buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

还有一些close()、write()、read()、rename()、remove()、mkdir()、tell()(输出文件位置)方法看名字就知道是什么意思了,具体的参数可以看源码不做记录了。

4、python面向对象

python虽然不像java一样,一切都是类,但是也是面向对象的语言

这里主要记录一下和java类不同的几处地方:

  • python声明类标志位是 : 而不是{} 例如 class test :
  • 权限只有protected和private, _变量名/函数(protected) 和 __变量名/函数(private)
  • 参数可以声明类型,通过 变量名:变量类型 这样的方式,也可以不声明
  • 还有一些只是名字不一样,例如this和self(这个是可以改的),构造函数叫__init__
  • 有一个和C++很类似的析构函数__del__用来垃圾回收
  • 类的继承通过参数里写父类替代extends
class Test:
    name = "", __age, _id

    def __init__(self, name):  # 这里叫什么名字,this就是什么名字,叫this也可以哈哈
        print(self.__class__)
        self.name = name;

    def __del__(self):
        class_name = self.__class__.__name__
        print(class_name, "销毁")

test = Test("wcy")
print(test.name)

class test2(Test):  # 这就是继承父类了,还可以写多个代表继承多个
    def __init__(self):
        print("调用子类构造方法")

5、python正则表达式

用的是re模块,下面的函数和java的使用大同小异,通过参数来控制匹配方式

5.1、生成正则表达式

re.compile 函数 和 java里的Pattern p = Pattern.compile()类似;

re.compile(pattern[, flags])

flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:

re.I 忽略大小写
re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
re.M 多行模式
re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
re.X 为了增加可读性,忽略空格和 # 后面的注释

5.2、re.match函数

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回 none。

re.match(pattern, string, flags=0)

print(re.match('www','www.123.com'))
print(re.match('www','www.123.com').span())
print(re.match('com','www.123.com'))

console:

print(re.match('www','www.123.com'))
print(re.match('www','www.123.com').span())
print(re.match('com','www.123.com'))

我们可以使用 group(num) 或 groups() 匹配对象函数来获取匹配表达式。

import re
 
line = "Cats are smarter than dogs"
 
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
 
if matchObj:
   print "matchObj.group() : ", matchObj.group()
   print "matchObj.group(1) : ", matchObj.group(1)
   print "matchObj.group(2) : ", matchObj.group(2)
else:
   print "No match!!"

console:

matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

5.3、re.search函数

re.search 扫描整个字符串并返回第一个成功的匹配。

re.search(pattern, string, flags=0)

5.4、检索和替换

compile类似于java里面的replace

re.sub(pattern, repl, string, count=0, flags=0)

pattern : 正则中的模式字符串。
repl : 替换的字符串,也可为一个函数。
string : 要被查找替换的原始字符串。
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。

还有一些findall、finditer、split等方法和java类

posted @ 2022-06-30 19:35  吴承勇  阅读(91)  评论(0编辑  收藏  举报