1. day9:
    函数:
    def (形参):
    函数体
    函数名(实参)
    形参:
    在函数声明位置的变量
    1. 位置参数
    2. 默认值参数
    3. 混合 位置, 默认值
    4. 动态传参, *args 动态接收位置参数, **kwargs 动态接收关键字参数
    def func(*args, **kwargs): 无敌传参
    pass
    *, ** 在形参位置: 聚合
    在实参位置: 打散
    实参:
    在函数调用的时候给函数传递的具体的值
    1. 位置参数
    2. 关键字参数
    3. 混合参数
    顺序: 位置, 关键字
    传参: 把实参赋值给形参的过程
  2.  
  3. 函数的返回值:return 终止函数的运行 返回值返回给调用方
    1. 函数内部不写return, 默认在最后返回None
    2. 函数只写了return 返回None
    3. return 有一个返回值
    4. return 1, 2, 3 .... 有多个返回值
    习题:(登录注册系统)
  4.  
  5. 写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成文件的修改操作(升级题)。
    def func(file_path, old, new):
    with open(file_path, mode="r", encoding="utf-8") as f1, \
    open(file_path + "_副本", mode="w", encoding="utf-8") as f2:
    for line in f1:
    s = line.replace(old, new)
    f2.write(s)
    os.remove(file_path)
    os.rename(file_path+"_副本", file_path)
  6.  
  7. func("student_msg", "$$", "@@")
  8.  
  9. day10:
    1.实参:
    1. 位置参数
    2. 关键字参数
    3. 混合参数
  10.  
  11. 2. 名称空间和作用域
    名称空间: 保存名字用的
    变量, 函数,
  12.  
  13. 1. 内置名称空间:python自己, print, input, len
    2. 全局名称空间: 你写的代码从上到下
    3. 局部名称空间: 函数, 类, 方法, 其他模块, 对象
  14.  
  15. 作用域
    全局作用域
    内置 + 全局
    局部作用域
    局部名称空间
    从局部找全局可以. 但是从全局找局部是不可以的
  16.  
  17. globals() 查看全局作用域中的名字
    locals() 查看当前作用域中的名字
  18.  
  19. 3. 函数的嵌套(难点)
    每一层都会产生独自的名称空间
    4. nonlocal global (会有考试题)
    global: 在局部引入全局的内容, 可以升华一个变量为全局变量 全局的东西都是不安全的
    nonlocal : 在局部, 引入上一层名称空间中的变量, 如果没有, 继续上一层......
  20.  
  21. day11:
    闭包: 在内层函数中引入外层函数的变量
    作用:
    1. 保护变量不受侵害(javascript)
    2. 让一个变量常驻内存
    迭代器
    dir() 查看变量能够执行的方法(函数)
    Iterator: 迭代器, __iter__(), __next__()
    Iterable: 可迭代的, __iter__()
    for循环的流程:
    it = lst.__iter__()
    while 1:
    try:
    el = it.__next__()
    for循环的循环体
    except StopIteration:
    break
    从迭代器中获取数据的唯一方法: __next__()
    三个特征:
    1. 省内存
    2. 惰性机制
    3. 只能往前. 不能后退
    # 写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组
    # 例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃’,‘A’)]
    # 红桃, 黑桃, 梅花, 方块
    # A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K
    # 笛卡尔积(乘) -> 奠定了关系型数据库的基础
    # se = ["红桃", "黑桃", "梅花", "方块"]
    # dian = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
    # lst = []
    # for s in se:
    # for d in dian:
    # lst.append((s, d))
    # print(lst)
    # print(len(lst))
  22.  
  23. '''
    1x1=1
    2x1=2 2x2=4
    3x1=3 3x2=6 3x3=9
    ....
    9x1=9 ....9x9=81
    '''
  24.  
  25. # for i in range(1,10):
    # for j in range(1, i+1):
    # print("%sx%s=%s" % (i, j, i*j), end=" ")
    # print()
  26.  
  27. # for i in range(1, 6):
    # for j in range(i):
    # print("*", end="")
    # print()
  28.  
  29. it = lst.__iter__()
    print(it.__next__())
  30.  
  31. # collections 关于集合类的相关操作
    # Iterable : 可迭代的
    # Iterator : 迭代器
    lst = ["秦始皇", "汉武帝", "孝文帝", "隋炀帝", "李世民"]
    from collections import Iterable, Iterator
    print(isinstance(lst, Iterable)) # True
    print(isinstance(lst, Iterator)) # False
  32.  
  33. print(isinstance({1,2,3}, Iterable)) # True, 可以使用for循环
  34.  
  35. day12
    1、迭代器
    __iter__() 获取迭代器
    __next__() 下一个
    dir()函数不带参数时,返回当前范围内的变量、方法和定义的类型列表
  36.  
  37. 2、推导式
    字典推导式和集合推导式 没有元组推导式
    # {结果 for循环 if判断}
    # {结果 for循环 if判断}
    # lst = [11, 22, 33] # => {0:11, 1:22, 2:33}
    # dic = {i:lst[i] for i in range(len(lst)) }
    # print(dic)
    过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母
    # lst = ["alex", 'db', '2b', "wusir", 'sb', "taibai","nezha", "ritian"]
    # print([ el.upper() for el in lst if len(el) >= 3])
  38.  
  39. map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb
    name=['oldboy','alex','wusir']
    print(list(map(lambda n: n+"_sb" , name)))
    print("__iter__" in dir(m)) # True
    # print("__next__" in dir(m)) # True #带参数时,返回参数的属性、方法列表
  40.  
  41. 3、生成器
    生成器函数有什么用?省内存
    本质就是迭代器
    两种方式写生成器
    1. 生成器函数
    2. 生成器表达式
    send()可以给上一个yield位置传值
    send()不可以在第一个位置和最后一个位置出现
    最后的yield后的代码是可以执行的但是会报错. StopIteration
    生成器函数里不要写return
    第一种
    # 生成器函数. 就是把return换成yield
    # def gen():
    # print("爽歪歪")
    # yield "娃哈哈" # 可以让我们的函数分段运行
    # print("酸酸乳")
    # yield "AD钙奶"
    # print("黄焖鸡米饭")
    第二种
    # ret = gen() # 不会执行你的函数, 获取到生成器对象
    # # 迭代器不能等价代换
    # print(ret) # <generator object gen at 0x00000195518CFE60> generator 生成器
    # print(ret.__next__()) # 必须执行__next__()才可以触发生成器的运行 娃哈哈
  42.  
  43. def gen():
    lst = ["⿇花藤", "胡辣汤", "微星牌饼铛", "Mac牌锅铲"]
    yield from lst
  44.  
  45. g = gen() # 获取生成器
    for el in g: # 从生成器获取数据
    print(el) # 打印 从lst第一个字符打印开始,四行
  46.  
  47. 打印图形
    # 6行
    # 行号1 2 3 4 5 6
    # 空白5 4 3 2 1 0
    # 星号1 3 5 7 9 11
    # 6-i
    # *
    # ***
    # ***** # 2 * i - 1
    # *******
    # *********
    # ***********
  48.  
  49. # n = int(input("请输入你要打印多少行"))
    # for i in range(1, n+1):
    # # 方案一
    # for k in range(n-i):
    # print(" ", end="")
    # for j in range(2 * i - 1):
    # print("*", end="")
    # print() # 换行
    #
    #
    # # 方案二
    # print(" " * (n - i) + "*" * (2 * i - 1))
  50.  
  51. day13:内置函数(略)默写15个内置函数及
    day14:
    匿名函数lambda 参数: 返回值
    1. sorted
    排序
    sorted(Iterable, key, reverse)
    2. filter
    筛选
    filter(function, Iterable)
    3. map
    映射
    map(function, Iterable)
    4. 递归
    自己调用自己
    5. 二分法(递归的应用)
    开头
    结尾
    中间
  52.  
  53. 二分法(重点)
    # lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963] # 时间复杂度. n
    # # 让用户输入一个数n. 判断这个n是否出现在lst中
    # n = int(input("请输入一个数字n:")) # 56
    #
    # left = 0 # 左边界
    # right = len(lst) - 1 # 末尾的索引 右边界
    # while left <= right: # 当左边界大于右边界结束循环
    # mid = (left + right) // 2 # 求中间的索引坐标
    # if n < lst[mid]: # 判断你的数字和中间数的大小比较 .
    # right = mid - 1 # 右边界往左移动
    # elif n > lst[mid]:
    # left = mid + 1 # 左边界往右移动
    # else:
    # print("找到了") # 找到了目标数字
    # break
    # else: # 当左比右大, 循环结束. 没有找到目标数
    # print("没找到")
  54.  
  55. 递归函数(操作文件夹的那个代码)
    函数的递归深度:1000 不同的操作系统深度不一样,windows998
  56.  
  57. 列出文件夹内的所有文件
    import os
    os.listdir()
    os.path.join() 拼接路径
    os.path.isdir() 判断是否是文件夹
    os.remove()
    os.rename()
  58.  
  59. day15
    class类名首字母大写.
    __init__(__new__)构造方法. 在创建的对象的时候由系统自动访问这个方法
    self: 自己. 自身. 类的对象. 当前正在创建的对象
    谁调用的这个方法. self就是谁
    面向对象的三大特征: 封装, 继承, 多态
    1. 封装
    对属性封装
    self.xxx = xxxx
    对方法封装
    2. 继承
    子类可以自动拥有父类中除了私有内容外的其他所有内容
    多继承class(亲父,干爹) 先调用亲父的方法,没有再从干爹那找
    子类在父类的基础上扩展了一些功能. 派生
    3. 多态
    同一个对象多种形态.(在python中多态的效果感受不够明确)
    只要包含了xxx功能的内容都可以试用. 鸭子模型 -> 多态性
  60.  
  61. day16:
    面向对象:以对象为中心. 所有的东西都是对象. 操纵的是对象. 让对象去完成相应的操作
    面向过程: 以我为中心. 按照事物发展的流程顺序来写代码
    优点: 代码量少, 简单
    缺点: 扩展性差
    成员
    变量
    1. 实例变量. 对象.xxx = xxx 实例变量 -> 字段 -> 属性. 给对象用的
    写在__init__上边的那个变量
    2. 类变量. 直接写在类中的变量就是类变量. 类变量一般用类名来访问. 对象中共性的属性提取出来.
    方法 类变量的修改只能通过类名来完成
    1. 实例方法. 对象.方法() 通过【对象】来调用类里面的方法
    2. 类方法. 类名.方法()@classmethod
    3. 静态方法. 类名.方法()@staticmethod # 在类中定义的一个普通函数
  62.  
  63. 属性@property
    把方法转化成属性.
    对象.属性
  64.  
  65. 私有
    __作为前缀
    在自己类中可以随意访问. 但是出了类任何人都不可以访问这个私有内容
  66.  
  67. day17:
    类与类之间的关系
    1. 依赖关系. 通过参数的传递把另外一个类的对象传递进来
    2. 关联关系, 组合, 聚合. 通过属性设置来维护两个对象的关系
    def __init__():
    self.stuList = []
    def __init__():
    self.teacher = teacher
  68.  
  69. 3. 继承关系
    self: 谁调用的,. self就是谁
  70.  
  71. # 依赖关系:A调用C里面的方法,需要有个方法参数(形式参数)接收C的实例变量
    # class A:
    # def func1(self, anumber):
    # print("I'm Func1")
    # anumber.func3()
    # def func4(self):
    # print("This is func4")
    # class B:
    # def func2(self, bnumber):
    # print("I'm Func2")
    # bnumber.func3()
    # class C:
    # def func3(self):
    # print("I'm Func3")
    # def func5(self, cnumber):
    # print("I'm Func5")
    # cnumber.func4()
    #
    # a = A()
    # b = B()
    # c = C()
    # a.func1(c) # func1, func3
    # b.func2(c) # 2 3
    # c.func5(a) # 5 4
  72.  
  73. # 关联关系:
    # class B:
    # def __init__(self, name, lst=None):
    # self.name = name
    # if lst == None: # 判断传递过来的参数是否是空
    # self.lst = []
    # else: # 传递过来的是一个列表
    # self.lst = lst
    # def tianjia(self, student):
    # self.lst.append(student)
    # def display(self):
    # for s in self.lst: # s 是老师的学生
    # print(s.name)
    # class C:
    # def __init__(self, id, name, teacher=None):
    # self.name = name
    # self.id = id
    # self.teacher = teacher
    # b = B("老师NO1")
    # c1 = C("1", "Andorid1", "老师1")
    # c2 = C("2", "Andorid2", "老师2")
    # c3 = C("3", "Andorid3", "老师3")
    # b.tianjia(c2)
    # b.display()
  74.  
  75. # 继承关系:Foo继承了Base,Base__init__有多少参数需要传进去,Foo实例变量就要传多少参数进去
    class Base:
    def __init__(self, num):
    self.num = num
    def func1(self):
    print(self.num)
    self.func2()
    def func2(self):
    print(111, self.num)
    class Foo(Base):
    def func2(self):
    print(222, self.num)
    # b = Base(1)
    # b.func2()
    f = Foo(2)
    f.func2()
    # f = Foo(1)
    # f.func1()
  76.  
  77. # lst = [Base(1), Base(2), Foo(3)]
    # for obj in lst:
    # obj.func2()
    # 111 1
    # 111 2
    # 222 3
  78.  
  79. 4. 特殊成员
    __init__() 初始化方法
    __new__() 构造方法
    __call__() 对象()
    __add__() +
    __getitem__ 对象[]
    __setitem__ 对象[] =
    __delitem__ del 对象[]
    __del__ del 对象. 析构
    __len__ len(对象)
    __iter__ for. iter()
    __next__ next()
    __dir__ dir()
    __getslice__ 对象[::]
    __hash__ hash()
    __class__
    __dict__ 查看当前想的属性
    显示页码习题 (注意)
  80.  
  81. day18:
    1. issubclass, type, isinstance
    issubclass 判断xxx类是否是xxx类的子类 \
    type 获取到xxx对象的类型
    isinstance 判断xxx对象是否是xxx类型的(向上判断)
  82.  
  83. 2. 如何判断一个方法或者一个函数(FunctionType, MethodType)
    from types import FunctionType, MethodType
    print(isinstance(xx, FunctionType)))
    print(isinstance(xx, MethodType)))
  84.  
  85. 结论 :
    1. 实例方法:
    用类名访问. 函数
    用对象访问. 方法
    2. 静态方法
    都是函数
    3. 类方法
    都是方法
    3. 反射(重点)
    hasattr(对象, 属性(字符串))
    getattr(对象, 属性(字符串)) 从对象中获取到xxx属性
  86.  
  87. setattr(对象, 属性, 值)
    delattr(对象, 属性) 从对象中删除xxx属性
  88.  
  89. 4. md5加密
    import hashlib
    obj = hashlib.md5(加盐)
    obj.update(铭文的bytes)
    obj.hexdigest() 获取密文

Python(9-18天总结)的更多相关文章

  1. 十八. Python基础(18)常用模块

    十八. Python基础(18)常用模块 1 ● 常用模块及其用途 collections模块: 一些扩展的数据类型→Counter, deque, defaultdict, namedtuple, ...

  2. python day 18: thinking in UML与FTP作业重写

    目录 python day 18 1. thinking in UML读书小感 2. FTP作业重写 2.1 软件目录结构 2.2 FTPClient端脚本 2.3 FTPServer端脚本 pyth ...

  3. Think Python - Chapter 18 - Inheritance

    In this chapter I present classes to represent playing cards, decks of cards, and poker hands.If you ...

  4. python 生成18年写过的博客词云

    文章链接:https://mp.weixin.qq.com/s/NmJjTEADV6zKdT--2DXq9Q 回看18年,最有成就的就是有了自己的 博客网站,坚持记录,写文章,累计写了36篇了,从一开 ...

  5. python基础——18(面向对象2+异常处理)

    一.组合 自定义类的对象作为另一个类的属性. class Teacher: def __init__(self,name,age): self.name = name self.age = age t ...

  6. python 练习 18

    #!/usr/bin/python # -*- coding: UTF-8 -*- import time print time.strftime('%Y-%m-%d %H:%M:%S',time.l ...

  7. python (18)在linux中如何实现定时发送邮件

    最近要用到,定时发送邮件功能: 如何定时,当然要用到linux中crontab了 如下的代码能够定时发送邮件 #!/usr/bin/env python # -*- coding=utf-8 -*- ...

  8. 洗礼灵魂,修炼python(18)--温故加知新

    类型转换: 1.str(),repr(),format():将非字符串数据转换为字符串 str():对象序列化的结果,相当于print输出 repr():程序中某个对象精确值 format():利用特 ...

  9. Python学习--18 进程和线程

    线程是最小的执行单元,而进程由至少一个线程组成.如何调度进程和线程,完全由操作系统决定,程序自己不能决定什么时候执行,执行多长时间. 进程 fork调用 通过fork()系统调用,就可以生成一个子进程 ...

  10. Python学习-18.Python中的错误处理(三)

    在某些情况下,我们需要定义自己的异常并且抛出 先定义一个错误: class MyError(BaseException): def __init__(self): pass 上面定义了一个叫MyErr ...

随机推荐

  1. IIS7下设置上传大小的限制

    一.找到修改大小的配置文件和配置节点 打开你系统盘(我是C盘),找到 C:\Windows\System32\inetsrv\config\schema目录,该目录下有一个IIS_schema.xml ...

  2. yii2.0数据库查询修改等方法

    yii2.0学习有一段时间了,给大家分享一下一些简单的查询等如何操作. 查询:(这里最前面的Test是引用的模型名) Test::find()->all();    此方法返回所有数据: Tes ...

  3. Docker的安装及加速

    使用 yum 安装(CentOS 7下) Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker . 通过 uname ...

  4. June 29th 2017 Week 26th Thursday

    Hope for the best, but prepare for the worst. 做最好的期望,做最坏的打算. Always remember that quotes about being ...

  5. 为tcp的connect设置超时时间

    struct timeval tv = {timeout, 0}; 27   setsockopt(sockfd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(s ...

  6. redis三节点sentinel部署

    角色          ip       port master      127.0.0.1  6379  slave-1     127.0.0.1  6380  slave-2     127. ...

  7. Cloud Tool 小探索

    Google Apps不用多说. Google drive免费提供15GB的容量. Microsoft Windows Live感觉功能上和google相比无亮点和优势. SkyDrive免费提供7G ...

  8. php------中文出现乱码解决方法

    中文出现乱码解决方法:原因编码格式不一致 [1]  建立数据库的时候,字符集选择utf-8  数据库,点表名,点右键,数据库属性…. [2]  修改myspl的配置,在[myspld]模块下面添加ch ...

  9. css层叠样式表总结

    一.css css里注释只有一种 /*  */ 二.css与HTML四种结合方式 1.行内样式 在标签中加入style属性 内部的写法:key1:value;key2:value; <div s ...

  10. mysql5.7.22tar包安装

    mysql5.7.22tar包安装 #卸载系统自带的Mariadb [root@ ~]# rpm -qa|grep mariadb mariadb-libs-5.5.44-2.el7.centos.x ...