小编Jac*_* P.的帖子

Python3 pkgutil get_data 用法

我正在尝试使用pkgutil.get_data从包中获取资源。我已经阅读了这个 API 的文档,其中说

要使用pkgutil.get_data(package, resource)....package参数应该是包的名称,采用标准模块格式 ( foo.bar)。参数resource应采用相对文件名的形式,使用 / 作为路径分隔符。

我对术语标准模块格式(foo.bar的理解感到困惑。假设我们有下面的例子,我想获取资源collection_effects.csv,我该如何调用这个API?

sound/                                            Top-level package
  __init__.py                                     Initialize the sound package
  effects/                                        Subpackage for sound effects
          __init__.py
          echo.py
          reverse.py
          cool_effects/
                      collection_effects.csv
          ...
Run Code Online (Sandbox Code Playgroud)

从文档中,我想我可以通过以下方式调用资源:

import pkgutil
res = pkg.util.get_data("sound.effects", "/cool_effects/collection_effects.csv") 
Run Code Online (Sandbox Code Playgroud)

,但是,似乎下面使用也会返回一个字节码(从文档中,无法获取资源将返回None):

res = pkg.util.get_data("sound/effects", "/cool_effects/collection_effects.csv")

我对标准模块格式的含义感到困惑,以及调用此 API 的正确方法是什么?

package python-3.x

8
推荐指数
1
解决办法
1万
查看次数

python列表上的Python属性设置器

我试图利用Python @property来修改类属性的类属性List.大多数在线示例假设@property修饰的属性是一个奇异值,而不是可以通过setter扩展的列表.

稍微澄清一下问题:我不只是想为属性s分配一个值(int列表的值),而是需要修改它(将新的int附加到当前列表).

我的目的是期望:

c = C()
c.s # [1,2,3] is the default value when instance c initiated.
c.s(5)

c.s # [1,2,3,5]
Run Code Online (Sandbox Code Playgroud)

给出C如下的实施:

class C:
    def __init__(self):
        self._s = [1,2,3]
    @property
    def s(self):
        return self._s
    @s.setter
    def s(self, val):
        self._s.append(val)
Run Code Online (Sandbox Code Playgroud)

如果我这样做c.s(5),我会得到的

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-99-767d6971e8f3> in <module>()
----> 1 c.s(5)

TypeError: 'list' object is not callable

Run Code Online (Sandbox Code Playgroud)

我已经阅读了最相关的帖子: 列表上的Python属性带有列表的Python装饰属性setter

但两者都不适合我的情况: __setitem__可以修改列表的元素,但我想扩展列表.

对于我当前的任务,不能使用全局属性.

在这方面,什么是最好的解决方案?(或者我不应该从一开始就期望@property在可变数据结构上?)谢谢!

------ -----编辑

@Samuel Dion-Girardeau建议

子类列表并定义其 …

oop properties python-3.x

7
推荐指数
1
解决办法
563
查看次数

Valgrind 消息:地址 XXX 位于 rx 映射文件 &lt;fielpath&gt; 段中

我正在学习C中与自定义结构相关的malloc和free堆内存。

我遇到的问题

对于下面的代码,我不断得到segment fault. 使用valgrind分析显示:==12999== Address 0x108b4b is in a r-x mapped file <folder_path> segment ==12999==

完整输出:

Name : Amy 
Date of Birth: 1989 9 21
Name : echo 
Date of Birth: 1989 9 21
Name : echo 
Date of Birth: 1989 9 21
Name : echo Address 0x5580be70e270
Date of Birth: 1989 9 21
Their address : 0x5580be70e260 0x5580be70e264 0x5580be70e268
Name : echo Address 0x5580be70e270
Date of Birth: 1989 9 21
Their address : …
Run Code Online (Sandbox Code Playgroud)

c gcc valgrind memory-leaks segmentation-fault

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

类型模式匹配为什么必须变量

我正在阅读“第2部分急躁的scala”第14.4节,对上下文感到困惑:

您可以匹配表达式的类型,例如:

obj match {
   case x:Int => x
   case s:String => Integer.parseInt(s)
   case _:BigInt => Int.MaxValue
   case _ => 0
}
Run Code Online (Sandbox Code Playgroud)

与类型匹配时,必须提供变量名称。否则,您匹配对象:

obj match {
   case _:BigInt => Int.MaxValue // Matches any object of type BigInt
   case BigInt => -1 // Matches the BigInt object of type Class
}
Run Code Online (Sandbox Code Playgroud)

我很困惑的是,如果我进行如下测试,那么如何理解obj哪个请求是expression

val x = 121
val obj : Any = x
obj == 121 // true

obj match {
   case x:Int => x
   case s:String => …
Run Code Online (Sandbox Code Playgroud)

expression scala pattern-matching generic-programming

2
推荐指数
1
解决办法
52
查看次数

如果`for`中的至少一个组件为None,则for-comprehension返回None。

我很难理解Scala中使用for-compression的机制。例如,如果我有

val x = for {
  i <- Option(1)
  j <- Option(2)
  k <- Option(3)
} yield (i,j,k)
Run Code Online (Sandbox Code Playgroud)

xx: Option[(Int, Int, Int)] = Some((1,2,3))。但是,例如,如果组件中的至少一个为“无”,

val x = for {
  i <- Option(1)
  j <- Option(2)
  k <- None
} yield (i,j,k)
Run Code Online (Sandbox Code Playgroud)

然后x是的x: Option[(Int, Int, Nothing)] = None,而我实际上希望看到这样的东西:x: Option[(Int, Int, Nothing)] = Some((1,2,None))

我已经检查了从Scala的官方文档常见问题在那里特别指出for-comprehension的组合flatmapmap。但我还是有难度的理解是,xNone

我想我错过了一些重要的概念flatmapmap区别。

scala for-comprehension flatmap

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