python笔记

存储

变量存在  栈里面,对象存在  堆里面

系列解包赋值

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'])用*将列表里面的字符串拼接

你可能感兴趣的:(python笔记)