zoukankan      html  css  js  c++  java
  • python第一阶段:基础部分注意点

    1.格式化输出中的f-string,亦称为格式化字符串常量:f'{}'

    for i in li:
      if type(i) == str:
        print(f'"{i.lower()}"') # 这里的双引号是为了输出的是字符串,不加也行

    2.运算符

    执行顺序:() => not => and => or
    x or y:
      当x是非零,返回x
      当x是零,返回y
    and和or相反

    3.字典

    新增方式:
    dic = {'k1':'v1','k2':'v2'}
    dic.setdefault('k3', 'v3') #如果在字典中存在这个key,就不进行任何操作,不存在就进行添加
    #####################################################################################################################
    更新方式:
    dic1 = {'key':'value','name1':'dic1_value1','qqq':'111'}
    dic2 = {'火女':'安妮','火男':'布兰德','qqq':'222'}
    dic1.update(dic2) # 将dic2更新到dic1,如果两个字典中有相同的key时,dic2的k-v键值对会覆盖dic1的k-v键值对
    print(dic1) new_dic
    = dict(**dic1, **dic2) # 将dic1和dic2合并为一个新的字典。如果两个字典中有相同的key时会报错。
    print(new_dic)
    ####################################################################################################################
    查看方式:
    print(dic.get('k3', '没有这个值')) #没有这个value返回None,可以指定返回的内容
    ####################################################################################################################
    解构(解包):
    a, b = '12'  # 将后边解构打开按位置赋值给变量。支持:字符串、列表、元组
    print(a)
    print(b)
    ###################################################################################################################
    删除(循环删除要注意。列表和字典都不能在循环的时候进行删除. 字典在循环的时候不允许改变大小)
    dic = {'提莫':'冯提莫', '发姐':'陈一发儿', '55开':'卢本伟'}
    lst = []
    for k in dic:
        lst.append(k)

    for el in lst:
        dic.pop(el)
    print(dic)

    4.小数据池

    数字小数据池的范围  -5 ~ 256
    字符串中如果有特殊字符他们的内存地址就不一样
    字符串中单个*20以内他们的内存地址一样,单个*21以上内存地址不一致

    5.zip函数(个人感觉主要是对列表的处理)

    a = [[11, 22, 33], [44, 55, 66]]
    b = [[77, 88, 99], [88, 99, 10]]
    
    f = zip(*a, *b)
    lst = list(f)
    print(lst)
    for i in lst:
        print(i) # 打印的是元组

    6.深浅拷贝

    书读百遍其义自见。今天再看深浅拷贝,灵光一闪。彻底懂了这玩意。
    之所以存在深浅拷贝,最主要的就是共享内存这4个字。拷贝:原则上就是把数据分离出来,复制其数据,并以后修改互不影响。
    https://www.cnblogs.com/feifeifeisir/p/10426263.html,参考这个博主写的

     7.函数参数存放顺序

    顺序:位置参数, *args, 默认值参数, **kwargs
    形参的位置*,**: 聚合
    实参的位置*,**: 打散
    def chi(name, *food, location="北京", **kwargs):  # 参数名是food、kwargs:*表示位置参数动态传参 **表示关键字参数动态传参
        print(location)
        print(name + "要吃", food, '。这个的关键字动态参数', kwargs)

    lst = ["狗不理", "大麻花", "天津"]
    other = {'k1': 'v1', 'k2': 'v2'}
    chi("小伙", *lst, **other) # 这里加*号和不加可以分别看一下效果
    chi("小伙", *lst, good_food="狗不理", no_good_food="汉堡", drink="大白梨", ice_cream="巧乐兹")

     8.闭包

    闭包:在内层函数中访问外层函数的局部变量
      好处:
        1. 保护你的变量不受外界影响
        2. 可以让变量常驻内存
      写法:
    def outer():
        a = 10
        def inner():
            print(a)
        print(inner.__closure__)  # 如果打印的是None. 不是闭包. 如果不是None, 就是闭包
        return inner

    9.迭代器、生成器、装饰器

    迭代器和生成器参考
    https://www.cnblogs.com/muyuyingfeng/p/11040872.html
    迭代器:
    使用dir来查看该数据包含了哪些方法 用来遍历列表,字符串,元祖....这些可迭代对象 可迭代对象(Iterable):里面有__iter__()可以获取迭代器, 没有__next__() 迭代器(Iterator):里面有__iter__()可以获取迭代器, 还有__next__() 迭代器特点:
    1. 只能向前. 2. 惰性机制. 3. 节省内存.(生成器)
    ###############################################################################################################
    生成器:
    之所以要用生成器,就是为了解决大数据存储的占用内存的问题(数学界的各种穷举)。是一个特殊的迭代器,个人理解成一个手写的迭代器。
    特点:只能向前,惰性机制,节省内存
    生成器函数:如果一个函数有 yield 关键字,那么这个函数的返回值就是一个生成器
    生成器推导式:gen = (x for x in range(5)),此时的gen就是一个生成器
    使用for循环调用:
    for item in gen:
        print(item)
    使用next或者send调用:send不能用在开头或者结尾
    print(next(gen)
    ###################################################################################################################
    装饰器参考
    https://www.cnblogs.com/arvin-feng/p/11108799.html
    https://www.cnblogs.com/muyuyingfeng/p/11039986.html

    10.内置函数

    lambda sorted() filter() map()

    11.模块部分常用的多写写

    12.oop部分

    面向对象3大特性:封装、继承、多态
    1.封装:
      A.将相关功能封装到一个类中
      B.将数据封装到一个对象中
    2.继承:
    这里要注意一下super关键字。
    写法:super(子类, self).func
    使用的是C3算法。具体可以参考这篇博客 https://www.cnblogs.com/shengulong/p/7892266.html
    C3算法简单描述就是:从下往上找,从左往右找,从入度为0的开始找,最终返回的是一个列表
    3.多态:鸭子模型
    4.反射相关的4个:
    getattr # 根据字符串的形式,去对象中找成员。
    hasattr # 根据字符串的形式,去判断对象中是否有成员。
    setattr # 根据字符串的形式,动态的设置一个成员(内存)
    delattr # 根据字符串的形式,动态的删除一个成员(内存)

    13.网络编程部分:黏包、断点续传、tcp三次握手四次挥手、socket源码理解

    14.多线程:GIL锁、线程安全、计算密集型使用多进程,IO密集型使用多线程、生产消费者模型

  • 相关阅读:
    jquery toggle(listenerOdd, listenerEven)
    struts quick start
    hdu 1518 Square (dfs)
    hdu 2544 最短路 (最短路径)
    hdu 1754 I Hate It (线段树)
    hdu 1856 More is better (并查集)
    hdu 1358 Period (KMP)
    hdu 2616 Kill the monster (DFS)
    hdu 2579 Dating with girls(2) (bfs)
    zoj 2110 Tempter of the Bone (dfs)
  • 原文地址:https://www.cnblogs.com/wangyadong/p/12734921.html
Copyright © 2011-2022 走看看