小编Tal*_*aul的帖子

python中关于错误与成功的返回值的最佳实践

一般的,假设你有一个像下面的方法.

def intersect_two_lists(self, list1, list2):
    if not list1:
        self.trap_error("union_two_lists: list1 must not be empty.")
        return False
    if not list2:
        self.trap_error("union_two_lists: list2 must not be empty.")
        return False
    #http://bytes.com/topic/python/answers/19083-standard
    return filter(lambda x:x in list1,list2)
Run Code Online (Sandbox Code Playgroud)

在这个特殊的方法中,当发现错误时,我不想在这种情况下返回空列表,因为这可能是这个特定方法调用的真正答案,我想返回一些东西来指示参数不正确.所以我在这种情况下错误地返回False,否则返回一个列表(空或不).

我的问题是,在这样的领域中最好的做法是什么,而不仅仅是列表?返回我想要的任何东西,并确保我记录下来供用户阅读?:-)你们大多数人都做了什么:

  1. 如果成功,你应该返回True或False,你会发现错误?
  2. 如果成功,你应该返回一个列表,你会发现错误?
  3. 如果成功,你应该返回一个文件句柄,你会发现错误?
  4. 等等

python return

48
推荐指数
4
解决办法
7万
查看次数

lambda与列表理解表现

我最近发布了一个使用lambda函数的问题,并且在回复中有人提到lambda不受欢迎,而是使用list comprehensions.我对Python比较陌生.我做了一个简单的测试:

import time

S=[x for x in range(1000000)]
T=[y**2 for y in range(300)]
#
#
time1 = time.time()
N=[x for x in S for y in T if x==y]
time2 = time.time()
print 'time diff [x for x in S for y in T if x==y]=', time2-time1
#print N
#
#
time1 = time.time()
N=filter(lambda x:x in S,T)
time2 = time.time()
print 'time diff filter(lambda x:x in S,T)=', time2-time1
#print N
#
#
#http://snipt.net/voyeg3r/python-intersect-lists/
time1 = time.time()
N = …
Run Code Online (Sandbox Code Playgroud)

python lambda list-comprehension set

17
推荐指数
4
解决办法
2万
查看次数

Python:将字符串转换为函数名称; getattr还是相等?

我正在编辑PROSS.py以处理蛋白质结构的.cif文件.在现有的PROSS.py中,有以下函数(我相信如果它与任何类没有关联,它的名称是正确的吗?),只存在于.py文件中:

...
def unpack_pdb_line(line, ATOF=_atof, ATOI=_atoi, STRIP=string.strip):
...
...
def read_pdb(f, as_protein=0, as_rna=0, as_dna=0, all_models=0,
    unpack=unpack_pdb_line, atom_build=atom_build):
Run Code Online (Sandbox Code Playgroud)

我为命令行参数添加了一个optons解析器,其中一个选项是指定除unpack_pdb_line之外使用的替代方法.所以选项解析器的相关部分是:

...
parser.add_option("--un", dest="unpack_method", default="unpack_pdb_line", type="string", help="Unpack method to use. Default is unpack_pdb_line.")
...
unpack=options.unpack_method
Run Code Online (Sandbox Code Playgroud)

但是,options.unpack_method是一个字符串,我需要使用与options.unpack_method中的字符串同名的函数.如何使用getattr等将字符串转换为实际的函数名?

谢谢,

保罗

python function getattr

4
推荐指数
1
解决办法
8574
查看次数

标签 统计

python ×3

function ×1

getattr ×1

lambda ×1

list-comprehension ×1

return ×1

set ×1