python_day3基础

Python publisher01 22℃

1.函数剩余部分

'''
函数定义三种方式
'''
#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 文件内,顶着最左边写的:全局名称空间
函数内部定义的:局部名称空间
'''


函数名称空间


2. 模块与包

'''
文件结构
./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

3.内置模块

'''
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__))


序列化与反序列化


4.爬虫基本原理


网页内容

'''
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量化投资 » python_day3基础

喜欢 (0)or分享 (0)