Python语言中的 方法加点是什么意思

def a():
    return 'a'

def b():
    b.t1=a
    return 'b'
    
def c():
    a.t2=b

b()
print b.t1()

c()
print a.t2()

这是怎么回事啊
方法名+.+变量名 这东西指的是什么
为什么b.t1可以在方法外部访问
为什么方法c可以创建一个叫a.t2的东西

阅读 13.5k
5 个回答

回答你的问题:
方法名+.+变量名 这东西指的是什么 就是变量,你可以给函数添加属性,zhenguoli已经回答了
为什么b.t1可以在方法外部访问 这里有一篇文章https://www.zhihu.com/questio...
为什么方法c可以创建一个叫a.t2的东西 a.t2=b 是把b这个对象赋值给a.t2,所以后来你print b.t1()其实就等于print a()即执行了a这个函数,此时返回a,即输出a,下面的类似

Python 中函数也是对象, 可以为它添加属性.

def a(): pass
a.name = 'Bob'
print(a.name)

参考 Function Attributes

搞不懂你为什么会有这种问题,你不看书或者教程么?

python是动态语言,

你这个应该是看教程上面的例子吧.

python中, 函数也是对象, 对象的属性可以在运行时动态添加. 属性放在 __dict__ , 你可以用 print(a.__dict__) 查看它的属性.

这个例子中函数还相互引用, 形成了循环引用了. 在编程中强烈不推荐这么做.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题