繁体   English   中英

python 关于赋值和改变变量的基本问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM