存储
变量存在 栈里面,对象存在 堆里面
系列解包赋值
a ,b = b ,a(进行变量值的替换)
运算
整除运算 // 7//2=3
幂运算 ** 2**3=8
is判断与==的区别
is 比较的是 地址指向是否一样,,,
== 比较的是对象的值是否一样
序列(list)
元组(tuple):与列表定义差不多,不过是用括号
1.不可变
2.线程安全的
字典(dictionary):类似php里面的数组,有key(不可变,不重复)
集合:无重复 set(array):去重
异常处理
1. try: (出现异常)跳转到except Exception as e: (将错误存储到e中) 无论是否出错都会执行finally:
2.主动抛出一个错误
class makeError(ValueError):#创建makeError类,继承ValueError或者ExceptionError都行
pass#什么都不做
def make_error(n):
if n==0:
raise makeError("我是一个错误")#raise 弹出一个错误
return(1/0)
make_error(0)
python 2.x中 用(u"在干嘛")识别中文
作用域:
在循环或者判断中定义的变量,在外部依然可以使用
在函数中定义的就不行
变量全局申明 global n
and和or
' nihao ' or ' hello ' =' nihao '
' nihao ' and ' hello ' =' hello '
运用
or : if b不存在时,使用另一个数
a=b or 1
and : 当b存在时,才对b操作
print( b and int(b) ) 可以简化非空判断操作
列表推导试
将1,2,3,4存入序列中
list1=[num for num in range(1, 5)] list1=[1,2,3,4]
加判断,取小于3 的数
list1=[ num or num in range(1, 5) if num <3 ] list1= [1,2]
统计字符串内的各字符的个数
words='aplication' counts={letter:words.count(letter) for letter in words}
print(counts) 结果{'a': 2, 'p': 1, 'l': 1, 'i': 2, 'c': 1, 't': 1, 'o': 1, 'n': 1}
匿名函数
g= lambda a: a*a g(2)
高级函数
map(function,一个或多个序列) function是一个参数的函数 在这里匿名函数可以使用
取出序列的每个值进行function运算
reduce(function,可迭代对象,可选) function是两个参数的函数
取出可迭代对象里第1,2个数据进行function运算,再用结果与第3个数据进行function运算
python3无法直接使用reduce方法,需要写:from pythontools import reduce
类的实例,可调用对象
对象中申明了 __call__(self , *args , **kwargs) 为可调用对象
蒙圈
class test(int): print("lalal") #执行了一次
def __call__(self, n): #执行了两次
print(self)
print(n)
return test(self+n)
test(1)(2)(3)
返回结果 6
浅拷贝与深拷贝
python 想要保存序列的副本,不能直接使用a=list(指向同一地址,类似指针?)
要用copy方法
浅拷贝:只拷贝序列的第一层,第二层以及以上还是与拷贝序列指向同一地址
深拷贝:拷贝所有层,是一个新的序列
python 3 中,使用 深拷贝需要 import copy
装饰器
def deco(func):
def inner():
print('hello')
return func #return 什么函数名就执行什么函数
@deco
def target():
print('i am target');
target()
字符串
字符串时不可变的
字符串可以通过 ’+‘ 拼接起来 形成一个新的对象
字符串复制 str*3 结果:strstrstr
字符串支持反向搜索 str=‘abcd’ str[-1]=d
ste.replace()做字符串的替换 (本质是创建新的对象)
切片slice(start:end:step)取从start 到end-1,步长为2,默认值,start =0,end=字符串结尾,step=1 小技巧,可以将步长设置为负,反向提取字符
str.split('s')以s分割字符str,默认s为‘ ’
'*'.join(['s','e'])用*将列表里面的字符串拼接