小编Cod*_*755的帖子

文档字符串中的 python 注释

我发现这个是因为我遇到的一些作业问题是通过文档字符串测试的,它让我失败了。

例如:

def foo(x):
    """
    >>> foo(5)
    25
    >>> foo(6)
    36  # Are you sure?
    """
    return x**2

if __name__ == '__main__':
    import doctest
    doctest.testmod(verbose=True)
Run Code Online (Sandbox Code Playgroud)

上面的示例失败并显示:

Expected:
    36  # are you sure?
Got:
    36
Run Code Online (Sandbox Code Playgroud)

我想知道我们是否不应该在文档字符串中添加注释?或者有没有办法让 python 忽略文档字符串中的注释?

python docstring python-3.x

6
推荐指数
2
解决办法
1272
查看次数

java Enum valueOf 有两个参数?

为什么valueOf有两个参数?

valueOf 的 Java 文档中

public static <T extends Enum<T>> T valueOf?(Class<T> enumType, String name)

参数:

enumType - 要从中返回常量的枚举类型的 Class 对象

name - 要返回的常量的名称

但我在网上读到的大多数例子都说:

enum WorkDays {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY;
}
Run Code Online (Sandbox Code Playgroud)

测试:

WorkDays day1 = WorkDays.valueOf("MONDAY");
System.out.println(day1); // >>>  MONDAY
Run Code Online (Sandbox Code Playgroud)

该方法似乎只使用了一个参数?

java enums

6
推荐指数
2
解决办法
1361
查看次数

python hasattr() 区分方法和属性

正如一些好人向我展示的那样,callable()可以用来解决这个问题,我仍然发现这是一个不同的问题,因为任何想到这个问题的人都不会找到答案,因为他不会将其直接连接到callable(). 另外,我找到了一种不使用的可能方法,即按照我自己的一个答案中所示的方式callable()使用。type()

假设我创建一个简单的类Cls

class Cls():
    attr1 = 'attr1'

    def __init__(self, attr2):
        self.attr2 = attr2

    def meth1(self, num):
        return num**2

obj = Cls('attribute2')
print(hasattr(obj, 'attr1'))  # >>> True
print(hasattr(obj, 'attr2'))  # >>> True
print(hasattr(obj, 'meth1'))  # >>> True
Run Code Online (Sandbox Code Playgroud)

据我所知,属性是类内的变量,方法是类内的函数。他们不一样。

显然,Python 无法hasmethod()调用。看来这真的为我的测试提供hasattr()了一切,,。它与属性或方法没有区别。True'attr1''attr2''meth1'

如果我使用dir(),属性和方法将全部显示在输出中,并且您也无法真正分辨出哪一个是什么类型。

有人可以解释一下为什么吗?

python oop

5
推荐指数
1
解决办法
2174
查看次数

如何在Python中用正则表达式替换/修改模式?

假设我要修改脚本中的所有模式,以一行为例:

line = "assert Solution().oddEvenList(genNode([2,1,3,5,6,4,7])) == genNode([2,3,6,7,1,5,4]), 'Example 2'"
Run Code Online (Sandbox Code Playgroud)

请注意,函数genNodeList[int]作为参数。我想要的是删除列表,并保留列表中的所有整数,以便该函数实际上将其作为*nums参数。

期待:

line = "assert Solution().oddEvenList(genNode(2,1,3,5,6,4,7)) == genNode(2,3,6,7,1,5,4), 'Example 2'"
Run Code Online (Sandbox Code Playgroud)

我想出了一个re模式

r"([g][e][n][N][o][d][e][(])([[][0-9\,\s]*[]])([)])"
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用它......我无法开始re.sub工作,因为它要求我用固定字符串替换。

我怎样才能达到我想要的结果?

python regex

5
推荐指数
1
解决办法
1410
查看次数

Python"for in"循环打印列表中的最后一项

最近我学习了列表和for循环,以及.pop()指示和删除列表中最后一项的命令.

所以我试着编写一个代码来逐个删除列表中的最后一项,直到它只剩下一个项目.

代码是:

list_A = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

for i in list_A:
    print(list_A.pop())
    if 'c' not in list_A:
        break

print("job done.")
Run Code Online (Sandbox Code Playgroud)

python 3.6的输出给了我:

/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
j
i
h
g
f
job done.
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它确实有效,但只有一半呢?

我在期待:

j
i
h
g
f
e
d
c
job done
Run Code Online (Sandbox Code Playgroud)

我的意思是,如果它返回一些错误,我会更舒服,这意味着代码不正确.但为什么它有效,但不是完整的方式?

python for-loop list python-3.x

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

python random.getstate()和random.setstate()

在这里随机学习模块,一开始就有簿记功能,据我所知,设置一个特定的种子是为了确保获得相同的随机数.

但是,getstate()setsate()link 在文档中,它没有介绍这个状态的含义,如果我不知道它意味着什么,我怎么能正确设置它?

random.getstate()

返回捕获生成器当前内部状态的对象.可以将此对象传递给setstate()以恢复状态.

random.setstate(状态)

state应该是从之前调用getstate()获得的,而setstate()将生成器的内部状态恢复到调用getstate()时的状态.

谢谢,

random python-3.x

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

python 使用逗号交换值会导致混乱

这涉及到我在尝试解决链表反向问题时遇到的一个问题。

首先放一些链表定义和生成链表的快速方法的初步代码:

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

    def __repr__(self):
        if self.next:
            return "{}->{}".format(self.val, repr(self.next))
        else:
            return "{}".format(self.val)

def genNode(*nodes, end=None):
    if len(nodes) == 1 and type(nodes[0]) == list:
        nodes = nodes[0]
    for i in nodes[::-1]:
        n = ListNode(i)
        n.next, end = end, n
    return n if nodes else None
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我发现交换机制仍然取决于我编写的变量的顺序。

最初,当我们谈论 python 中的交换值时,我们可以这样做:

a, b = b, a
Run Code Online (Sandbox Code Playgroud)

如果我有的话,它应该以同样的方式工作

b, a = a, b
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写的这个反向链表方法有3个变量交换,想法很简单,创建一个虚拟头,并在dummy和dummy.next之间不断添加节点,这样就可以反转。

def rev(head):
    dummy = ListNode('X')
    while head:
        dummy.next, head.next, …
Run Code Online (Sandbox Code Playgroud)

python swap python-3.x

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

为什么我能在python中全局化一个不存在的变量

首先,我完全理解global陈述的含义和使用方法.

现在,让我们来看看:

x = 100
def f():
    global x
    global xxx
    x = 99
    return x

print(f())
# >>> 99
print(x)
# >>> 99
Run Code Online (Sandbox Code Playgroud)

您可以看到,通过使用global x,我成功地在全局环境中更改了x的值.

但是xxx根本不存在,为什么我被允许全局化它甚至不会带来任何错误,即使该函数被执行?

python global

3
推荐指数
1
解决办法
218
查看次数

Java List`of`方法非常令人困惑

当我在List 方法中查看Java文档时 of

它非常重载,所有元素的数量从1到10 ...

它说:

返回包含五个元素的不可修改列表。

有关详细信息,请参见不可修改的列表。

类型参数:E-列表的元素类型参数:e1-第一个元素e2-第二个元素e3-第三个元素e4-第四个元素e5-第五个元素

我只是一点都不了解,可以找到一种使用它的方法吗?

java list

3
推荐指数
1
解决办法
95
查看次数

为什么数字字符的 Integer.valueOf 不返回其值?

我不得不说这是一个错误发现的,因为我试图将 a 转换String为 an Integer,但我没有意识到它是一种Character类型而不是Integer

但不知何故,尽管JDK 文档中没有提到,但Integer.valueOf仍然可以使用参数运行?Character

System.out.println(Integer.valueOf("2"));  // >>> 2
System.out.println(Integer.valueOf('2'));  // >>> 50
Run Code Online (Sandbox Code Playgroud)

虽然它对于String的参数工作得很好"2",但它没有为Character的参数提供预期的结果'2'。为什么会出现这种情况?

我想了解我是否错过了什么?为什么它返回 50 而不是 2?

谢谢


好的,我检查了 ASCII 表,它返回 50,因为 的索引Character '2'是 50。

java sqldatatypes

3
推荐指数
1
解决办法
2113
查看次数

标签 统计

python ×6

python-3.x ×4

java ×3

list ×2

docstring ×1

enums ×1

for-loop ×1

global ×1

oop ×1

random ×1

regex ×1

sqldatatypes ×1

swap ×1