Python 什么时候编写不带';我什么也不退

Python 什么时候编写不带';我什么也不退,python,return,Python,Return,我是新手,希望有人能帮我解决基本问题,帮助我澄清概念 我只是想缩短代码,但第二个案例不起作用 我认为它不起作用,因为remove()不返回任何内容。对吗 这让我感到疑惑。什么时候需要写入不返回任何内容的函数?即使有些东西可能会被人使用,也要归还它,这难道不是很好吗?如何处理不返回任何内容的函数 s = 'abc' # This remove a from the abc x = list(s) x.remove('a') # if remove() can return the list t

我是新手,希望有人能帮我解决基本问题,帮助我澄清概念

我只是想缩短代码,但第二个案例不起作用

我认为它不起作用,因为remove()不返回任何内容。对吗

这让我感到疑惑。什么时候需要写入不返回任何内容的函数?即使有些东西可能会被人使用,也要归还它,这难道不是很好吗?如何处理不返回任何内容的函数

s = 'abc'

# This remove a from the abc
x = list(s)
x.remove('a')

# if remove() can return the list this would be simpler
x = list(s).remove('a')

如果函数的目的是产生副作用,例如更改全局变量、执行输入/输出或调用具有副作用的其他函数,则这是有意义的。最后,“no value”本身就是一个返回值,这就是为什么C编程语言中的函数被标记为返回类型void


函数式编程语言将副作用视为一件坏事,并加以限制。

这是一个风格问题。一、 许多其他人也同意,一般来说,让函数返回某些东西更有用,特别是返回
self
而不是
None
的对象方法允许链接


不幸的是,Python社区中的大多数人都不这么做,内置库的创建者也不这么做。你必须学会处理这个问题,考虑到这种风格是普遍存在的,决定你是要处理风格之间的转换,还是要遵循主导范式

函数总是返回某些内容:如果在调用函数期间没有执行
return
,则返回
None

当导致
返回
的任何条件均未给出真实结果时,调用期间可能不会执行任何
返回
,如下代码所示:

def f(x):
    if x==2:
        return 'hello'

y = f('brouef')

print 'y ==',y
它打印

y == None
如果函数的代码块中没有
return
语句,也可能发生这种情况,如下代码所示

也就是说,算法并不总是需要使用函数的返回。函数可以转换某些内容,而不返回除
None

例如:

li = [1000]

def f(x):
    for i in xrange(100):
        if i%3==0 and not i in range(20,85):
            li.append(i)

print li
f(li)
print li
结果

[1000]
[1000, 0, 3, 6, 9, 12, 15, 18, 87, 90, 93, 96, 99]

例如,这是为
sort()
所做的选择,以使编码人员清楚地意识到已排序的对象已经发生了更改。这在文档中是这么说的。

许多程序员都支持所谓的。返回值(查询)的函数通常不会产生副作用,而具有副作用的函数是通常不会返回太多有趣数据的命令。分离的目的是更容易跟踪全局状态的变化。

我认为您需要的'pop()'的可能重复。
sys.exit()
是一个不返回的函数的好例子。不幸的是??为什么不幸?@eyquem我相信第一段已经充分解释了。pyparsing中的大多数类方法都返回self。这是我在Smalltalk时代学到的,这是典型的习语。@PaulMcGuire是的,这很令人沮丧,因为Python在很多方面与Smalltalk相似。