在python中有可能像perl的左值或者lisp的setf吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在python中有可能像perl的左值或者lisp的setf吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含889字,纯文字阅读大概需要2分钟。
内容图文
![在python中有可能像perl的左值或者lisp的setf吗?](/upload/InfoBanner/zyjiaocheng/704/f802e1dda2944de7addb7183de405970.jpg)
在口齿不清中你可以说:
(setf (aref a 1) 5)
在perl中你可以说:
substr( $string, $start, $stop ) =~ s/a/b/g
在python中有可能是这样的吗?我的意思是可以将函数结果用作左值(作为赋值操作的目标)吗?
解决方法:
在编译器级别,特别禁止分配函数调用的结果:
>>> foo() = 3
File "<stdin>", line 1
SyntaxError: can't assign to function call
但是Python语法中有两个特例:
# Slice assignment
a = [1,2,3,4]
a[0:2] = 98, 99 # (a will become [98, 99, 3, 4])
# Tuple assignment
(x, y, z) = (10, 20, 30)
还要注意,在Python中有一个语句/函数二元性,赋值或扩充赋值(=,* = …)不仅仅是一个普通的运算符,而是一个语句并具有特殊的规则.
此外,在Python中没有“指针”的一般概念……传递给函数的唯一方法是存储某些内容的地方是传递“setter”闭包,因为找到一个需要使用显式名称的可赋值位置,索引或者如果该地点是对象实例成员,则需要使用实例字典.
# Pass the function foo where to store the result
foo( lambda value : setattr(myObject, "member", value) )
内容总结
以上是互联网集市为您收集整理的在python中有可能像perl的左值或者lisp的setf吗?全部内容,希望文章能够帮你解决在python中有可能像perl的左值或者lisp的setf吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。