书写
Python和java以及c在代码书写格式上的区别
- Python不需要在代码末尾加分号
- Python不需要在方法后面加大括号
注释
- 单行注释:以井号开头,可写在某行代码后面,也可单独一行
- 多行注释:以三个连续单引号或双引号开始和结束
变量
在python中,变量是没有类型的,类型是属于对象的
a = ['a','h','j','s']
a = 2123
- 数字类型 Number
- 整数:等同于 int
- 浮点数:包括float和double
- 复数:一个由虚部和实部构成的数字,虚部用 j/J 表示
- 布尔值:True和False,可以直接跟数字操作,在某些时候非零数可以当做True,但 False 为0,True 为1
- 字符串类型 String
- 单引号(‘i love programming’)
- 双引号(“i love programming”)
- 三引号(’’‘i love programming’’’):可括起多行注释
- 单双引号交错使用("<hehe = 'das '>")
- 元组 Tuple
- 使用小括号创建,元素不可修改,例:(1,2,3)
- 列表 List
- 使用方括号创建,类似数组,例:[1,1,2,3,‘a’]
- 字典 Dictionary
- 使用大括号创建,类似java中的map,是一种可变容器模型,具有键值对(key=>value),例:{‘tom’:1, 9:8}
- 集合 Set
- 使用大括号或者set()创建,但空集合必须用set()创建,是一个无序的不重复元素序列,例:{‘a’, ‘b’}
输入和输出
- 输入:input(),默认为String类型,如需要其他类型请自行强转
i = int(input("请输入"))
- 输出:print(),但有两种格式
- 利用百分号:
print("i love %s"%"programming")
- 利用format():
print("i love {0}".format("programming"))
- 利用百分号:
None
- 为空,类似于java中的null
运算符
这里只举列出和java不同的运算符
- 算数运算符
- 没有自增自减
- 整除为 // ,/ 为数学的除法
- **为幂运算
- 逻辑运算符
- 逻辑与 and :当 a 为 False 时,a and b 返回 False ,否则返回 b
- 逻辑或 or : 当 a 为 True 时,a or b 返回 a ,否则返回 b
- 逻辑非 not : 当 a 为 True 时,not a 返回 False ,否则返回 True
- 成员运算符
- not in : 当 x 不在 y 序列中,x not in y 为 True
- in : 当 x 在 y序列中,x in y 为True
- 身份运算符
- is : 判断两者是否引用于同一个对象,是则返回True,类似于 id(x) == id(y),id() 为获取对象地址
- is not : 判断两者是否引用于不同的对象,是则返回True,类似于 id(x) != id(y),id() 为获取对象地址
- 优先级
运算符 | 描述 |
---|---|
** | 指数(最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
/ % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位’AND’ |
^| | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
and or not | 逻辑运算符 |
读写文件
- open方法
# 写文件
f = open(r"xxx.txt", "w")
# 以只写的方式打开文件,r为只读,w为只写(如果没有文件则会创建),a为追加,x为创建(如果存在则会报错),默认为r
f.write("i love programming") # 写入操作
f.close() #关闭文件(有打开就一定要关闭)
# 读文件
f = open(r"xxx.txt", "r")
str = f.read() # 读取操作
print(str)
f.close()
- with语句(推荐使用)
with open(r"xxx.txt", 'r') as f:
f.seek(2, 0)
# seek(offset, from), offset为读写指针移动的字节数,打开文件时指针在0处,form:0(从文件头开始)、1(从当前位置开始)、2(从文件末尾开始)
print(f.tell()) # 显示当前指针位置
str = f.read()
print(str)
#不需要关闭
- 持续化:
- pickle : 实现了序列和反序列化
- 序列化 :将程序中运行的对象信息保存到文件中
- 反序列化 :在文件中创建上一次程序保护的对象
- shelve : 类似字典用key=>value对保存数据,但存在一个点(写回问题)
- pickle : 实现了序列和反序列化
# 序列化
import pickle
name = 'tom'
with open(r'xxx.txt', 'wb') as f:
pickle.dump(name, f)
# 反序列化
import pickle
with open(r'xxx.txt', 'rb') as f:
name = pickle.load(f)
print(name)
# 写回问题
import shelve
shv = shelve.open(r'shv.dat', writeback=True)
shv['tom'] = {'t':123, 'o':456, 'm':789}
k = shv['tom']
print(k)
k['t'] = 100
shv.close()
shv = shelve.open(r'shv.dat')
k = shv['tom']
print(k)
shv.close()
# 如果第一次没有writeback=True,k['t'] = 100就没有写入,第二次的结果就没有改变