-
Notifications
You must be signed in to change notification settings - Fork 1
Python Questions
Date: 2015-04-26
Title: Python笔试题
Tags: Python
Category: IT
答: 我们要对一个函数(myfunc)进行操作(修改或记录之类的),如下
#方法一:
func = modify(myfunc)
#方法二:
@modify
def myfunc():
pass
方法一可行,但必须在myfunc已经被定义之后的某处,而且不通用,于是有了方法二:装饰器,使用情景如下:
例1:django中在某一操作前检查用户是否已登陆,如果未登录跳转到登陆页面.伪代码实现如下
def login_required(func):
if(is_authenticated):
return func()
else:
return login_view()
@login_required
def article_detail(request):
user = request.user
......
return render("article_detail.html", context)
@login_required
def article_index(request):
user = request.user
......
return render("article_index.html", context)
例2:在django 中给Model自定义属性
from django.db import models
Class Article(models.Model):
title = models.CharField(max_length=1024)
@property
def manifest(self):
attribute_key_list = ['id', 'title']
entity_dict = {}
for key in attribute_key_list:
entity_dict[key] = self.__getattribute__(key)
return entity_dict
>>> article = Article(title="Hackers and Painters")
>>> article.save()
>>> article.manifest
{'id': 1, 'title': "Hackers and Painters"}
例3:python自带函数也到处使用装饰器,如
class Foo:
#静态方法走起
@staticmethod
def add(a, b):
print a + b
答:常见的可迭代对象有list, dict,file, str...... 只要是实现了next()或iter()方法的对象都可以迭代,如:
>>> iterator = iter(range(3))
>>> iterator.next()
0
>>> iterator.next()
1
>>> iterator.next()
2
>>> iterator.__iter__()
<listiterator at 0x7fe6f25f11d0>
>>> for i in iterator:
print i
0
1
2
迭代器: 访问集合内元素的一种方式. 1. 从第一个元素开始访问,一直到最后一个 2. 只往前访问(这并不算什么缺点,因为很少会有在迭代途中进行回退的操作) 3. 特别适合遍历巨大的文件或无限集合,如几个G的文件.因为它不要求你事先准备好整个迭代过程中所有的元素,仅仅在迭代至某个元素时才计算该元素.而列表是一次性获取所有值的,如果有很多值,列表会占用太多的内存. 2. 请以代码说明你所理解的 Python 中对象的深拷贝和浅拷贝。 3. 按熟悉程度说出你所接触过的 Python web 开发框架。 4. 请简单描述 web 开发框架大概有几个模块组成。
-
正则表达式中如何匹配数字?如果匹配单词? 如何匹配行首和行尾?.*?+ 分别都代表什么?
-
请说一下你对正则中贪婪模式和非贪婪模式的理解。
-
爬取网页时遇到死链该怎么处理?
-
按熟悉程度写出你接触过的关系型数据库和 nosql。
-
你使用 linux 的频率有多高(桌面环境?开发环境?还是只是玩儿玩儿)
-
vim 使用:假设在一个文本中有 500 行文字,如果想把第200-300行中的 aaaa 替换成 bbbb 该怎么操作?
-
在 vim 中如何查看一个单词在文本中出现的次数?
-
你所熟悉的版本控制工具是什么?
-
描述一下你说理解的版本控制中的分支的概念。
-
描述一下 pull request 开发流程。
-
描述一下你自己是如果组织一个项目的代码的。
-
说出你在 python 开发中常用的工具。
-
请写出你所熟悉或常用的遍历 字典 的方法。
-
假如有字符串 s = ‘I am a student’(每个单词以空格分隔),请写一段处理程序,处理后得到字符串 s1 = ‘student a am I’。如果第二个单词和第三个单词之间是两个空格分隔,第三个单词和第四个单词之间以 tab 分隔,怎么实现?
-
假如有一张用户数据表(十万行数据,字段为 id, name, ico),要取所有用户信息并打印,请用代码实现。