小编Dav*_*ard的帖子

如何找出哪个指数超出范围?

如果出现IndexError,有没有办法判断一行上的哪个对象是"超出范围"?

考虑以下代码:

a = [1,2,3]
b = [1,2,3]

x, y = get_values_from_somewhere()

try:
   a[x] = b[y]
except IndexError as e:
   ....
Run Code Online (Sandbox Code Playgroud)

如果x或者y太大而IndexError被抓住,我想知道哪个a或哪个b超出范围(所以我可以在except块中执行不同的操作).

显然,我可以比较x,并ylen(a)len(b)分别,但我很好奇,如果有使用这样做的另一种方式IndexError.

python exception index-error

8
推荐指数
3
解决办法
570
查看次数

BindAttribute,排除复杂类型的嵌套属性

如何BindAttribute在控制器中包含或排除嵌套属性?

我有一个'Stream'模型:

public class Stream
{
    public int ID { get; set; }

    [Required]
    [StringLength(50, ErrorMessage = "Stream name cannot be longer than 50 characters.")]
    public string Name { get; set; }

    [Required]
    [DataType(DataType.Url)]
    public string URL { get; set; }

    [Required]
    [Display(Name="Service")]
    public int ServiceID { get; set; }

    public virtual Service Service { get; set; }
    public virtual ICollection<Event> Events { get; set; }
    public virtual ICollection<Monitor> Monitors { get; set; }
    public virtual ICollection<AlertRule> AlertRules { get; …
Run Code Online (Sandbox Code Playgroud)

c# model-binding asp.net-mvc-4

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

重新引发异常有什么意义?

所以我在其他地方看到提到使用以下内容来重新引发异常。

try:
    whatever()
except:
    raise
Run Code Online (Sandbox Code Playgroud)

重新引发异常的目的是什么?无论如何,未捕获的异常肯定会上升到顶部吗?IE:

try:
    int("bad")
except:
    raise
Run Code Online (Sandbox Code Playgroud)

具有相同的输出:

int("bad")
Run Code Online (Sandbox Code Playgroud)

即我在控制台中收到 ValueError 。

python exception

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

为所有用户安装一个 python 包,而不会搞乱系统 python 安装

我想将Pipenv安装到一台机器上,以便该机器的所有用户都可以使用它,但我也不想弄乱系统 Python 设置。

我可以运行,sudo pip install pipenv但它会继续更改系统 Python 中安装的一堆软件包的版本(我使用的是 Scientific Linux 7.4)。我宁愿让系统 Python 完全与我的 linux 发行版提供的一样(因为我已经读到,弄乱系统 Python 是一个坏主意,因为核心系统工具可能以某种方式依赖它)。

我可以,pip install --user pipenv但只有我的用户可以使用 pipenv。

所以两个问题:

1. 我是否不必要地害怕修改系统 Python?在系统 Python 中更新包实际上可以吗?

2. 如果我的谨慎是有道理的,pip install对于所有用户来说,在不修改系统 Python 的情况下,最好的方法是什么(例如 Pipenv 之类的工具)?

理想情况下,我希望用户能够通过键入来使用 pipenv pipenv,而不必执行位于晦涩目录中的文件。

PS 理想的情况是 pipenv 可以作为我的发行版中的“安全”包提供,但可惜事实并非如此。我也知道 virtualenvs,但我的印象是它们更多地用于特定项目的开发和部署,并不一定适用于系统范围的工具(尽管我准备对此进行纠正)。

python pipenv

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