也许这是一个愚蠢的问题,但是我注意到我的代码中有许多这样的语句:
var = "some_string"
var = some_func(var)
var = another_func(var)
print var # outputs "modified_string"
Run Code Online (Sandbox Code Playgroud)
这真的让我很烦,看起来很糟糕(与整个python相反)如何避免使用它并以这种方式开始使用它:
var = "some_string"
modify(var, some_func)
modify(var, another_func)
print var # outputs "modified_string"
Run Code Online (Sandbox Code Playgroud)
先感谢您
这可能不是最“pythonic”的事情,但您可以将字符串“包装”在列表中,因为列表在 Python中是可变的。例如:
var = "string"
var_wrapper = [var]
Run Code Online (Sandbox Code Playgroud)
现在您可以将该列表传递给函数并访问其唯一元素。更改后,它将在函数外部可见:
def change_str(lst):
lst[0] = lst[0] + " changed!"
Run Code Online (Sandbox Code Playgroud)
你会得到:
>>> change_str(var_wrapper)
>>> var_wrapper[0]
"string changed!"
Run Code Online (Sandbox Code Playgroud)
为了使事情更具可读性,您可以更进一步并创建一个“包装器”类:
var = "string"
var_wrapper = [var]
Run Code Online (Sandbox Code Playgroud)
现在让我们运行相同的示例:
>>> var = my_str("string")
>>> var
string
>>> var.change_str("new string!")
>>> var
new string!
Run Code Online (Sandbox Code Playgroud)
* 感谢@Error-SyntacticalRemorse对创建类的评论。
字符串在 python 中是不可变的,所以你的第二个例子无法工作。在第一个示例中,您将名称绑定var到每行上的全新对象。
通常,像这样对单个名称进行多次分配会产生代码味道。也许如果您发布了更大的代码示例,这里的人可以向您展示更好的方法?
| 归档时间: |
|
| 查看次数: |
6441 次 |
| 最近记录: |