Q-Logo 我的学习笔记分享

Entries for tag "can-shu-chuan-di"

理解Python的参数传递、变量赋值及可变对象和不可变对象

Python的参数传递,既非按值传递(call-by-value),也非按引用传递(call-by-reference),而是按对象引用传递(call-by-object-reference)或者说按赋值传递(call-by-assignment)。

Python中的赋值可理解为将“变量名”与对象进行绑定。

  • “变量名”并不是对象本身,只是通过赋值与对象进行了绑定,赋值完成后,就可以通过“变量名”来引用对象。
  • 每个“变量名”到对象的绑定有其作用域。

在Python中, list, dict, set 等类型的对象是可变对象,而 str, int, tuple等类型的对象是不可变对象。

  • 对于可变对象,可以通过一些特定操作,“就地”改变其内容,内容改变后,所有引用该可变对象的变量,都会看到此变化
  • 对于不可变对象,任何操作都不能“就地”改变其内容,而只能将内容进行变换生成新的内容,返回新的对象

Django传递参数到模板中的JavaScript

在用Django进行网络应用开发时,往往通过模板渲染的方式,直接向前端返回html页面。但是,现代的前端页面需要由HTML、CSS和JavaScript合作进行渲染,简单来说,HTML标记页面结构和元素,CSS描述页面样式,JavaScript控制页面的显示逻辑。现代前端页面中大量使用JavaScript,让页面动起来、活起来,是JavaScript 的强项。Django的模板引擎虽然支持一些循环、条件等模板标签及模板过滤器,还允许自定义模板标签和过滤器,但与各种前端框架比起来,终究是太孱弱了,许多事情还是该在前端由JavaScript处理。这里面往往还涉及到项目的长期可维护性,以及保持前后端分工、前后端代码独立演化能力等方面的考量。

本文介绍了Django传递参数到模板中的JavaScript两种方法。