您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

是Python新手应该可以注意一下

2023/1/5 19:32:36发布40次查看
这次我们来说说写代码的时候应该注意些什么,有什么不对之处也希望各位程序猿指出来.修改代码时经常碰到这种情况,对某模块做修改,改了一半发现原来构想错误,想退回原点,却不幸忘记刚才修改了哪些地方。辛苦大半天,回不到解放前。即使现在有代码管理系统,一些小规模的调试修改前还是应自己备份。写代码写的很繁琐,脑子不够用了怎么办?那么凭借我这点能力给大家收集点有用的
def web_lookup(url, saved={}):
if url in saved:
return saved[url]
page = urllib.urlopen(url).read()
saved[url] = page
return page
pythonic
import urllib #py2
#import urllib.request as urllib # py3
def cache(func):
saved = {}
def wrapper(url):
if url in saved:
return saved[url]
else:
page = func(url)
saved[url] = page
return page
return wrapper
@cache
def web_lookup(url):
return urllib.urlopen(url).read()
这个看上去还好吧,顺便送上个知识点,用装饰器写代码表面上感觉代码量更多,但是它把缓存相关的逻辑抽离出来了,可以给更多的函数调用,这样总的代码量就会少很多,而且业务方法看起来简洁了。
下面多送几个例子
1.
names = ['raymond', 'rachel', 'matthew', 'roger',
'betty', 'melissa', 'judith', 'charlie']
names.pop(0)
names.insert(0, 'mark')
pythonic
from collections import deque
names = deque(['raymond', 'rachel', 'matthew', 'roger',
'betty', 'melissa', 'judith', 'charlie'])
names.popleft()
names.appendleft('mark')
deque 是一个双向队列的数据结构,删除元素和插入元素会很快
2.
p = 'vttalk', 'female', 30, 'python@qq'
name = p[0]
gender = p[1]
age = p[2]
email = p[3]
pythonic
name, gender, age, email = p
3.
能够用一行代码简明扼要地解决问题时,绝不要用两行,比如
result = []
for i in range(10):
s = i 2
result.append(s)
pythonic
[i2 for i in xrange(10)]
4.
f = open('data.txt')
try:
data = f.read()
finally:
f.close()
pythonic
with open('data.txt') as f:
data = f.read()
使用 with 语句,系统会在执行完文件操作后自动关闭文件对象。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product