经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Ruby » 查看文章
day011_步入百万年薪的第十一天
来源:cnblogs  作者:SupSnake  时间:2019/7/19 9:03:22  对本文有异议

day11

函数名的第一类对象及使用

1、可以当作值被赋值给变量

  1. def func():
  2. print(1)
  3. print(func)
  4. a = func
  5. a()

2、当作元素存放在容器中

  1. def func():
  2. print(1)
  3. lst = [func,func,func]
  4. for i in lst:
  5. i()

3、函数名可以当作函数的参数

  1. def func(f):
  2. f()
  3. def foo():
  4. print(123)
  5. func(foo)
  6. ---------------------
  7. def func(f):
  8. f()
  9. def foo():
  10. print('is foo')
  11. func(foo)

4、函数名可以当作函数的返回值

  1. def func():
  2. def foo():
  3. print(123)
  4. return foo
  5. a = func()
  6. a()
  7. -----------------------------
  8. def f1():
  9. def f2():
  10. print(1)
  11. def f3():
  12. print(2)
  13. return f2
  14. ret = f2()
  15. return ret
  16. print(f1())

f格式化

python3.6版本以上才能使用

  • 填充字符串
  1. s = f"你好{'常鑫'}"
  2. s1 = F"你好{'常鑫'}"
  • 填充变量
  1. s1 = f"你还是挺好的{s}"
  2. print(s1)
  • 填充计算公式
  1. s1 = f"{34+11}"
  2. print(s1)
  • 填充表达式
  1. a = 10
  2. b = 20
  3. s1 = f"{a if a>b else b}"
  4. print(s1)
  • 填充大括号(两个大括号算一个)
  1. s1 = f"{{{{{'常鑫'}}}}}"
  2. print(s1)
  3. --------------------
  4. s1 = f"{'{}{}{}{}{}'}"
  5. print(s1)

其他填充

  1. s1 = f"{print(123)}"
  2. print(s1)
  3. ---------------------------
  4. def prin(a):
  5. print(a)
  6. s1 = f"{prin(123)}"
  7. prin(s1)
  8. ---------------------------
  9. def foo():
  10. def func():
  11. a = 1
  12. return a
  13. return func()
  14. s1 = f"{foo()}"
  15. print(s1)
  16. ---------------------------
  17. lst = [1,3,4,5,6]
  18. s1 = f"{lst[0:5]}"
  19. print(s1) # [1,3,4,5,6]
  20. ---------------------------
  21. dic = {"key1":123,"key2":234}
  22. s1 = f"{dic['key2']}"
  23. print(s1)

%s,format,f都是格式化,都可实现效果。

迭代器

可迭代对象

list、dict,str,tuple,set——可迭代对象

方法一:

  1. list.__iter__()
  2. dict.__iter__()
  3. str.__iter__()
  4. set.__iter__()
  5. tuple.__iter__()

方法二:

查看源码

方法三:

  1. print(dir(list))

**官方声明只要具有______iter__()方法的就是可迭代对象**

  • 可迭代对象的优点:

? 1、使用灵活

? 2、直接查看值

  • 可迭代对向的缺点:

? 消耗内存,不能迭代取值

list,tuple,str —— 索引

dict ——键

set——直接取值

迭代器

官方声明只要具有______iter______()方法和______next______()方法就是迭代器

  1. f = open("xxxx",'w')
  2. f.__iter__()
  3. f.__iter__()
  • 优点:节省内存,惰性机制

  • 缺点:使用不灵活,操作比较繁琐,不能直接查看全部的值

  • 迭代器的特性:

    ? 1、一次性的(用完就没有了)

    ? 2、不能逆行(不能后退)

    ? 3、惰性机制(节省内存):要一个给一个,不要就不给

  • 当容器中数据量较大的时候使用迭代器

  1. lst = [1,2,3,4,55]
  2. new_list = lst.__iter__() # 将可迭代对象转换成迭代器
  3. -----------------------------
  4. new_list.__iter__()
  5. new_list.__next__()
  6. ----------------------
  7. s = '123455'
  8. new_s = s.__iter__() # 将可迭代对象转换成迭代器
  9. print(new_s)
  10. new_s.__iter__()
  11. new_s.__next__()
  12. ------------------
  13. new_s = s.__iter__() # 将可迭代对象转换成迭代器
  14. print(new_s)
  15. new_s.__iter__()
  16. print(new_s.__next__())
  17. print(new_s.__next__())
  18. print(new_s.__next__())

for循环

  1. s = "12343" # 更改版for的本质
  2. s = [1,2,3,4,5,7]
  3. count = len(s)
  4. new_s = s.__iter__()
  5. while count:
  6. print(new_s.__next__())
  7. count -= 1
  8. --------------------------------
  9. s = "12345"
  10. new_s = s.__iter__()
  11. while True:
  12. try:
  13. print(new_s.__next__()) # for真实本质
  14. except StopIteration:
  15. break
  16. ----------------------------
  17. 万能报错
  18. # except Exception:
  19. print('我是万能的!')
  20. break

递归

有效递归:

  • 不断调用自己本身(自己调用自己)
  • 有明确的终止条件

递:一直执行直到碰到结束条件

归:从结束条件开始往回退

官方声明:最大层次(1000)可以修改,实际测试(998或者997)

  1. def func():
  2. print(123)
  3. func()
  4. func()
  5. def age(n): # 1,2,3
  6. if n == 3:
  7. return "猜对了"
  8. else:
  9. age(n+1)
  10. print(age(1))
  11. def age2(n):
  12. if n == 3:
  13. return "猜对了"
  14. def age1(n):
  15. if n == 3:
  16. return "猜对了"
  17. else:++
  18. age2(n+1)
  19. def age(n):
  20. if n == 3:
  21. return "猜对了"
  22. else:
  23. age1(n+1)
  24. age(1)
  25. -----------------------------------
  26. 1.宝元 18-2-2-2
  27. 2.太白 18-2-2
  28. 3.wusir 18-2
  29. 4.alex 18
  30. def age(n):
  31. if n == 4:
  32. return 18
  33. else:
  34. return age(n+1)-2
  35. print(age(1))
  36. def age4(n):
  37. if n == 4:
  38. return 18
  39. def age3(n):
  40. if n == 4: # 问的是不是第四个了
  41. return 18
  42. else:
  43. return age4(n+1)-2
  44. def age2(n):
  45. if n == 4: # 问的是不是第四个了
  46. return 18
  47. else:
  48. return age3(n+1)-2
  49. def age1(n):
  50. if n == 4: # 问的是不是第四个了
  51. return 18
  52. else:
  53. return age2(n+1)-2
  54. print(age1(1))

原文链接:http://www.cnblogs.com/NiceSnake/p/11211057.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号