推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
miniyao
V2EX  ›  Python

函数调用 return func 和 return result 有什么区别吗?

  •  
  •   miniyao · Aug 6, 2022 · 4466 views
    This topic created in 1557 days ago, the information mentioned may be changed or developed.

    函数调用 return func 和 return result 有什么区别吗?

    函数调用 return func 和 return result 运行结果是一样的,这两种写法的区别是什么?

    def func(list):
        list[0] = 4
        return func # 和 return list 有什么区别吗?
    
    if __name__ == '__main__':
        list = [1,2,3]
        func(list)
        print(list)
    
    15 replies  •  2022-08-07 07:36:17 +08:00
    Trim21
    Trim21
    Aug 6, 2022
    1
    你这个例子里不需要函数的返回值,你就是不 return 都可以...
    reter
    reter
    Aug 6, 2022 via Android
    2
    返回 func 可以链式调用? func(list)(list1)(list2)
    zhuweiyou
    zhuweiyou
    Aug 6, 2022
    3
    你这个例子跟 return 半毛钱关系都没有
    imkuang
    imkuang
    Aug 6, 2022 via Android
    4
    我寻思着你这个例子也用不上 retrun 的东西啊
    zxCoder
    zxCoder
    Aug 6, 2022
    5
    ????? 啥问题这是
    JounQin
    JounQin
    Aug 6, 2022 via iPhone❤️1
    6
    这就是 Python 程序员?
    AV1
    AV1
    Aug 6, 2022
    7
    我怀疑又是 X-Y 问题
    markgor
    markgor
    Aug 6, 2022
    8
    我不熟 python ,
    但是我记得有变量域存在的吧?
    1->list = [1,2,3]
    2->func(list)
    2.1->list[0] = 4
    2.2->return func
    3->print(list)
    結果:[1,2,3]
    因為 func 中修改 list 並不會導致外部的 list 變動(變量域)
    所以無論 func 最後 return 什麼,都不會對外部的 list 改變
    而為什麼是 return func ,那是為了鏈式調用,如 2# 所說的。
    learningman
    learningman
    Aug 6, 2022 via Android
    9
    如果这是 python 的话,你还把默认的 list shadow 掉了
    ispinfx
    ispinfx
    Aug 6, 2022 via iPhone
    10
    这个问题有点离谱
    snw
    snw
    Aug 6, 2022 via Android❤️1
    11
    @markgor
    Python 的 list 是 mutable ,所以函数传参时传的是引用,所以在函数内对 list 的操作会影响到被传入的 list ,所以结果是[4,2,3]
    realpg
    realpg
    Aug 6, 2022
    12
    @JounQin #6
    python 程序员不是会写爬虫就够了
    t2jk4000
    t2jk4000
    Aug 6, 2022
    13
    建议楼主好好跟着书上的例子学吧,现在先别想这些有的没的
    Osk
    Osk
    Aug 6, 2022❤️1
    14
    @snw 哈哈, 想到了 python 的神坑之一:

    def func(a=[]):
    ...



    lz 你好, 这种写法可能会埋下 bug, 稍微好一点点的写法是, func 中接收到传入的 list 后, 对源列表进行一次复制, 使用
    new_list = list.copy() 或 new_list = list[:]
    都行,
    然后对 new_list 进行操作.

    原因楼上解释了
    muzuiget
    muzuiget
    Aug 7, 2022
    15
    实际上 func 运行了个寂寞。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4704 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 01:45 · PVG 09:45 · LAX 17:45 · JFK 20:45
    ♥ Do have faith in what you're doing.