python入门day3

函数剩余部分模块

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

  内置模块

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

模块与包

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

  爬虫的基本原理

'''
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)
View Code

  今日总结

      今天主要学习了函数剩余部分,内置模块,模块与包,以及爬虫的一些基本原理,我个人是对爬虫比较感兴趣的,

简单的爬取数据就可以给我们的生活带来很多便捷,以及一些看似很不可思议的操作,python这门的语言的独特魅力

扫描二维码关注公众号,回复: 6454886 查看本文章

或许才刚刚开始展现。

猜你喜欢

转载自www.cnblogs.com/yt2223/p/11018409.html