V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wwqgtxx  ›  全部回复第 52 页 / 共 192 页
回复总数  3836
1 ... 48  49  50  51  52  53  54  55  56  57 ... 192  
2018-03-31 12:55:08 +08:00
回复了 dwjgwsm 创建的主题 Python 如何在类中将字符串转换成变量名?
另外你提到了多进程,那么很遗憾的告诉你,如果你想用一个共同基类来在多进程中共享数据,那么你可以试试看,他们之间的数据根本就不会保持同步,你要是说多线程那还可以理解,否则你就需要进行进程间通讯来交换数据
2018-03-31 12:53:13 +08:00
回复了 dwjgwsm 创建的主题 Python 如何在类中将字符串转换成变量名?
@dwjgwsm “会将 run 中的很多局部变量集中保存到基类中的一个字典变量中”,你就不能直接在基类的字典变量中直接操作么,还要“下一次运行时,首先恢复这些局部变量”不觉得很多余么,如果你说你就是不想每次都调用 xxx_dict['aaa']这种非要用 aaa 这种形式调用,我只能告诉你没有办法 python 不支持引用别名这种操作,你可以去用 C++去,python 中无论如何都不可能实现这样的操作
在你的上一个问题 /t/439895 中,@chenstack 已经告诉你了,python 的 locals()是不可更改的,你觉得他能修改那是因为他只是一份复制,并不是真正的局部命名域,换句话说不可能动态批量生成一批局部变量
2018-03-31 12:43:40 +08:00
回复了 dwjgwsm 创建的主题 Python 如何在类中将字符串转换成变量名?
说到底,你在模块级别可以那样写只是因为你这样的操作把 x1 这个变量定义成了一个全局变量了,他从这个模块外部是可以被访问的
而你在一个函数内部声明了一个叫 x1 的变量和声明了一个叫 x2 的变量有什么区别,他都是指向一块栈内存而已,出了这个函数谁也访问不到他,那么他的名字有出了给你看着舒服还有什么意义
如果你用过 C/C++这种语言就知道了,变量的名字根本就不会被保存下来,编译期间就被擦除了,运行时完全没人知道他叫什么名字
2018-03-31 12:36:47 +08:00
回复了 dwjgwsm 创建的主题 Python 如何在类中将字符串转换成变量名?
问题是你后面为什么要用一个动态的变量名,在一个函数的内部
x='abcd'
locals()['v']=np.arange(5)
v=np.arange(5)
exec(x+"=v")
print(abcd)
这种代码和
v=np.arange(5)
x = v
printf(x)
这两种代码你能告诉我有什么区别么
2018-03-31 12:35:30 +08:00
回复了 dwjgwsm 创建的主题 Python 如何在类中将字符串转换成变量名?
@dwjgwsm 你这种在任何一个 IDE 中都会报错的用法自己看着不觉得扎眼么,至于 python 的设计者为什么这么做的原因很简单,你对一个函数内的局部命名作用域的修改并没有什么意义,出了函数不还是被销毁了
比如你上面的例子和你
dict0 = {'x1': np.arange(5), 'y1': np.arange(5) * 2}
print(dict0['x1'])
这样写有什么本质上的区别么
2018-03-31 12:25:49 +08:00
回复了 dwjgwsm 创建的主题 Python 如何在类中将字符串转换成变量名?
@congeec 在函数内部不会生效的,要是在模块级别倒是可以
2018-03-31 12:22:10 +08:00
回复了 dwjgwsm 创建的主题 Python 如何在类中将字符串转换成变量名?
你要是问 exec 为什么在函数中无效,那么我倒是可以给你解释,因为 exec 是对 locals()和 globals()进行修改的,而 locals()只是对当前函数内的局部变量的深拷贝,所以对他的修改出了 exec 函数就失效了,也就是你不可能通过 exec 函数达到你的目的
2018-03-31 12:17:39 +08:00
回复了 dwjgwsm 创建的主题 Python 如何在类中将字符串转换成变量名?
@dwjgwsm 你是要动态创建一个局部变量么,那么问题在于有什么意义呢,这个变量叫 abcd 和叫 a 有什么区别,请贴出你具体的应用场景,要不然别人没办法理解你到底要做什么
2018-03-31 12:08:57 +08:00
回复了 dwjgwsm 创建的主题 Python 如何在类中将字符串转换成变量名?
@dwjgwsm 如果你需要在后面的代码中直接 print(abcd) ,说明'abcd'这个字符串根本就是一个编译期间的常量,那么为什么不直接用 abcd = v 这种操作,然后后面的判断直接用 if a>abcd:不就得了
如果 x 所指代的字符串是编译期间未知的,那么不管你是在前面赋值还是后面判断的时候都只能已字典取值的形式访问,上面所说的用 AST 模块并不能解决你的问题
还有,这里的 abcd 既然是个局部变量,那么叫什么名字很重要么,出了函数范围就被删除了,何必那么在乎他的名字
2018-03-31 10:41:03 +08:00
回复了 dwjgwsm 创建的主题 Python 如何在类中将字符串转换成变量名?
我就想问问为什么要这么干
2018-03-31 10:30:01 +08:00
回复了 dwjgwsm 创建的主题 Python 如何在类中将字符串转换成变量名?
locals()[x] = v
忘了加括号
2018-03-31 10:29:22 +08:00
回复了 dwjgwsm 创建的主题 Python 如何在类中将字符串转换成变量名?
locals[x] = v
不就得了
2018-03-31 09:35:07 +08:00
回复了 dwjgwsm 创建的主题 Python 如何在类中将字符串转换成变量名?
getattr
2018-03-31 00:16:56 +08:00
回复了 LeungJZ 创建的主题 iPhone iPhone6 更新了 11.3 感觉还是没啥区别,还是该慢还是慢。
第 n 个不看说明的人了,你就不会点上面的更多资料看看苹果官方文档么
2018-03-30 11:22:05 +08:00
回复了 Jimjay 创建的主题 iPad iPad 看书体验如何?特别是新款
@zengyuxi 看书也分看什么书,比如文学作品,大部分并不需要做笔记,至于分辨率,kwp3 的分辨率已经相当不错了
2018-03-30 08:10:45 +08:00
回复了 elvisyao 创建的主题 iOS 终于不降频了, iPhone6、6s 用户赶紧升级到 iOS11.3 正式版吧
作为降频受害者,一直在用 beta 版,自从更新过 11.3beta2 之后就不降频了
2018-03-30 08:08:44 +08:00
回复了 U2Fsd 创建的主题 iPhone iOS 11.3 正式版已发布
@lengjian 一直有,每次用蓝牙耳机打电话把手机放口袋最讨厌这个问题了
2018-03-30 01:37:33 +08:00
回复了 U2Fsd 创建的主题 iPhone iOS 11.3 正式版已发布
@Marfal 把描述文件删了重启就有了
2018-03-29 17:28:01 +08:00
回复了 gaocc 创建的主题 问与答 java8 出很久了没用过 Lambda 表达式,问怎么用?实际好处是?
感觉最大作用,简化内部类
2018-03-29 13:26:56 +08:00
回复了 voocel 创建的主题 问与答 Java 版权之争有结果了,谷歌要向甲骨文赔偿 88 亿美元
而且谷歌还能接着上诉呢
1 ... 48  49  50  51  52  53  54  55  56  57 ... 192  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1086 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 49ms · UTC 18:55 · PVG 02:55 · LAX 11:55 · JFK 14:55
Developed with CodeLauncher
♥ Do have faith in what you're doing.