第二模块·函数编程-第1章 函数、装饰器、迭代器、内置方法

  • 01-鸡汤之人丑就要多读书
  • 02-三元运算
  • 03-文件处理
  • 04-文件处理-二进制模式
  • 05-文件处理-智能检测编码的工具
  • 06-文件处理-写模式操作文件
  • 07-文件处理-追加模式操作文件
  • 08-文件处理-混合操作文件
  • 09-文件操作其他功能
  • 10-文件处理-文件修改功能
  • 11-函数-基本介绍
  • 12-函数-默认参数
  • 13-函数-关键参数
  • 14-函数-非固定参数
  • 15-函数-非固定参数2
  • 16-函数-返回值
  • 17-函数-局部变量
  • 18-函数-在函数里修改全局变量
  • 19-函数-在函数里修改列表数据
  • 20-函数-嵌套函数
  • 21-函数-作用域
  • 22-函数-匿名函数
  • 23-函数-高阶函数
  • 24-递归介绍
  • 25-递归与栈的关系
  • 26-递归的作用
  • 27-递归的特性总结
  • 28-递归的作用
  • 29-尾递归优化
  • 30-函数-内置方法1
  • 31-函数-内置方法2
  • 32-函数-内置方法3
  • 33-函数-内置方法4
  • 34-函数-内置方法5
  • 36-函数-函数进阶-鸡汤
  • 37-函数-函数进阶-命名空间
  • 38-函数-函数进阶-作用域的查找空间
  • 39-函数-函数进阶-闭包
  • 40-函数-函数进阶-装饰器
  • 41-函数-函数进阶-装饰器流程分析
  • 42-函数-函数进阶-装饰器带参数的函数
  • 43-函数-函数进阶-装饰器带参数2
  • 44-函数-函数进阶-列表生成式
  • 45-函数-函数进阶-生成器
  • 46-函数-函数进阶-斐波那契数列
  • 47-函数-函数进阶-生成器调用方法
  • 48-函数-函数进阶-函数写生成器
  • 49-函数-函数进阶-生成器send方法
  • 50-函数-函数进阶-迭代器
  • 51-函数-函数进阶-作业需求

01-鸡汤之人丑就要多读书;

1、一个好的讲师,不光传授知识,也能给学生带来心灵上的成长,鸡汤也是要喝的;

2、读书“真的”可以改变一个的气质,变得有内涵;

3、去豆瓣网上看书评、影评;

4、读书推荐《追风筝的人》、《白鹿原》;

5、任何有收益的事情,都不是“短平快”获取的,“慢”是一种生活姿态;

6、套用钱钟书夫人杨绛的一句话:我们大多数人的窘境都是:想法太多,读书太少;

7、我们的人生Level一定程度上可以由读书来决定;

8、改变人的几种方式:读书、看电影、去旅行、经历一些事情;

9、电影推荐《阿甘正传》、《辛德勒的名单》;

10、我们大多数人都不会觉得自己LOW,百分之八十的人都会觉得自己还“凑合”;

02-三元运算

1、三元运算初识;

三元运算又称“三目运算”,是对简单条件语句的简写,如:

03-文件处理

1、我们大家日常如何操作文件;

  • 1、安装文本编辑器软件,如windows自带记事本、notepad++;
  • 2、选中鼠标右键,利用文本编辑器软件打开;
  • 3、查看or写入内容;
  • 4、保存、关闭;

2、文本的操作分为读、写、修改;

1)读;

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #__author__ = "tqtl"
4 # Date:2018/5/14 21:57
5 #f = open(file=‘兼职白领学生空姐模特护士的联系方式.txt‘,mode=‘r‘)#UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xaf in position 9: illegal multibyte sequence
6 file = open(file=‘兼职白领学生空姐模特护士的联系方式.txt‘,mode=‘r‘,encoding=‘utf-8‘)#打开文件;
7 file_data = file.read()#阅读文件内容;
8 print(file_data)#打印文件内容;
9 file.close()#一定要关闭文件;总结:以什么编码存储文件,一定要使用相同的编码打开;

兼职白领学生空姐模特护士的联系方式.txt

王心颜 上海 169 46  13813234424马纤羽    深圳 173    50 13744234523乔亦菲    广州 172    52 15823423525罗梦竹    北京 175    49 18623423421刘诺涵    北京 170    48 18623423765岳妮妮    深圳 177    54 18835324553贺婉萱    深圳 174    52 18933434452叶梓萱    上海 171    49 18042432324杜姗姗 北京  167 49 13324523342black girl  河北  167 50  13542342233

04-文件处理-二进制模式

1、那么问题来了,如果我们事先不知道文件的编码格式怎么办?!

1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #__author__ = "tqtl"
4 # Date:2018/5/14 22:22
5 # E-Mail: [email protected]
6 file = open(file=‘兼职白领学生空姐模特护士的联系方式.txt‘,mode=‘rb‘)#b是binary的缩写,以二进制的形式打开文件,用于网络传输,给机器看,适用于不知道文件编码格式的场景;
7 file_data = file.read()#阅读文件内容;
8 print(file_data)#打印文件内容;
9 file.close()#一定要关闭文件;

05-文件处理-智能检测编码的工具

1、chardet工具(动态监测编码的可能类型);

 1 #! /usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #__author__ = "tqtl"
 4 # Date:2018/5/14 22:36
 5 # E-Mail: [email protected]
 6 # Wechat:cxz19930911
 7 #pip 安装第三方模块chardet,类似于yum安装第三方软件;
 8
 9 import chardet
10 f = open(file=‘兼职白领学生空姐模特护士的联系方式.txt‘,mode=‘rb‘)
11 data = f.read()
12 print(data)
13 f.close()
14 print(chardet.detect(data))#{‘encoding‘: ‘utf-8‘, ‘confidence‘: 0.99, ‘language‘: ‘‘}

2、chardet工具的pip安装;

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # __Author__:Administrator
 4 # Version:python3.6.5
 5 # Date:2018/5/19 0019 10:29
 6 import chardet#导入模块;
 7 file = open(file=‘兼职白领学生空姐模特护士的联系方式.txt‘,mode=‘rb‘)
 8 data = file.read()
 9 print(data)
10 print(chardet.detect(data))#{‘encoding‘: ‘GB2312‘, ‘confidence‘: 0.823045267489712, ‘language‘: ‘Chinese‘}
11 print(data.decode(‘GB2312‘))#解码操作,显示中文;

 1 C:\Users\Administrator\PycharmProjects\LFXC2018\venv\Scripts\python.exe C:/Users/Administrator/PycharmProjects/LFXC2018/文件操作&函数/05-文件处理-智能检测编码的工具.py
 2 b‘\xcd\xf5\xd0\xc4\xd1\xd5 \xc9\xcf\xba\xa3 169 46  13813234424\n\xc2\xed\xcf\xcb\xd3\xf0    \xc9\xee\xdb\xda 173    50 13744234523\n\xc7\xc7\xd2\xe0\xb7\xc6    \xb9\xe3\xd6\xdd 172    52 15823423525\n\xc2\xde\xc3\xce\xd6\xf1    \xb1\xb1\xbe\xa9 175    49 18623423421\n\xc1\xf5\xc5\xb5\xba\xad    \xb1\xb1\xbe\xa9 170    48 18623423765\n\xd4\xc0\xc4\xdd\xc4\xdd    \xc9\xee\xdb\xda 177    54 18835324553\n\xba\xd8\xcd\xf1\xdd\xe6    \xc9\xee\xdb\xda 174    52 18933434452\n\xd2\xb6\xe8\xf7\xdd\xe6    \xc9\xcf\xba\xa3 171    49 18042432324\n\xb6\xc5\xe6\xa9\xe6\xa9 \xb1\xb1\xbe\xa9  167 49 13324523342\nblack girl  \xba\xd3\xb1\xb1  167 50  13542342233‘
 3 {‘encoding‘: ‘GB2312‘, ‘confidence‘: 0.823045267489712, ‘language‘: ‘Chinese‘}
 4 王心颜 上海 169 46  13813234424
 5 马纤羽    深圳 173    50 13744234523
 6 乔亦菲    广州 172    52 15823423525
 7 罗梦竹    北京 175    49 18623423421
 8 刘诺涵    北京 170    48 18623423765
 9 岳妮妮    深圳 177    54 18835324553
10 贺婉萱    深圳 174    52 18933434452
11 叶梓萱    上海 171    49 18042432324
12 杜姗姗 北京  167 49 13324523342
13 black girl  河北  167 50  13542342233

日志输出

06-文件处理-写模式操作文件

1、如何不全部占用内存读取文件内容?!

  • 循环文件,即每次只读取一部分;
 1 #! /usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #__author__ = "tqtl"
 4 # Date:2018/5/14 23:04
 5 # E-Mail: [email protected]
 6 # Wechat:cxz19930911
 7 file = open(file=‘兼职白领学生空姐模特护士的联系方式.txt‘,mode=‘r‘,encoding=‘utf-8‘)
 8 for lines in file:
 9     print(lines)
10 file.close()
11 # 王心颜    上海 169 46    13813234424
12 #
13 # 马纤羽     深圳    173    50    13744234523
14 #
15 # 乔亦菲    广州    172    52    15823423525
16 #
17 # 罗梦竹     北京    175    49    18623423421
18 #
19 # 刘诺涵     北京    170    48    18623423765
20 #
21 # 岳妮妮     深圳    177    54    18835324553
22 #
23 # 贺婉萱     深圳    174    52    18933434452
24 #
25 # 叶梓萱    上海    171    49    18042432324
26 #
27 # 杜姗姗 北京  167 49 13324523342
28 #
29 # black girl  河北  167 50  13542342233
30 #为什么会有空行,如何消除文件之间的空行?!
31 #No.1文件中本身隐藏着\n换行符;
32 #No.2 print语句本身会换行,所以呈现的效果是换了两行;

2、写文件操作;

1 #写文件操作
2 file = open(file=‘兼职.txt‘,mode=‘w‘,encoding=‘utf-8‘)
3 file.write(‘北大本科美国留学一次50,微信号:cxz19930911‘)
4 file.close()

1 file = open(file=‘兼职write.txt‘,mode=‘wb‘)
2 file.write("路飞学城!".encode(‘gbk‘))
3 file.close()#输出:路飞学城!
1 file = open(file=‘兼职write.txt‘,mode=‘wb‘)
2 file.write("原子二号!".encode(‘gbk‘))
3 file.close()#输出:原子二号!

小结:

1、注意write模式操作文件,永远都不是修改,而是创建新文件;

2、原来文件与新文件名称相同,就是清空文件内容,再重新写入;

3、So,使用write时候,一定要慎重!防止把源文件内容清空,过程不可逆;

07-文件处理-追加模式操作文件

1、追加模式,将内容追加至尾部;

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# __Author__:Administrator
# Version:python3.6.5
# Date:2018/5/19 0019 18:20
file = open(file=‘兼职白领学生空姐模特护士的联系方式.txt‘,mode=‘ab‘)
file.write(‘\n杠娘 北京 167 55 135585834333‘.encode(‘gbk‘))
file.close()

08-文件处理-混合操作文件

1、混合模式之r+读写模式;

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# __Author__:Administrator
# Version:python3.6.5
# Date:2018/5/19 0019 18:28
file = open(file=‘兼职白领学生空姐模特护士的联系方式.txt‘,mode=‘r+‘,encoding=‘gbk‘)
data = file.read()
print("content",data)
file.write("\nnewline 1哈哈")
file.write("\nnewline 2哈哈")
file.write("\nnewline 3哈哈")
file.write("\nnewline 4哈哈")
print("\nnew content",file.read())
file.close()

PS:先读取内容,然后写入,再次去读取,内容在写入后读取,所以未打印出来,但文件中的确已经写入新的内容;

1、混合模式之w+写读模式;

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# __Author__:Administrator
# Version:python3.6.5
# Date:2018/5/19 0019 18:28

#w+写读模式
file = open(file=‘兼职白领学生空姐模特护士的联系方式.txt‘,mode=‘w+‘,encoding=‘gbk‘)
data = file.read()
print("content",data)
file.write("\nnewline 1哈哈")
file.write("\nnewline 2哈哈")
file.write("\nnewline 3哈哈")
file.write("\nnewline 4哈哈")
print("\nnew content",file.read())
file.close()

总结:

1、r+读写模式,即先读后写,相当于以“读”的模式打开,支持向后面追加内容至文件中;

2、w+写读模式,以写的模式打开,支持读取,我们知道,写模式是以创建的模式打开文件,会把之前的内容先覆盖掉,然后再写入,但可以读取到后续写入的内容,使用场景:几乎用不到;

09-文件操作其他功能

1、文件操作的其他方法;

1)手工将buffer刷入硬盘中,file.flush()方法;

 1 C:\Users\Administrator\PycharmProjects\LFXC2018\venv\Scripts\python.exe "C:\Program Files\JetBrains\PyCharm 2018.1.3\helpers\pydev\pydevconsole.py" 50524 50525
 2 import sys; print(‘Python %s on %s‘ % (sys.version, sys.platform))
 3 sys.path.extend([‘C:\\Users\\Administrator\\PycharmProjects\\LFXC2018‘, ‘C:/Users/Administrator/PycharmProjects/LFXC2018‘])
 4 PyDev console: starting.
 5 Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
 6 file = open(file=‘file_flush_test.txt‘,mode=‘w‘,encoding=‘gbk‘)
 7 file.write(‘\n测试文件的flush操作‘)
 8 13
 9 file.write(‘\n再次测试文件flush操作2‘)
10 15
11 file.flush()

2)Linux中一切皆文件,在Linux系统中判断文件的属性是否可读,返回值为布尔值,buffer中的内容不可读取;

C:\Users\Administrator\PycharmProjects\LFXC2018\venv\Scripts\python.exe "C:\Program Files\JetBrains\PyCharm 2018.1.3\helpers\pydev\pydevconsole.py" 50583 50584
import sys; print(‘Python %s on %s‘ % (sys.version, sys.platform))
sys.path.extend([‘C:\\Users\\Administrator\\PycharmProjects\\LFXC2018‘, ‘C:/Users/Administrator/PycharmProjects/LFXC2018‘])
PyDev console: starting.
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
file = open(file=‘file_flush_test.txt‘,mode=‘w‘,encoding=‘gbk‘)
file.write(‘\n测试文件的flush操作‘)
13
file.write(‘\n再次测试文件flush操作2‘)
15
file.flush()
file.readable()
False

3、file.readline()每次只读一行;

4、seek及tell方法,读取以及跳转至制定光标的位置;

seek方法找到的是字符吗?

总结:

1、tell与seek方法是按照字节来读取内容的,而read是按照字符;

2、具体内容的展示,与编码格式有关,比如gbk2个字节,utf-83个字节(中文情况下);

5、truncate方法,按照制定长度截断文件;

10-文件处理-文件修改功能

1、替换模式修改文件;

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# __Author__:Administrator
# Version:python3.6.5
# Date:2018/5/19 0019 19:32
file = open(file=‘兼职白领学生空姐模特护士的联系方式.txt‘,mode=‘r+‘,encoding=‘utf-8‘)
file.seek(10)
file.write("[路飞学城]luffycity")
file.close()

2、vim于word打开文件的原理说明(硬盘存储机制与原理决定);

3、既省内存又能读取大文件的方法——边读边改(不占内容空间但是占用硬盘空间);

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # __Author__:Administrator
 4 # Version:python3.6.5
 5 # Date:2018/5/19 0019 21:29
 6 import os
 7 file_name = "兼职白领学生空姐模特护士的联系方式.txt"
 8 file_new_name = "%s.new"%file_name
 9 old_str = "乔亦菲"
10 new_str = "杠娘"
11 file = open(file = file_name,mode=‘r‘,encoding=‘utf-8‘)
12 file_new = open(file = file_new_name,mode=‘w‘,encoding=‘utf-8‘)
13 #循环遍历整个文件;
14 for line in file:#定义临时变量line
15     if old_str in line:
16         line = line.replace(old_str,new_str)
17     file_new.write(line)
18 file.close()
19 file_new.close()
20 os.rename(file_new_name,‘123.txt‘)
王心颜 [路飞学城]luffycity424
马纤羽    深圳 173    50 13744234523
乔亦菲    广州 172    52 15823423525
罗梦竹    北京 175    49 18623423421
刘诺涵    北京 170    48 18623423765
岳妮妮    深圳 177    54 18835324553
贺婉萱    深圳 174    52 18933434452
叶梓萱    上海 171    49 18042432324
杜姗姗 北京  167 49 13324523342
black girl  河北  167 50  13542342233

练习题

练习题1 —— 全局替换程序:

  • 写一个脚本,允许用户按以下方式执行时,即可以对指定文件内容进行全局替换;

      `python your_script.py old_str new_str filename`
    
  • 替换完毕后打印替换了多少处内容;

练习题2 —— 模拟登陆:

  • 用户输入帐号密码进行登陆;
  • 用户信息保存在文件内;
  • 用户密码输入错误三次后锁定用户,下次再登录,检测到是这个用户也登录不了;

11-函数-基本介绍

书籍推荐——JInPIngMei(博客园,不让使用中文);

1、函数初识;

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# __Author__:Administrator
# Version:python3.6.5
# Date:2018/5/19 0019 22:45
def helloworld():#函数名sayhi
    print("Hello,I‘m TQTL.")
print(helloworld)#直接打印是内存地址:<function sayhi at 0x0000020147E219D8>
helloworld()#通过函数名进行调用;
#函数可以带有参数
def sayhi(name):
    print("Hello",name)
    print("My name is black girl.")
#sayhi()#TypeError: sayhi() missing 1 required positional argument: ‘name‘ 报错,缺少位置参数;
sayhi(‘TQTL‘)#Hello TQTL

#写一个计算两个数的乘方的程序;
a,b = 5,3
c = a**b
print(c)#125
#使用函数改造以上程序;
def calc(x,y):
    res = x**y
    print(res)
calc(2,10)#1024
calc(2,5)#32
#函数的特性:
"""
较少重复代码,提升程序员的逼格儿;
使程序变得可拓展,引用函数的位置,修改一处即可完成扩展操作;
使程序变得容易维护,比如之前报警使用邮件,现在改为微信,修改一处即可;
"""

12-函数-默认参数

1、函数参数的作用;

  • 形参变量
  • 是参变量

2、默认参数;

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # __Author__:Administrator
 4 # Version:python3.6.5
 5 # Date:2018/5/19 0019 23:11
 6 def stu_register(name,age,country,course):#形参
 7     print("学生注册信息".center(30,‘-‘))
 8     print(name,age,country,course)
 9 stu_register("王山炮",22,"CN","Python")#实参
10 stu_register("张叫春",21,"CN","Linux")#实参
11 stu_register("刘老根",25,"CN","Devops")#实参
12 print("两段程序的分割线".center(40,‘#‘))
13 #def stu_register(name,age,country = "CN",course):#形参,SyntaxError: non-default argument follows default argument
14 def stu_register(name,age,course,country = "CN"):#形参
15     print("学生注册信息".center(30,‘-‘))
16     print(name,age,course,country)
17 stu_register("王山炮",22,"Python")#不传实参
18 stu_register("张叫春",21,"Linux","JP")#传了其他的实参JP
19 stu_register("刘老根",25,"Devops","CN")#传了默认参数CN,小结:默认参数必须放在位置参数之后;

13-函数-关键参数

14-函数-非固定参数

15-函数-非固定参数2

16-函数-返回值

17-函数-局部变量

18-函数-在函数里修改全局变量

19-函数-在函数里修改列表数据

20-函数-嵌套函数

21-函数-作用域

22-函数-匿名函数

23-函数-高阶函数

24-递归介绍

25-递归与栈的关系

26-递归的作用

27-递归的特性总结

28-递归的作用

29-尾递归优化

30-函数-内置方法1

31-函数-内置方法2

32-函数-内置方法3

33-函数-内置方法4

34-函数-内置方法5

36-函数-函数进阶-鸡汤

37-函数-函数进阶-命名空间

38-函数-函数进阶-作用域的查找空间

39-函数-函数进阶-闭包

40-函数-函数进阶-装饰器

41-函数-函数进阶-装饰器流程分析

42-函数-函数进阶-装饰器带参数的函数

43-函数-函数进阶-装饰器带参数2

44-函数-函数进阶-列表生成式

45-函数-函数进阶-生成器

46-函数-函数进阶-斐波那契数列

47-函数-函数进阶-生成器调用方法

48-函数-函数进阶-函数写生成器

49-函数-函数进阶-生成器send方法

50-函数-函数进阶-迭代器

51-函数-函数进阶-作业需求

原文地址:https://www.cnblogs.com/tqtl911/p/9037125.html

时间: 2024-10-07 11:56:39

第二模块·函数编程-第1章 函数、装饰器、迭代器、内置方法的相关文章

Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.

【Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数】

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.

函数对象,函数的嵌套,名称空间与作用域,闭包,装饰器,迭代器,内置函数

一,函数对象 函数对象:函数是第一类对象,即函数可以当做数据传递 1,可以被引用 2,可以做参数的传递 3,返回值可以是函数 4,可以当作容器类型的元素 二,函数嵌套 1,函数的嵌套调用 2,函数的嵌套定义 三,名称空间与作用域 名称空间:存放名字的地方叫名称空间,存放这些值与名字的绑定关系 查看内置名称的两种方法: 三种名称空间 1,内置名称空间:随着python解释器的启动而产生 2,全局名称空间:文件的执行会产生全局名称空间,指的是文件级别定义的名字都会放入该空间 3,局部名称空间:调用函

函数嵌套 ,名称空间与作用域 ,闭包函数 ,装饰器 ,迭代器, 生成器 三元表达式,列表解析,生成器表达式 递归与二分法, 内置函数

函数嵌套名称空间与作用域闭包函数装饰器迭代器生成器三元表达式,列表解析,生成器表达式递归与二分法内置函数--------------------------------------------函数的嵌套调用:在调用一个函数的过程中,又调用了其他函数函数的嵌套定义:在一个函数的内部,又定义另外一个函数def max(x,y): if x>y: return x else: return ydef max1(a,b,c,d): res=max(a,b) res2=max(res,c) res3=ma

函数+装饰器+迭代器+生成器

闭包函数 闭包:定义在内网函数,包含对外部作用域而非全局作用域 范围:一个函数套用1或n个函数 from urllib.request import urlopen #urlopen模块 作用:爬网页 #闭包函数,内部get函数调用外部page函数 def page(url): #调用url def get(): #下载 return urlopen(url).read() #爬网页 return get #返回url值 baidu=page("http://www.baidu.com"

五、python函数、装饰器、内置函数、json及模块

一.递归调用 1.一个函数自己调用自己就是递归调用,最多一个函数递归调用自己999次,超过就会出错2.递归必须有一个明确的结束条件3.每次进入更深一层递归时,问题规模相比上次递归都应有所减少4.递归效率不高,少用递归 eg:def test1(): num = int(input('please enter a number:')) if num%2==0:#判断输入的数字是不是偶数 return True #如果是偶数的话,程序就退出了,返回true print('不是偶数请重新输入!') r

函数篇 ---&gt; 装饰器与内置函数

装饰器: 从名字上来看,装饰器就是用来装饰内容的一个工具.本质上是一个闭包 在开发中,装饰器必须要遵守开放封闭原则:对扩展开放,对修改源代码封闭. 在装饰器中,有一个很重要的工具就是@,称之为语法糖,语法糖的本质就是:被装饰的函数名 = 装饰器的名字(被装饰的函数名) 在装饰器的应用上,有一个很简单的例子 计算简易的函数运行时间 import time # 导入time模块 print(time.time()) # 获取时间戳 start_time = time.time() # 开始时间 de

python笔记5:装饰器、内置函数、json

装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 先看简单例子: def run(): time.sleep(1) print('run....') 现有一个新的需求,希望可以记录下函数的运行时间,需要在代码中计算时间的代码: def run(): start_time = time.time() time.sleep(1) print('run....') end_time = time.time() pr

&lt;04day&gt;_函数嵌套--闭包函数--装饰器--迭代器--生成器

一.函数的嵌套定义 1.python函数支持嵌套 def f1(): #f1函数的定义 def f2(): #f2函数的定义 print('from f2') def f3(): #f3函数的定义 print('from f3') f2() f1() 嵌套函数--运行结果说明: 1首先调用f1()结果,f1函数为空.担保函f2函数,f2函数有内容打印并且有调用,f2函数包含f3函数,但f3函数无调用. 运行结果: 列子:多个数据之间的大小比较. #!/usr/bin/python # -*- c