Python小白学习笔记

廖雪峰Python学习网站

学习笔记

  1. 变量名只能包含字母,数字,下划线。且只能以字母或下划线开头

  2. 0.1 和 0.2 都要换算成二进制的才能进行计算,得到的结果也是二进制的。在二进制中,没有表示0.3的确切的数字,也就变成了我们看到的结果
    0.1+0.2
    0.30000000000000004
    3*0.1==0.3
    False

  3. print(“use + index:”,python_word[0]+python_word[1]+python_word[2]+"-",
    end=’-----’)#以-----为结尾

  4. TypeError: can only concatenate str (not “int”) to str

  5. 列表通过值移除元素:只有找到的第一个元素会被移除,当有多个相同值的元素时,剩下的元素不会被移除。

  6. TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’

  7. 元组可以被看成是不能改变的列表。列表是动态的,你可以增添,插入,删除,更改列表元素。有时我们需要这样的操作,但是有些时候我们需要保证有些数据是不能被用户或程序更改的。这就是元组的作用。
    准确的说,列表是可变对象,元组是不可变对象。

  8. print(’{}:{}’.format(key, value))
    print("%s: %s" % (key.title(), kwargs[key]))

  9. 类名必须是驼峰式的。也即每个单词的开头必须是大写的,不允许下划线的出现

  10. 安利Pycharm中的部分快捷键
    1、Ctrl + Enter:在下方新建行但不移动光标;
    2、Shift + Enter:在下方新建行并移到新行行首;
    3、Ctrl + /:注释(取消注释)选择的行;
    4、Ctrl+d:对光标所在行的代码进行复制。

  11. sys是python的一个标准库,封装了一些系统的信息和接口
    sys.argv参数:参数变量 在命令行调用时由系统传给程序 list列表
    argv[0]:被调用的脚本文件名或全路径 argv[1]:传入的系统命令参数
    python xxxx.py “hhhhhhh”

  12. cmd命令行执行.py文件与python交互模式转换:python exit()

  13. 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
    Unicode是全国通用型编码,但比较大,ASCII编码最小,但只有英语
    ord():字符->编码
    chr():编码->字符
    encode():str编码为指定的bytes
    decode():字节流bytes解码为str

  14. dict:key-value查找和插入的速度极快,以空间换取时间

  15. 函数中定义默认参数必须指向不变对象!(例如不可指向一个List [])
    函数定义可变参数:def calc(*numbers):自动组装成一个tuple
    函数定义关键词参数:def person(name, age, **kw):
    print(‘name:’, name, ‘age:’, age, ‘other:’, kw)
    参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

  16. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。
    而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。
    Class是一种抽象概念,比如我们定义的Class——Student,是指学生这个概念,而实例(Instance)则是一个个具体的Student

  17. 继承有什么好处?最大的好处是子类获得了父类的全部功能
    当子类和父类都存在相同的run()方法时,我们说,子类的run()覆盖了父类的run(),在代码运行的时候,总是会调用子类的run()。这样,我们就获得了继承的另一个好处:多态。

  18. 鸭子类型

  19. 实例属性属于各个实例所有,互不干扰;
    类属性属于类所有,所有实例共享一个属性;
    不要对实例属性和类属性使用相同的名字,否则将产生难以发现的错误。

  20. Python提供了pickle模块来实现序列化
    pickle.dump(d,f)方法把任意对象序列化成一个bytes,然后,就可以把这个bytes写入文件
    当我们要把对象从磁盘读到内存时,可以先把内容读到一个bytes,然后用d=pickle.load(f)方法反序列化出对象。
    x=pickle.dumps(d)
    pickle.loads(x)
    把Python对象变成一个JSON,表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。
    x=json.dumps(d)
    json.loads(x)

  21. 多进程
    d=Pool(4)
    for i in range(5):
    p.apply_async(long_time_task,args=(i,))
    p.close()//调用后不可添加新的Process
    p.join()//等待所有子进程执行完毕
    在Unix/Linux下,可以使用fork()调用实现多进程。
    要实现跨平台的多进程,可以使用multiprocessing模块。
    进程间通信是通过Queue、Pipes等实现的。

  22. 多线程
    t=threading.Thread(target=loop,name=‘LoopThread’,args=(1,))
    lock=threading.Lock()//创建一把锁
    lock.acquire()//获得一把锁
    lock.release()//释放锁

  23. 正则表达式
    用\d可以匹配一个数字,\w可以匹配一个字母或数字,.可以匹配任意字符
    用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符:
    A|B可以匹配A或B
    表示行的开头,\d表示必须以数字开头。
    KaTeX parse error: Expected 'EOF', got '\d' at position 8: 表示行的结束,\̲d̲表示必须以数字结束。

  24. from datetime import datetime
    后一个import是导入datetime类,前一个from是datetime模块
    d=datetime.now()
    和秒数之间的转换(不管时区):
    t=d.timestamp()
    datetime.fromtimestamp(t)
    datetime.utcfromtimestamp(t)
    str->date(注意格式):
    cday=datetime.strptime(‘2018-6-1 15:25:5’,’%Y-%m-%d %H:%M:%S’)
    date->str:
    print(cday.strftime(’%a, %b %d %H:%M’))
    加时间(导入timedelta类):
    now+timedelta(days=2,hours=2)
    创建一个时区utc-8:
    tz=timezone(timedelta(hours=8))
    将现在的时间转换为tz时区:
    dt=now.replace(tzinfo=tz)

  25. Base64编码:base64.b64encode(b’str’)
    解码:base64.b64decode(b’enstr’)//表示字节

后面网络编程啥啥的有机会再战吧
明天开始实战:)

猜你喜欢

转载自blog.csdn.net/qq_40738827/article/details/88805918