模块与包
1. 常用模块都有那些?
- os模块
- time模块
- random模块
- re模块
2.python常用的标准库
- OS
- time
- random
- sys
- math
- datetime
3.如何安装第三方模块?以及用过哪些第三方模块?
- 在Python中,安装第三方模块,是通过setuptools这个工具完成的。Python有两个封装了setuptools的包管理工具:easy_install和pip。目前官方推荐使用pip
- httprunner
4. 如何在Python中随机化列表中的项目?
- Python标准库中的random模块提供了一个shuffle()函数,该函数返回随机放置其元素的序列。
import random
l1=['aa',22,'ff',15,90,5.55]
random.shuffle(l1)
print(l1)
[22, 15, 90, 5.55, 'ff', 'aa']
random.shuffle(l1)
print(l1)
['aa', 'ff', 90, 22, 5.55, 15]
5.Python的 sys 模块常用方法?
- 1.sys.argv
- 2.sys.exit([argv])
- 3.sys.path
- 4.sys.stdin.readline()
- 5.sys.stdout.write()
6.如何在Python中创建自己的包?
创建一个文件夹,命名为“MyApp”,我将其放在了桌面上,路径为C:\Users\自己的用户名\Desktop。
在MyApp文件夹里创建一个子文件夹,名为‘mypackage’。 在mypackage文件夹中创建一个空__init__.py文件。
再在mypackage下创建greet.py与functions.py两个模块。
7.什么是python模块?Python中有哪些常用的内置模块?
- Python中模块的定义:用一堆代码实现了某个功能的代码集合。
- Python第三方模块:
-
- Requests。Kenneth Reitz写的最富盛名的http库,每个Python程序员都应该会使用它;
-
- Scrapy。如果你是从事Python爬虫相关的工作,这个库必不可少;
-
- WxPython。Python的一个GUI工具,主要用它替代tkinter;
-
- Pillow。它是PIL的一个友好分支,对于用户比PIL更加友好,对于任何在图形领域工作的人是必备的库;
-
- SQLalchemy。一个数据库的库,对它的评价中等;
-
- Beautifulsoup。这个虽然说比较慢,但是它的xml和html的解析库对于新手来讲非常好用;
-
- Twisted。对于网络应用开发者最重要的工具,它有非常优美的api,被很多Python开发大牛使用;
-
- Numpy。它为Python提供了很多高级的数学方法;
-
- Scipy。这是一个Python的算法和数学工具库,它的功能把很多科学家从ruby吸引到了Python;
-
- Matplotlib。一个绘制数据图的库,对于数据科学家或者分析师非常有用。
-
8.如何用Python来发送邮件?
- 使用python内置模块–smtplib和email进行邮件发送。其中smtplib模块负责发送邮件,而email模块负责构造邮件内容。
'''1、引入smtplib模块'''
import smtplib
'''2、创建 SMTP 对象
SMTP 协议是由源服务器到目的地服务器传送邮件的一组规则。(可简单理解为:我们需要通过SMTP指定一个服务器,这样才能把邮件送到另一个服务器)'''
smtpObj = smtplib.SMTP()
'''3、连接(connect)指定服务器'''
smtpObj.connect(host,port)
'''4、登录,需要:登录邮箱和授权码'''
smtpObj.login(uer_name,password)
'''5、发邮件。
参数:发件人,收件人和邮件内容
msg.as_string()是一个字符串类型:as_string()是将发送的信息msg变为字符串类型。
'''
smtpObj.send_mail(from_addrs,to_addr,msg.as_string())
'''6、退出'''
smtpObj.quit()
9.深拷贝和浅拷贝的区别是什么?
- 浅拷贝主要是对指针的拷贝,拷贝后两个指针指向同一个内存空间,修改其中任意的值,另一个值都会随之变化
- 深拷贝需要不但对指针进行拷贝,并对指针指向的内容进行拷贝,经过深拷贝后的指针是指向两个不同地址的指针。两个对象修改其中任意的值另一个值不会改变
10.Python里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别)
- 1.赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。
- 浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用
- 深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变)(copy模块的deep.deepcopy()函数)
11.Python里面如何生成随机数?
- 使用 random 包生成随机数
- 使用 numpy 包生成随机数
- 使用 scipy 包生成随机数
12.介绍一下Python中webbrowser的用法?
webbrowser模块提供了一个高级接口来显示基于Web的文档,大部分情况下只需要简单的调用open()方法。
webbrowser定义了如下的异常:
exception webbrowser.Error, 当浏览器控件发生错误是会抛出这个异常
webbrowser有以下方法:
webbrowser.open(url[, new=0[, autoraise=1]])
这个方法是在默认的浏览器中显示url, 如果new = 0, 那么url会在同一个浏览器窗口下打开,如果new = 1, 会打开一个新的窗口,如果new = 2, 会打开一个新的tab, 如果autoraise = true, 窗口会自动增长。
webbrowser.open_new(url)
在默认浏览器中打开一个新的窗口来显示url, 否则,在仅有的浏览器窗口中打开url
webbrowser.open_new_tab(url)
在默认浏览器中当开一个新的tab来显示url, 否则跟open_new()一样
webbrowser.get([name]) 根据name返回一个浏览器对象,如果name为空,则返回默认的浏览器
webbrowser.register(name, construtor[, instance])
注册一个名字为name的浏览器,如果这个浏览器类型被注册就可以用get()方法来获取。
13.有没有一个工具可以帮助查找python的bug和进行静态的代码分析?
PyChecker是Python代码的静态分析工具,它能够帮助查找Python代码的bug,而且能够对代码的复杂度和格式等提出警告。
14.利用collections库的Counter方法统计字符串每个单词出现的次数"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"
from collections import Counter
a = "kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"
res = Counter(a)
print(res)
15.生成0-100的随机数
import random
x = random.randint(1,100)
print(x)
16.输入某年某月某日,判断这一天是这一年的第几天?(可以用 Python 标准库)
date = input('输入某年某月某日,格式为:****-**-**,小于10请写0*:')
# 使用切片截取年,月,日
year = int(date[0:4])
month = int(date[5:7])
day = int(date[8:])
# 判断是否是闰年,并为每一月赋值
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
feb = 29
else:
feb = 28
# 1-2月是一个计算段,3-7是一个计算段,8-12是一个计算段
result = 0
if feb == 29:
if 1 <= month <= 2:
result = (month - 1) * 30 + day + int(month / 2)
elif 2 < month <= 7:
result = (month - 1) * 30 + day + int(month / 2) - 1
elif 12 >= month > 7:
result = 213 + (month - 8) * 30 + day + int((month - 7) / 2)
elif feb == 28:
if 1 <= month <= 2:
result = (month - 1) * 30 + day + int(month / 2)
if 2 < month <= 7:
result = (month - 1) * 30 + day + int(month / 2) - 2
elif 12 >= month > 7:
result = 212 + (month - 8) * 30 + day + int((month - 7) / 2)
print('{}-{}-{}是一年中的第{}天'.format(year, month, day, result))
17.range&xrange有什么区别?
- 1、range 是生成一个列表
- 2、xrange用法与range完全相同,不同的是生成的不是一个list对象,而是一个生成器
- 3、在生成很大的数字序列时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间
- 4、xrange和range都在循环的时候使用
18. init 和__new__的区别?
- init 在对象创建后,对对象进行初始化。
- new 是在对象创建之前创建一个对象,并将该对象返回给 init。
19.说明一下 os.path 和 sys.path 分别代表什么?
- os.path 主要是用于对系统路径文件的操作。
- sys.path 主要是对 Python 解释器的系统环境参数的操作(动态的改变 Python 解释器搜索路径)。
20.模块和包是什么?
- 在 Python 中,模块是搭建程序的一种方式。每一个 Python 代码文件都是一个模块,并可以引用 其他的模块,比如对象和属性。
- 一个包含许多 Python 代码的文件夹是一个包。一个包可以包含模块和子文件夹。