[英]Basic python question about assignment and changing variable
我不太明白的极其基本的问题。
如果我有这条线:
my_string = "how now brown cow"
我这样改变它
my_string.split()
这种可以接受的编码实践就是直接这样写来改变它吗? 或者我应该改为这样更改它:
my_string = my_string.split()
两者不是有效地做同样的事情吗?
我什么时候会用一个而不是另一个?
这最终会如何影响我的代码?
总是尽量避免:
my_string = my_string.split()
永远,永远不要做那样的事情。 这样做的主要问题是它会在未来引入很多代码错误,特别是对于代码的另一个维护者。 这个的主要问题是,这个split()
操作的结果不再是一个字符串:它是一个列表。 因此,将这种类型的结果赋值给名为my_string
的变量,最终势必会引发更多的问题。
第一行实际上并没有改变它——它调用字符串上的.split()
方法,但由于您没有对 function 调用返回的内容做任何事情,结果就被丢弃了。
在第二种情况下,您将返回值分配给my_string
- 这意味着您的原始字符串被丢弃,但my_string
no 指的是.split()
返回的部分。
对.split()
的两次调用都做同样的事情,但是你的程序行做了不同的事情。
如果您想知道拆分是否会导致错误,您只会使用第一个示例,例如:
try:
my_string.split()
except:
print('That was unexpected...')
第二个例子是典型的用法,尽管你可以用其他方式直接使用结果,例如将它传递给 function:
print(my_string.split())
不过,这不是一个坏问题 - 您会发现一些库喜欢更改调用它们的 object 内容的方法,而其他库则喜欢在不触及原始结果的情况下返回处理后的结果。 它们是不同的编程范例,程序员在这个问题上可能存在很大分歧。
在大多数情况下,Python 本身(及其内置函数和标准库)倾向于更函数化的方法,并且会返回运算结果,而不改变原来的结果,但也有例外。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.