小编nek*_*imi的帖子

在同一函数中返回并产生

当在Python中的同一函数中使用yield和return时,究竟会发生什么?

def find_all(a_str, sub):
    start = 0
    while True:
        start = a_str.find(sub, start)
        if start == -1: return
        yield start
        start += len(sub) # use start += 1 to find overlapping matches
Run Code Online (Sandbox Code Playgroud)

它还是发电机吗?

python yield

58
推荐指数
3
解决办法
2万
查看次数

使用和关闭Python中的文件

我已经读过,这样打开的文件会在离开with块时自动关闭:

with open("x.txt") as f:
    data = f.read()
    do something with data
Run Code Online (Sandbox Code Playgroud)

但是当从网上开放时,我需要这个:

from contextlib import closing
from urllib.request import urlopen

with closing(urlopen('http://www.python.org')) as page:
    for line in page:
        print(line)
Run Code Online (Sandbox Code Playgroud)

为什么和有什么区别?(我使用的是Python3)

python with-statement contextmanager urlopen

9
推荐指数
2
解决办法
4787
查看次数

根据Python中的自定义字母对字符串值进行排序

我正在寻找一种根据自定义字母表对字符串列表进行排序的有效方法.

例如,我有一个字符串字母表,它是一个字符串"bafmxpzv"列表,仅由该字母表中包含的字符组成.

我想要一种方法来排序该列表与其他常见排序类似,但使用此自定义字母表.我怎样才能做到这一点?

python sorting

6
推荐指数
1
解决办法
6398
查看次数

Python3的速度更快?len或字典查找?

什么是更快(Python3)?

if len(interval) <= 2:
  return 1
Run Code Online (Sandbox Code Playgroud)

要么:

if interval in intervaldict:
  return intervaldict[interval]
Run Code Online (Sandbox Code Playgroud)

是否取决于字符串的长度或字典的长度?我做了一些简单的测试,它看起来len更贵,这对我来说似乎违反直觉.

python performance dictionary

-4
推荐指数
2
解决办法
174
查看次数