前言
我本是java派的,已经有几年了,直接也接触过其他语言,比如从最早的汇编语言到高级语言始祖的C;
但是近来越发觉得python很火,现在以我的视角开始写入门python基础,算是入坑了;
我的计划是这个系列要更契合那些有java基础的同胞们,用你们已有的java基础,用对比的方式,更快的入手python
1.python介绍
python的版本现在主要分为python3.0和python3.0以下,因为相对于Python的早期版本,python3.0是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。
后面我们以python3.0为例
2.python的一些简单的常识
1.控制台打印语句,
对于java来说,为:System.out.println();
python为:print()
2.定义一个变量
java是有8种基本类型或者集合或者自定义对象作为引用
python是不用引用的,直接定义就好,python会自动识别类型
举个例子:
java:int a = 1;String b = "hello!";
python:a = 1b = "hello!"
3.类型
java中有8大基本类型和list,set,map,数组,String
python中有数字,字符串,列表,元组,字典
字符串:
字符串可以说是java开发中最常用到的了, String str = "hello"
还有字符串的截取,拼接等等,甚至可以说是增删改查样样都是手到擒来python中的字符串,也是增删改查,但方式稍有不同:# 字符串截取
a = "hello"
print(a) # hello
print(a[0]) # h
print(a[0:1]) # h
print(a[0:2]) # he
print(a[0:5]) # hello
print(a[:5]) # hello# 字符串in not in
if ("h" in a):print("h in", a)
else:print("h not in", a)if ("g" not in a):print("g not in", a)
else:print("g in", a)# 字符串的三引号
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print(para_str)# 字符串的转义
print("abc\ndef")
print(r"abc\ndef")# 字符串的格式化
print("我叫%s,今年%d岁" % ("张三", 30))
数字
java中有byte,short,int,long,float,double,是按照占用空间和空间存储来严格划分
python中就int和float,代表一切了,这有点像js中的风格,业内称为弱引用
元组
python的元组,像java的list,但元素不可变
作为参数时,前面加*
使用: “aa”,“bb”,"cc"或 *range(10)
# 元组定义用小括号,逗号隔开,元组内元素不可更改,其他功能与列表类似
tup1 = ("aa", "bb", 123, 456)
#
# tup1[0] = "zz" # 这行会报错
# print(tup1)# 元组中只有一个元素的时候,元素后面需加上逗号,否则会被认为其他类型
tup2 = (2)
print(type(tup2)) # <class 'int'>
tup3 = (2,)
print(type(tup3)) # <class 'tuple'>
列表
python的列表,就像java的List集合
# 列表定义用大括号,逗号隔开,获取某个元素,遍历
list1 = ["aa", "bb", 123, 456]
print(list1[0]) # aa
print(list1) # ['aa', 'bb', 123, 456]
for x in list1:print(x)# 列表尾部增加元素
list1.append("cc")
print(list1) # ['aa', 'bb', 123, 456, 'cc']# 删除某个固定index的元素
del list1[4]
print(list1) # ['aa', 'bb', 123, 456]# 修改
list1[0] = "zz"
print(list1) # ['zz', 'bb', 123, 456]
字典
python的字典,就像java的Map集合
作为参数时,前面加**
使用: name=aa 或 **{“name”:“aa”}
# 字典就是{}定义包住,里面是键值对,键值对直接逗号隔开,键与值冒号隔开
# 值可以是任意对象
# 键可用数字,字符串,或者元组,不能用列表
# 键不可重复,若定义重复,后面的会覆盖前面的值
dic1 = {"aa": 11, "bb": 22, "aa": 33}
print(dic1) # {'aa': 33, 'bb': 22}
# 字典遍历
for x in dic1:print(x)print(dic1[x])
集合
python的集合,感觉就像java的Set集合
# 集合(set)是一个无序的不重复元素序列
# 可以使用大括号 { } 或者 set() 函数创建集合
# 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
# set()中只能创建一个,但可以放一个元组
s1 = {"aa", "bb", "cc"}
s2 = set(("aa", "bb", "cc"))
print(s1) # {'cc', 'bb', 'aa'}
print(s2) # {'cc', 'bb', 'aa'}# 增
s1.add("dd")
print(s1) # {'cc', 'dd', 'bb', 'aa'}
# 删,若元素不存在会报错
s1.remove("dd")
print(s1) # {'cc', 'bb', 'aa'}
# 删,若元素不存在不会报错
s1.discard("dd")
print(s1) # {'cc', 'bb', 'aa'}
# 随机删一个元素
s1.pop()
print(s1)
# 清空
s1.clear()
print(s1) # set()
定义一个函数
def hello():print("hello")
#参数可以默认值,但必须放在最后面
def hello(name,age=18):print("hello")
#调用可以不指定默认参数
hello(zhangsan")
#这种参数的调用比较特殊:
def hello(*,name,age):print("hello")
#调用必须指定形参名字
hello(name="zhangsan",age=18)
#入参必须是字典类型
def hello(**name):print("hello")
#调用
hello(name="zhangsan")
hello(**{"name":"zhangsan"})
#入参必须是元组类型
def hello(*name):print("hello")
#调用
hello("zhangsan","lisi","wangwu")
hello(*range(10))
#匿名函数
a = lambda x,y:x+y
#等同与下面这个普通函数
def a(x,y):return x+y
其他的方法调用,和java基本一样