相关疑难解决方法(0)

为什么当我不首先使用xrange时没有定义xrange?

在以下代码段中,

if evaluation_data: 
    n_data = len(evaluation_data)
    n = len(training_data)
    evaluation_cost, evaluation_accuracy = [], []
    training_cost, training_accuracy = [], []
    for j in list(range(epochs)):
        random.shuffle(training_data)
        mini_batches = training_data[k:k+mini_batch_size]
Run Code Online (Sandbox Code Playgroud)

你可以看到我没有使用xrange.虽然编写代码是为了在pyhton2上运行,但我重构了在python3上运行它.但是,我一直在收到以下错误:

................................Directory/network2.py", line 147, in SGD
    for j in list(range(epochs)):
NameError: name 'xrange' is not defined
Run Code Online (Sandbox Code Playgroud)

一开始,我只用过range().然后在学习了range()不是python3中的列表之后我做了list(range()).但是,我xrange在两个修订案例中都会一直收到错误.如果有人能提供帮助,我将不胜

python list range python-3.x

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

在“编译”期间捕获Python中的导入错误和名称错误

您可以使用(linting)工具或编译步骤来捕获python中的导入/名称和其他错误吗?

另一个选择是确保测试所有可能的代码路径(这并不总是可行的,尤其是对于现有的大型代码库和其他原因而言)

这里有些例子。

  1. 缺少导入 -由pylint捕获,尽管用syntax error代替import error
def test():
    print("Time now is ..", datetime.datetime())
Run Code Online (Sandbox Code Playgroud)

pylint输出:

E0602: Undefined variable 'datetime' (undefined-variable)
Run Code Online (Sandbox Code Playgroud)
  1. 导入present,但使用的方法不正确。这将同时传递pylint和py_compile。
from datetime import datetime
def test():
    print("Time now is ..", datetime.today2())
Run Code Online (Sandbox Code Playgroud)

编辑:要添加另一个选项。

这样做会import *显示一些错误,但不会显示函数内部的语句中的错误。

报告此错误

from datetime import datetime
print("today2", datetime.today2())
Run Code Online (Sandbox Code Playgroud)

错误:

Python 3.7.0 (default, Aug 22 2018, 15:22:56)
>>> from test import *
...
    print("today2", datetime.today2())
AttributeError: type object 'datetime.datetime' has no attribute 'today2'
>>>
Run Code Online (Sandbox Code Playgroud)

这不是。

from datetime import …
Run Code Online (Sandbox Code Playgroud)

compilation python-3.x

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

如果我说x = x会怎么样?(在较低的编译器级别)

在Python(更具体地说是Python 3.x)中,如果我说x = x,在低级别对x可变(如list)的引用或对不可变(如int)的引用,会发生什么?编译器是否只是忽略了这些废话?

更具体地说,如果我们有以下情况,编译器会做什么:

class A:
    def __init__(self):
        self.a = self.init_a()

    def init_a(self):
        self.a = some_value
        """
        do stuff with self.a here
        """
        return self.a
Run Code Online (Sandbox Code Playgroud)

对于那些没有注意到的人,self.a通过函数有效地分配给自己init_a(self).

我知道class A上面的这个案例看起来很傻,但是我试图通过清楚地初始化__init__(self)函数内部的所有成员变量来保持我的代码清晰可读(在我实现的另一个类中).我只想知道编译器是否优化了这一步,或者它是否在任何情况下执行某些操作,即使该语句没有产生任何结果(我猜它会被优化掉,但我想成为当然 - 你永远不知道).

python compilation reference

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

为什么Python在达到执行点之前报告语法错误?

Python是一种解释型语言,所以它在我运行时逐行执行代码

import csv,re,sys

print len(sys.argv)
if(len(sys.argv)!=2):
    sys.exit(0)

filename= #from command line argument
Run Code Online (Sandbox Code Playgroud)

它甚至不执行一行并给出语法错误.

现在我的问题是代码的最后一行有错误,但Python解释器逐行执行代码行这样的代码到最后一行是正确的,所以应该高达最后一行执行代码,但它给我下面的错误和不打印我在第2行中定义的sys.argv的长度

File "trace-analysis.py", line 45
filename = # from command line argument
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我没有得到这种行为......请有人解释一下......

python

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

标签 统计

python ×3

compilation ×2

python-3.x ×2

list ×1

range ×1

reference ×1