小编Cha*_*son的帖子

列表更改意外地反映在子列表中

我需要在Python中创建一个列表列表,所以我输入以下内容:

myList = [[1] * 4] * 3
Run Code Online (Sandbox Code Playgroud)

列表看起来像这样:

[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]  
Run Code Online (Sandbox Code Playgroud)

然后我改变了最里面的一个值:

myList[0][0] = 5
Run Code Online (Sandbox Code Playgroud)

现在我的列表看起来像这样:

[[5, 1, 1, 1], [5, 1, 1, 1], [5, 1, 1, 1]]  
Run Code Online (Sandbox Code Playgroud)

这不是我想要或期望的.有人可以解释一下发生了什么,以及如何解决这个问题?

python list mutable nested-lists

576
推荐指数
10
解决办法
3万
查看次数

如何在Python中查找线程ID

我有一个多线程Python程序和一个实用程序函数writeLog(message),它写出一个时间戳后跟消息.不幸的是,结果日志文件没有给出哪个线程正在生成哪个消息的指示.

我希望writeLog()能够在消息中添加一些东西来识别哪个线程正在调用它.显然我可以让线程传递这些信息,但这将是更多的工作.我可以使用一些与os.getpid()等效的线程吗?

python multithreading python-multithreading python-logging

159
推荐指数
6
解决办法
18万
查看次数

Python装饰器让函数忘记它属于一个类

我正在尝试编写一个装饰器来做日志记录:

def logger(myFunc):
    def new(*args, **keyargs):
        print 'Entering %s.%s' % (myFunc.im_class.__name__, myFunc.__name__)
        return myFunc(*args, **keyargs)

    return new

class C(object):
    @logger
    def f():
        pass

C().f()
Run Code Online (Sandbox Code Playgroud)

我想要打印:

Entering C.f
Run Code Online (Sandbox Code Playgroud)

但我收到此错误消息:

AttributeError: 'function' object has no attribute 'im_class'
Run Code Online (Sandbox Code Playgroud)

据推测,这与'logger'中'myFunc'的范围有关,但我不知道是什么.

python reflection metaprogramming

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

py2exe无法生成可执行文件

我在XP上使用python 2.6.我刚刚安装了py2exe,我可以从hello.py成功创建一个简单的hello.exe.但是,当我尝试在我的真实程序中使用py2exe时,py2exe会产生一些信息消息,但无法在dist文件夹中生成任何内容.

我的setup.py看起来像这样:

from distutils.core import setup
import py2exe

setup(console=['ServerManager.py'])
Run Code Online (Sandbox Code Playgroud)

并且py2exe输出如下所示:

python setup.py py2exe
running py2exe
creating C:\DevSource\Scripts\ServerManager\build
creating C:\DevSource\Scripts\ServerManager\build\bdist.win32
   ...
   ...
creating C:\DevSource\Scripts\ServerManager\dist
*** searching for required modules ***
*** parsing results ***
creating python loader for extension 'wx._misc_' (C:\Python26\lib\site-packages\wx-2.8-msw-unicode\wx\_misc_.pyd -> wx._misc_.pyd)
creating python loader for extension 'lxml.etree' (C:\Python26\lib\site-packages\lxml\etree.pyd -> lxml.etree.pyd)
   ...
   ...
creating python loader for extension 'bz2' (C:\Python26\DLLs\bz2.pyd -> bz2.pyd)
*** finding dlls needed ***
Run Code Online (Sandbox Code Playgroud)

py2exe似乎找到了我的所有导入(虽然我有点惊讶看到win32提到,因为我没有明确导入它).此外,我的程序使用此命令非常愉快地启动:

python ServerManager.py
Run Code Online (Sandbox Code Playgroud)

显然我正在做一些根本错误的事情,但是在没有来自py2exe的任何错误消息的情况下我不知道是什么.

python wxpython py2exe

51
推荐指数
5
解决办法
6万
查看次数

Python列表切片语法使用没有明显的原因

我偶尔会看到Python代码中使用的列表切片语法,如下所示:

newList = oldList[:]
Run Code Online (Sandbox Code Playgroud)

当然这与以下相同:

newList = oldList
Run Code Online (Sandbox Code Playgroud)

或者我错过了什么?

python list shallow-copy

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

如何使用mysqlimport读取mysqldump --databases的结果

我已成功使用转储整个MySQL数据库

mysqldump --databases
Run Code Online (Sandbox Code Playgroud)

生成一个很好的.txt文件.但是,我看不出如何一次性将整个文件读回MySQL; mysqlimport似乎一次只需要一个表.

mysql mysqldump mysqlimport

23
推荐指数
3
解决办法
3万
查看次数

Visual Studio键盘生成错误的字符

我的键盘在Visual Studio中偶尔会出现错误的行为.例如,Shift + 3插入一个井号而不是一个井号#.Shift + \插入代字号〜而不是管道.当发生这种情况时,它只影响VS的当前实例 - 即使我打开了多个VS窗口.只有VS受到影响 - 记事本和其他Windows应用程序都很好.关闭然后重新打开我在新的VS 2008实例中处理的解决方案可以解决问题.

有没有人知道我不小心压制了什么组合键?以及如何还原它?

keyboard key-bindings visual-studio-2008 visual-studio

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

有没有一种使用Windows PowerShell停止进程的温和方法?

我必须从PowerShell脚本中停止浏览器,我将它通过管道输入

Stop-Process -Force
Run Code Online (Sandbox Code Playgroud)

但是,这是非常突然的.重新启动浏览器时,它会检测到它没有干净地关闭,并尝试重新启动上一个会话.有什么方法可以告诉它优雅地关闭自己?("我们有两种方法可以做到这一点......")

powershell

15
推荐指数
2
解决办法
3040
查看次数

将版权符号放入Python文件中

我需要在我生成的每个Python源文件的顶部包含一个版权声明:

#   Copyright: © 2008 etc.
Run Code Online (Sandbox Code Playgroud)

但是,当我运行这样的文件时,我收到以下消息:

SyntaxError:第3行文件MyFile.py中的非ASCII字符'\ xa9',但未声明编码; 有关详细信息,请参阅http://www.python.org/peps/pep-0263.html.

显然,Python对版权符号不满意,因为它假设源文件全部是ASCII.要么我需要让我的第一行:

# -*- coding: iso-8859-1 -*-
Run Code Online (Sandbox Code Playgroud)

告诉Python我正在使用拉丁语编码,或者我可以将版权声明更改为:

#   Copyright: \xa9 2008 etc.
Run Code Online (Sandbox Code Playgroud)

它可能没有相同的法律地位.

有更优雅的解决方案吗?

python encoding

13
推荐指数
3
解决办法
2万
查看次数

在Python中,如何获得成员函数类的名称?

我有一个函数,它将另一个函数作为参数.如果函数是类的成员,我需要找到该类的名称.例如

def analyser(testFunc):
    print testFunc.__name__, 'belongs to the class, ...
Run Code Online (Sandbox Code Playgroud)

我想

testFunc.__class__ 
Run Code Online (Sandbox Code Playgroud)

会解决我的问题,但这只是告诉我testFunc是一个函数.

python reflection metaprogramming

12
推荐指数
3
解决办法
2万
查看次数