函数的定义:
def f1( ): #定义函数
#位置参数
def sum(a,b): #为形式参数
c=a+b
print(c)
sum(3,4)#位置参数要求一一对应
当位置不能做到一一对应,我们要用关键字传参方法。
函数返回值:
return
def sum(a,b):
c = a+b
return c
a = sum(2,3)
print(a)
返回值不会显示,需要用变量接收返回值,并打印输出变量。
局部变量与全局变量
#局部变量在局部中定义的
特点:作用域范围是函数内部
文件的打开和关闭
fp = open('text.txt','w')
fp.write('hello')
#文件夹不可自动创建需要自行创建,但是文件可以
fp.close()
#这种写入的方式如果再次书写将清空原来的书写内容
#可以用a来追加 (在原有的基础上进行追加)
#读数据
fp = open('text.txt','r')
content = fp.read()
content = fp.readline()
content = fp.readines()
#可以进行行读 返回的为列表
爬虫豆瓣第一页网页:
分为三部:
1.请求对象的定制
2.获取响应的数据
3.将获取的数据下载到本地,通过open方法。在open方法中我们要注意编码方式,其默认编码方式为gbk。
在network里 我们找到top里面有排行榜数据
在Handers里面有我们需要的url地址和 对象定制需要的User-Agent.
#urllib_ajax 请求
#get请求 获取豆瓣电影的第一页并且保存起来
import urllib.request
url = 'https://movie.douban.com/j/chart/top_list?type=5&interval_id=100:90&action=&start=0&limit=20'
headers ={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
}
#请求对象的定制
request = urllib.request.Request(url = url,headers=headers)
#获取响应的数据
reponse = urllib.request.urlopen(request)
content = reponse.read().decode('utf8')
print(content)
#将数据下载到本地
#open默认gbk编码 如果我们想在open中存放中文我们需要指定编码格式utf-8
# fp = open('cinma.json','w',encoding='utf-8')
# fp.write(content)
#crtl + ale+ l 使阅读更加便捷
#写法2
with open('douban.json','w',encoding='utf-8') as fp1:
fp1.write(content)
#两种写法呈现的是一致的
在这里有个好的方法处理数据:ctrl+alt +l
在Python中,encode()
和decode()
是用于处理字符串和字节之间的转换的方法。
encode()
方法用于将字符串转换为字节:
python复制代码
s = 'Hello, world!' | |
bytes = s.encode('utf-8') # 使用utf-8编码将字符串转换为字节 | |
print(bytes) |
在上面的例子中,s.encode('utf-8')
将字符串s
使用UTF-8编码转换为字节。
decode()
方法用于将字节转换为字符串:
python复制代码
bytes = b'Hello, world!' | |
s = bytes.decode('utf-8') # 使用utf-8编码将字节转换为字符串 | |
print(s) |
在上面的例子中,bytes.decode('utf-8')
将字节bytes
使用UTF-8编码转换为字符串。
需要注意的是,在encode和decode时需要指定相同的编码方式,例如都使用'utf-8',否则可能会出现解码错误。
另外,Python 3中的str类型和bytes类型是不同的,str类型是unicode字符集,而bytes类型是二进制数据。因此,需要使用encode和decode方法在它们之间进行转换。在Python 2中,只有str类型,因此不需要使用这些方法进行转换。