王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594

复习

  1. a.函数可读性强,复用性强
    def 函数名()
    函数体
    return 返回值
    函数先定义后执行,
    b.返回值
    1.没有返回值
    2.返回一个值
    3.返回多个值:多个值用逗号隔开;可用一个或多个等量变量接受
    c.参数
    1.形参:定义函数
    位置参数:必须传
    *args 动态参数,接受任意多个,按位置传入的参数
    默认参数:可不传
    **kwargs 动态参数,可接受任意多,按关键字传入的参数
    2.实参:调用函数
    按照位置传参数
    按照关键字传参数 :可以混用,顺序:位置+关键字
    3.默认参数陷阱
    如果默认参数的值是一个可变数据类型,那么每次调用函数,如果不传值,就公用一个数据类型资源

学习内容

  1. 1.命名空间
    内置命名空间
    python解释器一启动就可以使用的名字就存储在内置命名空间
    内置的名字在启动解释器的时候就加载进内存
    全局命名空间
    程序从上之下被执行的过程中依次加载进内存
    放置了我们设置的所有变量名和函数名
    局部命名空间
    函数内部定义的名字
    调用函数时,才会产生这个名称空间,函数执行结束,则命名空间消失
    规则:
    1.局部:可以使用全局和内置
    全局:使用内置,不能使用局部
    内置:不能使用全局和局部
    2.全局定义与内置名字冲突时,会使用全局的名字
    如果有,就不找上级;如果自己没有,就找上级;上级没有,找上上级
    多个函数,拥有多个独立的局部名字空间,不共享
    2.作用域
    全局作用域 globals
    作用于全局,内置和全局名字空间的名字都属于全局作用域
    局部作用域 locals
    作用于局部,函数(局部命名空间)
    #对于不可变数据类型,局部可查看不可修改; 若要修改, 函数内global声明
    3.函数的嵌套定义与调用
    nonlocal
    4.函数的本质
    1.函数名是内存地址
    2.函数名可以赋值
    3.函数名可以作为容器类型的元素
    4.函数名可以作为函数的参数,返回值
    5.闭包

代码区

  1. 函数嵌套与调用
  1. def outer():
  2. a = 2
  3.  
  4. def inner():
  5. b = 3
  6.  
  7. def inner2():
  8. nonlocal a
  9. a += 1
  10. print('inner2', a)
  11. inner2()
  12. print('inner', a)
  13. inner()
  14. print(a)
  15.  
  16. outer()
  17. print(a)

闭包

  1. def outer():
  2. a = 1
  3.  
  4. def inner():
  5. print(a)
  6. print(inner.__closure__)
  7. return inner
  8.  
  9. inn = outer()
  10. '''
  11. '''
  12. def wrapper():
  13. money = 1000
  14. def func():
  15. name = 'eva'
  16. print(func.__closure__)
  17. def inner():
  18. print(name,money)
  19. print(inner.__closure__)
  20. return inner
  21. return func
  22.  
  23. f = wrapper()
  24. i = f()
  25. i()
  26. print(wrapper.__closure__)

作业

  1. #2、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
  2. # def func(l):
  3. # return l[1::2]
  4. # print(func([1,2,3,4,5,6,7,8,9]))
  5.  
  6. # 3、写函数,判断用户传入的值(字符串、列表、元组)长度是否大于5。
  7. # def func(l):
  8. # if len(l) > 5:
  9. # return '大于5啦'
  10. # else:
  11. # return '没有大于5啦'
  12. # print(func('sd'))
  13.  
  14. # 4、写函数,检查传入列表的长度,如果大于2,
  15. # 那么仅保留前两个长度的内容,并将新内容返回给调用者。
  16. # def func(l):
  17. # if len(l) > 2:
  18. # return l[0:2]
  19. # print(func([1,1,1,1]))
  20.  
  21. # 5、写函数,计算传入字符串中【数字】、【字母】、【空格】 以及 【其他】的个数,并返回结果。
  22. # def func(l):
  23. # dic = {'digit': 0, 'letter': 0, 'space': 0, 'other': 0, }
  24. # for i in l:
  25. # if i.isdigit():
  26. # dic['digit'] += 1
  27. # elif i.isalpha():
  28. # dic['letter'] += 1
  29. # elif i == ' ':
  30. # dic['space'] +=1
  31. # else:
  32. # dic['other'] +=1
  33. # return dic
  34. # print(func('a'))
  35.  
  36. # 6、写函数,检查用户传入的对象(字符串、列表、元组)
  37. # 的每一个元素是否含有空内容,并返回结果。
  38. # def func(l):
  39. # for i in l:
  40. # if i == ' ':
  41. # return '存在空内容'
  42. # print(func(''))
  43.  
  44. #7、写函数,检查传入字典的每一个value的长度,如果大于2,
  45. # 那么仅保留前两个长度的内容,并将新内容返回给调用者。
  46. dic = {"k1": "v1v1", "k2": [11,22,33,44]}
  47. for i in dic:
  48. print(i)
  49. # PS:字典中的value只能是字符串或列表
  50.  
  51. # def func(l):
  52. # a = []
  53. # for i in l.keys():
  54. # a.append(i)
  55. # for j in a:
  56. # l[j] = l[j][:2]
  57. # return l
  58. # print(func({"k1": "v1v1", "k2": [11,22,33,44]}))
  59. #################################################
  60. # def func(dic):
  61. # for k in dic:
  62. # if len(dic[k]) > 2:
  63. # dic[k] = dic[k][:2]
  64. # return dic
  65. # dic = {"k1": "v1v1", "k2": [11,22,33,44]}
  66. # print(func(dic))
  67.  
  68. # 8、写函数,接收两个数字参数,返回比较大的那个数字。
  69. # def func(a,b):
  70. # if a > b:
  71. # return a
  72. # elif a < b:
  73. # return b
  74. # else:
  75. # return '相等'
  76. # print(func(2,2))
  77.  
  78. # 三元运算
  79. # 变量 = 条件返回True的结果 if 条件 else 条件返回False的结果
  80. #必须要有结果
  81. #必须要有if和else
  82. #只能是简单的情况
  83. # a = 1
  84. # b = 5
  85. # c = a if a>b else b #三元运算
  86. # print(c)
  87.  
  88. # 9、写函数,用户传入修改的文件名,与要修改的内容,
  89. # 执行函数,完成整个文件的批量修改操作(进阶)。
  90. # def func(filename, old, new):
  91. # with open(filename, encoding='utf-8') as f, open('%s.bak'%filename,'w',encoding='utf-8') as f1:
  92. # for line in f:
  93. # if old in line:
  94. # line = line.replace(old,new)
  95. # f1.write(line)
  96. # import os
  97. # os.remove(filename)
  98. # os.rename('%s.bak'%filename, filename)
  99. # func('lod', '大家', '你')
  100.  
  101. # 2、写函数,接收n个数字,求这些参数数字的和。
  102. # def func(*l):
  103. # sum = 0
  104. # for i in l:
  105. # sum = sum + i
  106. # return sum
  107. # print(func(1,2,3,1,3))
  108. # 3、读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
  109. # a=10
  110. # b=20
  111. # def test5(a,b):
  112. # print(a,b)
  113. # c = test5(b,a)
  114. # # print(c)
  115.  
  116. # 4、读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
  117. # a=10
  118. # b=20
  119. # def test5(a,b):
  120. # a=3
  121. # b=5
  122. # print(a,b)
  123. # c = test5(b,a)
  124. # print(c)

python之路——10的更多相关文章

  1. 【python之路10】python实例练习

    #!usr/bin/env python # -*- coding:utf-8 -*- # 一.元素分类 # # 有如下值集合 [11,22,33,44,55,66,77,88,99,90...], ...

  2. 小白的python之路10/30磁盘分区

    总结:fdisk   mkfs  mount 1.磁盘分区 硬盘分区有三种,主磁盘分区.扩展磁盘分区.逻辑分区. 一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个.且主分区+扩展分区总共 ...

  3. 小白的python之路10/30 vim编辑器

    1.vim进入命令行之后的编辑过程

  4. 小白的python之路10/29 文件归档

    一打包解包文件 [root@localhost ~]# cd /test/[root@localhost test]# touch a.txt b.txt c.txt[root@localhost t ...

  5. 小白的python之路10/22 day1

    一.操作系统 操作系统就是一个协调.管理和控制计算机硬件资源和软件资源的控制程序.操作系统所处的位置如下图

  6. python之路---10 *args **kwargs 命名空间 作用域 函数的嵌套

    二十八.函数进阶 1.   "*"  和  "**" ① 在形参位置时   都是聚合的作用 *args    位置参数→元组 **kwargs   关键字参数→ ...

  7. 小白的python之路10/31&11/1文件操作系统

    文件操作系统的介绍 ext4的superblock块是超级快,innode 块是专门存放文件信息的, block count将硬盘做成block块,对操作系统而言写在block块上就可了,eg:文件1 ...

  8. Python之路【第一篇】python基础

    一.python开发 1.开发: 1)高级语言:python .Java .PHP. C#  Go ruby  c++  ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...

  9. python之路 目录

    目录 python python_基础总结1 python由来 字符编码 注释 pyc文件 python变量 导入模块 获取用户输入 流程控制if while python 基础2 编码转换 pych ...

随机推荐

  1. 设计图与html 对比

    简易打开旧版火狐  网页版火狐添加组件 新版有时也会没有    谷歌是腾讯的

  2. 索引(B-树)

    前言 本文是在讲述什么样的数据结构适合作为索引,以及其适合作为索引的原因.而阅读本文需要对B树和B+树结构有稍微的理解.以及需要对磁盘操作知识有稍微的了解.对于磁盘操作的相关知识,在文章尾部的链接文章 ...

  3. 第5天(半天)【shell编程初步、grep及正则表达式】

    第5天(半天)[shell编程初步.grep及正则表达式] shell编程初步(01)_recv shell脚本:文本文件 #!:/bin/bash #!:/usr/bin/python #!:/us ...

  4. Mysql优化系列之——优化器对子查询的处理

    根据子查询的类型和位置不同,mysql优化器会对查询语句中的子查询采取不同的处理策略,其中包括改写为连接(join),改写为半连接(semi-join)及进行物化处理等. 标量子查询(Scalar S ...

  5. jsp页面错误

    错误提示:The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path. 解决办法:在build ...

  6. 【转载】Java Restful API 文档生成工具 smart-doc

    谁说生成api文档就必须要定义注解? 谁说生成接口请求和返回示例必须要在线? 用代码去探路,不断尝试更多文档交付的可能性. 如果代码有生命,为什么不换种方式和它对话! 一.背景 没有背景.就自己做自己 ...

  7. oracle数据库SQL入门

    1.oracle数据库的下载.安装.卸载 Oracle下载: Oracle下载链接地址:http://www.oracle.com/technetwork/cn/database/enterprise ...

  8. scrapy框架初级

    scrapy入门教程:https://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html 一.安装 python模块网站,应用文件放置在s ...

  9. 显示“快捷键清单” acessksy

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Linux磁盘挂载

            mount命令 用于加载文件系统到指定的加载点.此命令的最常用于挂载cdrom,使我们可以访问cdrom中的数据,因为你将光盘插入cdrom中,Linux并不会自动挂载,必须使用Lin ...