关于:在字典中存储引用而不是副本

卡尔文·斯佩尔曼(Calvin Spealman)写道:
好吧,基本上没有什么,除了我需要记住我必须这样做.
假设一个人在程序中经常这样做.它变得乏味.我
认为我会定义一些辅助功能:
.... fundict [newfun.func_name] = newfun
...
_if_有一些较短且仍然"适当"的方法,我会使用
它.如果没有,没什么大不了的.
我保证我不会使用它. :-)似乎是"做错事".

# 回答1


MK写道:
好吧,基本上没有什么,除了我需要记住我必须这样做.
假设一个人在程序中经常这样做.它变得乏味.我
认为我会定义一些辅助功能:
... fundict [newfun.func_name] = newfun
...
_if_有一些较短且仍然"适当"的方法,我会使用
它.如果没有,没什么大不了的.
我保证我不会使用它. :-)似乎是"做错事".
好吧,这可能完全是"非Pythonic",但这可以做到您想要的:
def F2(arg):
返回" F2"+ARG
def F1(arg):
返回" F1"+ARG
a = {" 1":" f1"," 2":" f2"}
在A.Items()中的X中X print [eval(x [1])(x [0])
def F2(arg):
返回"新F2"+ARG
在A.Items()中的X中X print [eval(x [1])(x [0])
不知道这对您有用..
# 回答2


整洁的技巧,即使在某些情况下可能很危险.总之感谢,
我没想到.
至少我学到了一些东西. :-)
# 回答3


在7月17日,10:05*AM,MK 整洁的技巧,即使在某些情况下可能很危险.总之感谢,
我没想到.
至少我学到了一些东西. :-)
您需要一致地访问更改变量.包裹
目的:
'X'
'X'
'y'
# 回答4


Castironpi写道:
整洁的技巧,即使在某些情况下可能很危险.无论如何,谢谢,我没有想到.
至少我学到了一些东西. :-)

您需要一致地访问更改变量.包裹
目的:
'X'
'X'
'y'
我的"老式"编程范例从
"指针",在'c'中回到我的学业.我发现这个将军
问题的形式在各​​种语言上都是普遍的,并且在某些方面很难
在Python中表达.标签的整个构想与对象绑定在一起
与传统术语外星人.我发现
Python是该语言使您采用的这种新心态 -
对于旧学校程序员来说,各种工具都有不同的工具.
Castironpi-请举一个我所想的您的想法
这个有趣的.最好发布一些简短的示例代码.

# 回答5


贝吉写道:
您需要一致地访问更改变量.将其包裹在Anobject中:
'X'
'X'
'y'
我的"老式"编程范例从
"指针",在'c'中回到我的学业.我发现这个将军
问题的形式是跨语言普遍的,并且在某些方面很难
在Python中表达.标签的整个构想与对象绑定在一起
与传统术语外星人.我发现主要的 路
Python是该语言使您采用的这种新心态 -
对于旧学校程序员来说,各种工具都有不同的工具.
Castironpi-请举一个我所想的您的想法
这个有趣的.最好发布一些简短的示例代码.
Castironpi-请原谅双帖子,但我的新闻阅读器没有
正确显示您的代码.. doh!无论如何 - 一种很好的解决方法
问题.但是,OP的帖子围绕着重写
一组"标签" - 可以一次记录,何时录制
引用这些标签的新定义将使用.为了
示例一个"集合"(列表,字典,元组)可以由这些
"标签",然后由标签访问的基础代码更改.如果
该代码现在通过引用列表然后间接运行,然后是新的
代码将运行.这些构件是解析器的建造方式和
语言的基础.
我可以看到您如何形成两种解决变量的方法,但不能
弄清楚这是如何拟合原始问题的.请详细说明我
无知.
埃德.
# 回答6


在7月18日上午10:36,Bgeddy [狙击]
这个概念与Cobol Alter动词一样危险和荒谬.
嗯?
# 回答7


在7月17日,7:36*下午,bgeddy Castironpi * - 请原谅双帖子,但我的新闻阅读器没有
正确显示您的代码.. doh!无论如何 - 一种很好的解决方法
问题.但是,OP的帖子围绕着重写
一组"标签" - 可以一次记录,何时录制
引用这些标签的新定义将使用.为了
示例一个"集合"(列表,字典,元组)可以由这些
"标签",然后由标签访问的基础代码更改.如果
该代码现在通过引用列表然后间接运行,然后是新的
代码将运行.这些构件是解析器的建造方式和
语言的基础.
我可以看到您如何形成两种解决变量的方法,但不能
弄清楚这是如何拟合原始问题的.请详细说明我
无知.
埃德.
在OP的帖子中,我们有:
def f1():打印'f1'
def f2():打印'f2'
有趣= [F1,F2]
def f1():打印'新F1'
他们想要乐趣[0]包含这个新功能 /新定义
也.
另一种语言可能允许:
def Funs [0]():打印'新F1'
Python允许:
def f1():打印'新F1'
乐趣[0] = F1

@rebind(娱乐,0)
def f1():打印'新F1'

@rebind_named(有趣,'funa')
def f1():打印'新F1'
在这种情况下,有趣的是词典,班级或班级实例.
功能仍然是头等对象;他们的定义语法是
仅限于正常作业.
要访问"任何'f1'现在指向",唯一的方法就是
与您展示的评估.
Spealman的解决方案可以完成重新定义,但仅提供
呼叫签名和关闭等,不要改变.如果他们
做,您必须重新分配那些 ,也可能还有更多:
[狙击]
'func_closure','func_code','func_defaults','func_dict','func_doc',
'func_globals','func_name'
在3.0中大致相同.这是一个选择.
为了解决这个问题,我观察到更改的参考很容易对计算机而言.
认为:
# - 不是python-
def f1():打印'f1'
008902 F1:0x008934
def f1():打印'新F1'
008902 F1:0x008938
" f1()"调用该函数为存储在008902中的地址
每种情况:F1(008934)在第一种情况下,以及新的F1(008938)
第二.
python消除了从语法中的组合,从而增强了
对象名称身份,以更长的解决方案为代价
(a.ref = f1)保留名称但更改对象.在这个意义上,
唯一的"指针"本身是对象的字符串名称,由一个
名称空间 - eval('F1',空间).
我精心挑选一个自然语言和日常生活的榜样
我们更改了名称所指的对象,或者持有该python
比计算机本地可变更好地符合自然语言
指针和参考.
# 回答8


在7月18日,4:26*下午,castironpi 她,他,它,...即任何代词
# 回答9


在17 Juil,15:56,Mk 好吧,基本上没有什么,除了我需要记住我必须这样做.
假设一个人在程序中经常这样做.它变得乏味.我
认为我会定义一些辅助功能:
... fundict [newfun.func_name] = newfun
...
_if_有一些较短且仍然"适当"的方法,我会使用
它.
你在那里.
从函数引入部分导入
回调= {}
register_callback = partial(助手,回调)
@register_callback
def F1(arg):
打印" F1",arg
回调['f1']('ok')
@register_callback
def F1(arg):
打印"新F1",arg
回调['f1']('ok')
# 回答10


在7月18日,1:32*AM,John Machin 她,他,它,...即任何代词
在这种情况下,
it = dog()
refs ['it'] =
it.walk()
it = cat()
it.feed()
您不希望参考CAT ['IT'].你在说
当您存储Ref ['It']时的狗.
OP可能希望突变当地人().如果不定义
参考对象,
类参考:
def __init __(self,ref):self.ref = ref
一个比空白的描述性名称(上面),以明确指出
您正在使用参考而不是"固定界限"名称空间语义,
或任何正确的词.

标签: python

添加新评论