0(整型) 0.0(浮点型) 0L(长整型) 0.0+0.0j(复数) “”(空字符串) ()(空元组){}(空字典)
a = [1, 2, 3, 4, ['a', 'b']]
b = a # 引用,除非直接给a重新赋值,否则a变则b变,b变则a变
c = copy.copy(a) # 浅复制,只会拷贝父对象, 不会拷贝父对象中的子对象,所以若a的子对象变则c 变,但是父对象变c不会变
d = copy.deepcopy(a) #深拷贝,完全拷贝,完全独立于原对象,a变也不变
a.append(5) # 改变父对象
a[4].append('c') #改变父对象中的 ['a', 'b']子对象
__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值。
__new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法。
即,new在init之前被调用,new的返回值(实例)将传递给init方法的第一个参数,然后init给这个实例设置一些参数。
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。
解释性语言的定义:
解释性语言的程序不需要编译,在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就需要逐行翻译一次,效率比较低。
现代解释性语言通常把源程序编译成中间代码,然后用解释器把中间代码一条条翻译成目标机器代码,一条条执行。
编译性语言的定义:
编译性语言写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。
import math
a = 3.45
print(math.ceil(a)) 结果是4
print(math.floor(a)) 结果是3
print(round(a)) 结果是3
判断一个变量是否是某个类型可以用isinstance()判断:
class Student():
def __init__(self, name, score):
self.name = name
self.score = score
a = '10'
b = 3
c = [1, 2, 3]
d = (1, 2, 3)
f = Student('Eden', 99.9)
print(isinstance(a, str)) # True
print(isinstance(b, int)) # True
print(isinstance(c, list)) # True
print(isinstance(d, tuple)) # True
print(isinstance(f, Student)) # True
python assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假。可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触发异常。
assert 1==1
assert 2+2==2*2
assert len(['my boy',12])<10
assert range(4)==[0,1,2,3]
assert expression
等价于
if not expression:
raise AssertionError
assert的异常参数,其实就是在断言表达式后添加字符串信息,用来解释断言并更好的知道是哪里出了问题。格式如下:
assert expression [, arguments]
assert 表达式 [, 参数]
assert len(lists) >=5,'列表元素个数小于5'
assert 2==1,'2不等于1'
如: a = [1, 2, 3, 4, 5, 6, 7, 8 ]
三个参数分别代表开始索引、结束索引和步长值。位于前两个参数时,-1表示list最后一个值的索引(此例值为8);位于第三个参数时,-1表示从右向左一个一个取数。第一个参数为空时,代表索引从0开始,第二个参数为空时,表示取开始索引之后的全部值,等价于len(list)(此例值为9)
举例说明一下
a = [1, 2, 3, 4, 5, 6, 7, 8 ]
print(a) ##结果为 [0 1 2 3 4 5 6 7 8]
print(a[::-1]) ##结果为 [8 7 6 5 4 3 2 1 0]
print(a[-1::]) ##结果为 [8]
print(a[:-1:]) ##结果为 [0 1 2 3 4 5 6 7]
例如:下面是一段把文本句子按照长度分类之后,写出来的例子
def sort_sentence(path_in, path_out): ###
with open(path_in, 'r', encoding="utf8") as file_in, open(path_out, 'w', encoding="utf8") as file_out:
lines = file_in.readlines()
lines.sort(key = lambda line: len(line))
for line in lines:
line = line.strip() ### 清除空行
file_out.write(line + '\n') ### 按行写数据
python 在判断一个list类型的数据内容是否为空,可以使用 if list:来判别,如果list 为空 ,返回一个False, 反之,不为空,返回的是一个True。
其实这种判断方法等价于; if len(list) > 0 :