我是 python 新手,刚刚学习不可变和可变对象(由于我在 MATLAB 和 C# 方面的编码经验有限,我以前从未遇到过这种情况)。
我想知道为什么,如果 python 中的字典是可变的,那么编辑第二个字典中包含的字典不会更改第二个字典吗?
这是一个示例,其中将字典(蝙蝠侠)添加到超级英雄名称字典(super_hero_names)中。当蝙蝠侠后来被更改时,它不会反映在超级英雄名称字典中。如果字典像字符串一样不可变,这对我来说是有意义的,但它们是可变的,那么为什么会发生这种情况呢?
super_hero_names = {
'Superman' : 'Clark Kent',
'Spiderman' : 'Peter Parker'
}
batman = {'Batman' : 'Bruce'}
super_hero_names.update(batman)
batman['Batman'] = 'Bruce Wayne' # (edited)
print(super_hero_names)
# Output: {'Superman': 'Clark Kent', 'Spiderman': 'Peter Parker', 'Batman': 'Bruce'}
Run Code Online (Sandbox Code Playgroud) 我使用PySide2作为我的GUI框架和PyInstaller构建了一个小的gui应用程序,以制作一个文件exe文件。
该应用程序可以在某些PC(Windows 7和10)上完美运行,但是在其他PC上则无法启动-向我显示错误消息:
“致命错误!:无法执行脚本pyi_rth_qt5plugins”
我相信它可能不会捆绑Qt5Gui.dll,Qt5Core.dll和Qt5Widgets.dll,但是我不知道如何使用PyInstaller做到这一点。
有谁知道如何解决这个问题?
这是我的.spec文件:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['main.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='Application',
debug=True,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True , icon='Images\\Application_icon.ico')
Run Code Online (Sandbox Code Playgroud)
编辑
这是从cmd运行且debug = True时的完整输出。我发现奇怪的是,它是指我在(例如File "c:\users\jake\Projects\Application\venv\lib\site-packages\PyInsta
ller\loader\pyimod03_importers.py", line 714, in load_module)上开发应用程序的PC,而不是我正在测试并从中获得此错误消息的PC。
[4588] PyInstaller Bootloader 3.x
[4588] LOADER: executable is C:\Users\User\Desktop\Application.exe
[4588] LOADER: homepath is C:\Users\User\Desktop
[4588] LOADER: _MEIPASS2 is NULL
[4588] …Run Code Online (Sandbox Code Playgroud) 我是C的新手并想知道,在这种情况下,枚举定义中的按位移位1 << 9是做什么的:
static enum {
DEAD, LIVE
} state[1 << 9];
Run Code Online (Sandbox Code Playgroud) python-3.x ×2
bit-shift ×1
c ×1
dictionary ×1
enums ×1
immutability ×1
mutable ×1
pyinstaller ×1
pyside ×1
pyside2 ×1
python ×1
qt ×1