with在python中创建多行的简洁方法是什么?我想在一个单独的文件中打开几个文件with,但它足够远,我想要它在多行上.像这样:
class Dummy:
def __enter__(self): pass
def __exit__(self, type, value, traceback): pass
with Dummy() as a, Dummy() as b,
Dummy() as c:
pass
Run Code Online (Sandbox Code Playgroud)
不幸的是,那是一个SyntaxError.所以我尝试了这个:
with (Dummy() as a, Dummy() as b,
Dummy() as c):
pass
Run Code Online (Sandbox Code Playgroud)
还有一个语法错误.但是,这有效:
with Dummy() as a, Dummy() as b,\
Dummy() as c:
pass
Run Code Online (Sandbox Code Playgroud)
但是,如果我想发表评论怎么办?这不起作用:
with Dummy() as a, Dummy() as b,\
# my comment explaining why I wanted Dummy() as c\
Dummy() as c:
pass
Run Code Online (Sandbox Code Playgroud)
\s 的位置也没有任何明显的变化.
是否有一种干净的方法来创建with允许在其中发表评论的多行语句?
我有这个代码:
class A(object):
@staticmethod
def open():
return 123
@staticmethod
def proccess():
return 456
switch = {
1: open,
2: proccess,
}
obj = A.switch[1]()
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我不断收到错误:
TypeError: 'staticmethod' object is not callable
Run Code Online (Sandbox Code Playgroud)
怎么解决?
这必须很简单,但作为一个偶尔的python用户,与一些语法作斗争.这有效:
def perms (xs):
for x in itertools.permutations(xs): yield list(x)
Run Code Online (Sandbox Code Playgroud)
但这不会解析:
def perms (xs): for x in itertools.permutations(xs): yield list(x)
Run Code Online (Sandbox Code Playgroud)
单行函数语法是否有一些限制?正文定义(for ...)可以是两行或一行,而def:可以是一行或两行,具有简单的主体,但两者结合失败.是否有排除此的语法规则?
我正在使用 Visual Studio Code 并且 PEP8 会自动格式化我的代码的一部分,我只是在学习 lambdas 并且我有一个像这样的 3 行代码:
它来自这3 行代码:
# Lambda example
divide = lambda x, y: x/y
print(divide(10, 2))
Run Code Online (Sandbox Code Playgroud)
对于这7 行代码:
# Lambda example
def divide(x, y): return x/y
print(divide(10, 2))
Run Code Online (Sandbox Code Playgroud)
有谁知道我如何让这个程序特别不将我的 lambda 函数转换为 def 函数?
它已经很好地格式化了我的代码,所以我不想完全禁用这个自动功能,只是为了 lambda 的事情。
def is_prime(num):
lst = []
if num > 1:
pass
else:
return False
for number in range(0, 1000000+1):
if str(num) in str(number):
continue
elif str(1) in str(number):
continue
elif str(0) in str(number):
continue
lst.append(number)
for x in lst:
if num % num == 0 and num % 1 == 0 and not(num % x == 0):
return True
else:
return False
print(is_prime(9))
Run Code Online (Sandbox Code Playgroud)
我不知道我的代码有什么问题,我找不到解决方案,程序的重点是检查数字是否是素数(素数只能被 1 和它本身整除)。for 循环似乎不起作用或什么的
有没有办法转换这个:
if counts:
def a(l):
return a_with_counts(l)
else:
def a(l):
return a_without_counts(l)
Run Code Online (Sandbox Code Playgroud)
变成三元表达?
我试过这样的事
def a(l):
return a_with_counts(l) if counts else a_without_counts(l)
Run Code Online (Sandbox Code Playgroud)
但我不希望if counts每次打电话都要评估a(l),我想在我的方法开始时做一次,然后每次打电话时直接评估指定的功能a(l).这可能吗?
谢谢!
我想创建一个列表,其中的值对应于另一个列表。例如,如果我有:
listA = [1, 2, 3, 4, 5,...]
Run Code Online (Sandbox Code Playgroud)
我想创建另一个相同的列表,除了所有值都根据 x^2(或任何其他函数)而变化,给出:
listB = [1, 4, 9, 16,25, ...]
Run Code Online (Sandbox Code Playgroud)
我已经尝试通过执行 while 循环来做到这一点:
listA = [1, 2, 3, 4]
listB = range(1, 4, 1)
i = 0
while i <= 4:
listB [i] = (listA [i]) ** 2
i = i + 1
print listA
print listB
Run Code Online (Sandbox Code Playgroud)
但它只是吐出一条错误消息:
Traceback (most recent call last):
File "/home/tim/Desktop/Python/test.py", line 5, in <module>
listB [i] = (listA [i]) ** 2
IndexError: list assignment index out of range …Run Code Online (Sandbox Code Playgroud) 我正在使用下面的python代码创建字典。但是我收到dct_structure变量的一个PEP 8警告。警告是:do not use a lambda expression use a def
from collections import defaultdict
dct_structure = lambda: defaultdict(dct_structure)
dct = dct_structure()
dct['protocol']['tcp'] = 'reliable'
dct['protocol']['udp'] = 'unreliable'
Run Code Online (Sandbox Code Playgroud)
我对python lambda表达式还不满意。因此,任何人都可以帮助我为以下两行python代码定义函数以避免PEP警告。
dct_structure = lambda: defaultdict(dct_structure)
dct = dct_structure()
Run Code Online (Sandbox Code Playgroud)