• 函数剩余部分模块
''' 函数定义三种方式 ''' #1. 无参函数,不需要接受外部传入的参数 def login(): pass loogin() #2. 有参函数,需要接受外部传入的参数 #传参数多一不可,少一不可 def login(user,pwd): print(user,pwd) login('hy','123') #3. 空函数 #遇到一些比较难实现功能,会导致暂时无法继续编写代码 #所以一般在开发中,都会将所有功能事先定义成空函数 def fun(): pass # pass 代表什么都不做 ''' 函数的返回值 ''' #在调用函数时,需要接收函数体内部产生的结果,则return返回值 # 比较两数大小 def max2(x, y): if x > y: return x else: return y res = max2(10, 30) print(res) ''' 函数对象 指的是函数名指向的内存地址 ''' def func(): pass print(func) #输出结果 <function func at 0x000001E9F65321E0> def fun2(): pass #把函数对象,传入字典中 dict = {'1':func,'1':fun2} choice = input('请选择功能编号:').strip() #若用户选择函数对应的key只,则调用该函数 if choice in dict: dict[choice]() ''' 函数嵌套 嵌套定义: 在函数内,定义函数 嵌套调用 ''' #通过函数内部的返回值,调用函数 def fun1(): print('fun1...') def fun2(): print('fun2...') def fun3(): print('fun3...') # ... return fun3 return fun2 fun2 = fun1() fun3 = fun2() fun3() #通过函数内部,直接调用函数 def fun1(): print('fun1...') def fun2(): print('fun2...') def fun3(): print('fun3...') # ... fun3() fun2() fun1() ''' 函数名称空间 python解释器自带的:内置名称空间 自定义 .py 文件内,顶着最左边写的:全局名称空间 函数内部定义的:局部名称空间 '''
• 内置模块
''' time模块 ''' import time #获取时间戳 print(time.time()) #等待2s time.sleep(2) print(time.time()) ''' json模块 ''' import json user_info = {'name': 'hy', 'pwd': '123'} # dumps:序列化 # json.dumps() # 1.把字典转化为json数据格式 # 2.再把json数据转化成字符串 res = json.dumps(user_info) with open('user_info.json','wt',encoding = 'utf-8') as f: f.write(res) # loads:反序列化 # json.loads() with open('user_info.json', 'rt', encoding='utf-8') as f: # 读取的是字符串 res = f.read() # {'pwd': '123', 'name': 'hy'} # json的loads方法将字符串反序列化成字典 user_info = json.loads(res) # <class 'dict'> # dump:自动触发 write 功能 with open('user.json', 'wt', encoding='utf-8') as f: json.dump(user_info, f) # load:自动触发 read 功能 with open('user.json', 'rt', encoding='utf-8') as f: users = json.load(f) ''' os模块,与操作系统中的文件进行交互 ''' import os os.path.exists('filepath') #判断文件是否存在 os.path.dirname(__file__) #获取当前文件的根目录 ''' sys模块 ''' import sys #获取python在环境变量中的文件路径 print(sys.path) #把项目的根目录添加到环境变量中 sys.path.append(os.path.dirname(__name__))
• 模块与包
''' 文件结构 ./B/test.py print('from test') def fun(): print('from fun...') if __name__ == '__main__': fun() ''' #在test.py内部执行时,__name__ == __main__ #从外部调用test.py时,__name__ != __main__ #import 模块名 import B #from #导入B模块中的test.py #会自动执行test.py中的代码 from B import test
• 爬虫的基本原理
''' http协议: 请求url: http://www.baidu.com/ 请求方式: GET 请求头: Cookie:可能需要关注 User-Agent:用来证明是浏览器 注意:去浏览器的request headers中查看 Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36 Host:www.baidu.com ''' # requests模块使用 import requests #向百度发送请求 response = requests.get('https://www.baidu.com/') response.encoding = 'utf-8' print(response) # 返回响应状态码 print(response.status_code) # 返回响应文本,二进制流 print(response.content) #返回响应文本,字符串 print(response.text) with open('baidu.html', 'wt', encoding='utf-8') as f: f.write(response.text) #爬取梨视频 res = requests.get('https://video.pearvideo.com/mp4/adshort/20190613/cont-1565846-14013215_adpkg-ad_hd.mp4') # 二进制数据流 # print(res.content) with open('a.mp4', 'wb') as f: f.write(res.content)
• 今日总结
今天主要学习了函数剩余部分,内置模块,模块与包,以及爬虫的一些基本原理,我个人是对爬虫比较感兴趣的,
简单的爬取数据就可以给我们的生活带来很多便捷,以及一些看似很不可思议的操作,python这门的语言的独特魅力
扫描二维码关注公众号,回复:
6454886 查看本文章
或许才刚刚开始展现。