Python高级能力

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 阿里云大学

1.小明在用python实现文件上传功能时,做了如下操作,其中做法不恰当的是( )

A. 通过黑名单验证上传的文件后缀名称
B. 设置上传目录不可解析
C. 重命名上传的文件名称
D. 使用单独的服务器存放上传的文件
相关知识点: 黑名单是危险易绕过的,可以使用文件后缀名白名单验证和随机文件名称的方式 

2.在构建的Flask应用程序,使用SQLAlchemy中为解决 app上下文的问题:RuntimeError: working outside of request context时的解决方式不正确的是( )

A. db.init_app(app) db.create_all(app=app)
B. db.init_app(app) with app.app_context(): db.create_all()
C. db = SQLAlchemy(app=app)
D. with app.app_context(): db.create_all(app=app)
相关知识点: SQLAlchemy模块不需要立即使用应用的初始化,在app上下文的处理时, 为解决working outside of request context问题,不能用D. with app.app_context(): db.create_all(app=app)的写法。 

3.下列Pandas代码中运行最快的是( ) g = df.groupby('key').value def normalize(x): return (x - x.mean()) / x.std() normalized = (df['value'] - g.transform('mean')) / g.transform('std') (1)normalized (2)g.apply(normalize) (3)g.transform(normalize)

A. (1)
B. (2)
C. (3)
D. 没有区别
相关知识点: 内置的聚合函数,比如mean或sum,通常比apply函数快,也比transform快。

4.以下操作中在寻找爬虫核心链接中是不必要的是( )

A. 浏览器的开发者模式
B. 寻找到network/网络状态监控页面
C. 查看每个url对应的request请求和响应以及参数
D. 另存网页为本地文件
相关知识点: 不需要存到本地 

5.Numpy中能够在[a,b)范围内取一个随机数的表达式是( )

A. b * numpy.random.random() + a
B. b * numpy.random.random() + a + 1
C. (b - a) * numpy.random.random() + a
D. (b - a - 1) * numpy.random.random() + a + 1
相关知识点: 随机生成函数np.random.uniform(low, high, size):可以从一个均匀分布[low,high)中随机采样,定义域是左闭右开。 

6.web开发中,以下做法正确的是( )

A. 后端手机验证码验证通过后,跳转到设置新密码页面,https+post提交用户名、新密码,设置新密码完成密码重置功能
B. 点击重置密码按钮,系统发送一条重置密码的链接到邮箱,格式为:http://www.xxx.com/password/reset?key=1563785498&username=045g6hgd4771h909uiwq5k001923r2p6(其中key是unix时间戳,username是用户名的md5值)
C. 某网站的cookie生成方法为:固定字符串+用户名+时间戳的base64编码
D. 以上都不对
相关知识点: A选项,验证码校验和重置密码是不能分开两步提交的,容易绕过;B的问题主要是无法避免数据篡改,需要增加签名sign=f(param + secret)防止数据被篡改;其次md5加密的用户名并不知道是哪个用户,另外敏感数据应该用https;C项base64可逆,解密之后破解规则,可以伪造登录状,无法避免数据篡改 

7.在提供更多接口给用户使用的时候,有时需要做页面的跳转, 除了自己开发的页面外,还有其他第三方的跳转链接,但可以返回原页面,下列Flask语句可以解决其需要的操作是( )

A. return redirect(url_for('hello'))
B. return Resonse(url_for('hello'))
C. return send_template(url_for('hello'))
D. return redirect ('hello')
相关知识点: 重定向到某一web页面并且可返回,首选redirect的用法,url_for方法简单来说,这个函数接受视图函数的名字(字符串形式)作为参数,返回视图函数对应的url。 

8.以下哪个Scrapy不能实现?

A. 同时在不同的url上爬行
B. 支持shell方式,方便独立调试
C. 通过管道的方式存入数据库
D. 支持分布式
相关知识点: scrapy基于python的爬虫框架,扩展性比较差,不支持分布式 

9.Flask程序报错TemplateNotFound: bootstrap/wtf.html 最可能的原因是()

A. 模板文件夹中wtf.html文件不存在
B. 未进行路由映射
C. ORM扩展未正确安装
D. manage.py文件没有进行实例化  bootstrap = Bootstrap(app)
相关知识点:  因为在manage.py中没有  bootstrap = Bootstrap(app) 

10.判断值在0-10之间的代码,正确的是

A. if num >= 0 and num <= 10:
B. if num >= 0 or num <= 10:
C. if num >= 0 && num <= 10:
D. if num >= 0 || num <= 10:
相关知识点: and表示并且 

11.下列关于Pandas中的apply方法说法正确的是()

A. apply 方法是对DataFrame每一个元素应用某个函数的
B. apply 方法能够实现所有aggregate 方法的功能
C. apply方法和map方法都能够进行聚合操作
D. apply 方法只能够对行列进行操作
相关知识点: apply 方法只能够对行列进行操作,若对每一行进行apply,则axis=1。编写好apply应用的函数,注意传进的参数和返回值的类型是单值、Series或DataFrame 

12.以下关于爬虫中代理服务器,说法正确的是( )

A. 会将数据包原封不动地转发, 在服务端看来就好像真的是一个普通客户端在访问, 而记录的IP 是代理服务器的IPO,这种属于透明代理。
B. 能突破自身IP 访问限制, 访问一些平时不能访问 的站点。
C. 对于爬虫来说,用代理可以隐藏自身IP , 防止自身 被封锁。
D. 通常代理服务器都设置一个较大的硬盘缓冲区,可提高访问速度
相关知识点: A选项属于高度匿名代理 

13.阅读下面Flask代码,以商品(good.py)的模块代码为例, 可能会抛出异常的地方是 ( ) 1. # from flask import Blueprint 2. 3. good_blueprint = Blueprint( 'good', __name__, url_prefix='/api/good' ) 4. 5. @good_blueprint.route('/') 6. def getGoods(): 7. pass 8. 9. @good_blueprint.route('/') 10. def getGoodsInCatagory(): 11. pass

A. 第3行
B. 第5行
C. 第9行
D. 第10行
相关知识点: 本题考查代码的规范和参数使用在实际项目的易错处, D第10行中的方法中的参数不应该用“<>”, 默认不写或者以元组的形式传入。 

14.myisam与innodb是mysql的存储引擎,下列关于两者的区别说法错误的是( )

A. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务
B. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败
C. InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高.但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据.因此,主键不应该过大;而MyISAM是聚集索引,数据文件是分离的,索引保存的是数据文件的指针,主键索引和辅助索引是独立的
D. Innodb支持全文索引,而MyISAM不支持全文索引,查询效率上Innodb要高
相关知识点: myisam与innodb是mysql的存储引擎 区别 1.InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务; 2.InnoDB支持外键,而MyISAM不支持.对一个包含外键的InnoDB表转为MYISAM会失败; 3.InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高.但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数 

15.以下创建字典的语句正确的是

A. {}
B. dict([1,2],[3,4])
C. dict(([1,2],[3,4]))
D. {1:2}
相关知识点: 字典结构为key:value 

16.当我们爬取了网页的html文本后需要对原文本进行解析,解析的方法通常有( )

A. 普通文本操作
B. 正则表达式:re
C. Dom树操作:BeautifulSoup
D. XPath选择器:lxml
相关知识点: 爬虫一般只是爬取了网页的html文本,对于爬虫,我们需要明确我们需要爬取的结构化数据,需要对原文本进行解析,解析的方法通常有下面这些 普通文本操作 正则表达式:re Dom树操作:BeautifulSoup XPath选择器:lxml scrapy默认支持选择器的功能,自带的选择器构建与lxml之上,并对其进行了改进,使用起来更为简洁明了 

17.多线程程序中引用互斥锁可以解决哪些问题?

A. 确定了某段代码只能由一个线程从头到尾完整 地执行。
B. 死锁
C. 阻止了多线程的并发执行
D. 全局变量的安全
相关知识点: BC选项根本无法解决,因为就是引用互斥锁才产生的 

18.下面选项中不能在服务器的响应头中查看到的是( )

A. Content-Length
B. cookie
C. Content-Type
D. User-Agent
相关知识点: BD选项是在请求头中才能看到 

19.网络爬虫技术可以应用在以下哪些方面?( )

A. 搜索引擎
B. 自动过滤广告
C. 数据分析
D. SEO优化
相关知识点: 网络爬虫技术可以应用在搜索引擎、自动过滤广告、数据分析、SEO优化等方面。网络爬虫技术的功能十分强大,但在使用时也应遵守相应的规则。 

20.对于Scrapy中的XPath选择器,下列说法正确的是( )

A. 通过extract方法可以取出节点的值
B. 通过text()可以取出节点的内容
C. 通过@href可以取出href属性的值
D. 直接对节点取值,则是输出节点的字符串
相关知识点: Selector相当于节点,通过xpath去到子节点集合(SelectorList),可以继续搜索,通过extract方法可以取出节点的值,extract方法也可以作用于SelectorList,对于SelectorList可以通过extract_first取出第一个节点的值 通过text()取出节点的内容 通过@href去除节点属性值(这里是取出href属性的值) 直接对节点取值,则是输出节点的字符串 
相关文章
|
5月前
|
监控 测试技术 Python
颠覆传统!Python闭包与装饰器的高级实战技巧,让你的项目效率翻倍
【7月更文挑战第7天】Python的闭包与装饰器是强大的工具。闭包是能记住外部作用域变量的内部函数,常用于动态函数创建和工厂模式。例如,`make_power`返回含外部变量`n`的`power`闭包。装饰器则允许在不修改函数代码的情况下添加新功能,如日志或性能监控。`my_decorator`函数接收一个函数并返回包装后的函数,添加了前后处理逻辑。掌握这两者,可提升编程效率和灵活性。
45 3
|
5月前
|
数据采集 Java C语言
Python面向对象的高级动态可解释型脚本语言简介
Python是一种面向对象的高级动态可解释型脚本语言。
47 3
|
5月前
|
机器学习/深度学习 数据采集 算法
Python编程语言进阶学习:深入探索与高级应用
【7月更文挑战第23天】Python的进阶学习是一个不断探索和实践的过程。通过深入学习高级数据结构、面向对象编程、并发编程、性能优化以及在实际项目中的应用,你将能够更加熟练地运用Python解决复杂问题,并在编程道路上走得更远。记住,理论知识只是基础,真正的成长来自于不断的实践和反思。
|
5月前
|
机器学习/深度学习 数据采集 人工智能
Python 是一种广泛使用的高级编程语言
【7月更文挑战第17天】Python 是一种广泛使用的高级编程语言
60 2
|
5月前
|
存储 算法 Python
“解锁Python高级数据结构新姿势:图的表示与遍历,让你的算法思维跃升新高度
【7月更文挑战第13天】Python中的图数据结构用于表示复杂关系,通过节点和边连接。常见的表示方法是邻接矩阵(适合稠密图)和邻接表(适合稀疏图)。图遍历包括DFS(深度优先搜索)和BFS(广度优先搜索):DFS深入探索分支,BFS逐层访问邻居。掌握这些技巧对优化算法和解决实际问题至关重要。**
52 1
|
5月前
|
算法 大数据 数据处理
震撼!Python堆与优先队列的神奇力量,让你的数据处理能力瞬间爆表!
【7月更文挑战第9天】Python的heapq模块实现了堆数据结构,用于高效地插入、删除和查找最大/最小元素。在Top K元素查找中,堆能快速找到大数据集的前k个最大值。同样,堆作为优先队列,按优先级而非入队顺序处理任务,如任务调度,展示其在复杂问题解决中的效率。掌握这些工具,能显著提升数据处理和编程效率。
50 3
|
5月前
|
存储 算法 调度
惊呆了!Python高级数据结构堆与优先队列,竟然能这样优化你的程序性能!
【7月更文挑战第10天】Python的heapq模块实现了堆和优先队列,提供heappush和heappop等函数,支持O(log n)时间复杂度的操作。优先队列常用于任务调度和图算法,优化性能。例如,Dijkstra算法利用最小堆加速路径查找。堆通过列表存储,内存效率高。示例展示了添加、弹出和自定义优先级元素。使用堆优化程序,提升效率。
71 2
|
5月前
|
算法 调度 Python
Python高手必备!堆与优先队列的高级应用,掌握它们,技术路上畅通无阻!
【7月更文挑战第9天】Python的heapq模块实现了堆数据结构,提供O(log n)操作如`heappush`和`heappop`。堆是完全二叉树,用于优先队列,保证最大/最小元素快速访问。例如,最小堆弹出最小元素,常用于Dijkstra算法找最短路径、Huffman编码压缩数据及任务调度。通过`heappush`和`heappop`可创建和管理优先队列,如`(优先级, 数据)`元组形式。理解并运用这些概念能优化算法效率,解决复杂问题。
52 2
|
5月前
|
程序员 Python
程序员必看!Python闭包与装饰器的高级应用,让你的代码更优雅、更强大
【7月更文挑战第7天】Python中的闭包和装饰器是高级特性,用于增强代码功能。闭包是内部函数记住外部作用域的变量,常用于动态函数和函数工厂。示例展示了`make_multiplier_of`返回记住n值的`multiplier`闭包。装饰器则是接收函数并返回新函数的函数,用于不修改原函数代码就添加功能。`my_decorator`装饰器通过`@`语法应用到`say_hello`函数上,展示了在调用前后添加额外行为的能力。这两种技术能提升代码的优雅性和效率。
43 3
|
5月前
|
Python
Python黑魔法揭秘:闭包与装饰器的高级玩法,让你代码飞起来
【7月更文挑战第7天】Python的闭包和装饰器是提升代码效率的神器。闭包是能记住外部作用域变量的内部函数,常用于动态函数创建。示例中,`make_multiplier_of`返回一个保留`n`值的闭包。装饰器则是一个接收函数并返回新函数的函数,用于在不修改原函数情况下添加功能,如日志或性能追踪。`@my_decorator`装饰的`say_hello`函数在执行时会自动加上额外操作。掌握这两者,能让Python代码更优雅、强大。**
38 1