推荐学习书目
› 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
20032009
V2EX  ›  Python

谁能帮忙解答 Python 很神奇的问题?

  •  
  •   20032009 · May 15, 2018 · 4687 views
    This topic created in 3104 days ago, the information mentioned may be changed or developed.

    def run(a,b,c): if a == b : c a = 1 b = 1 c = print('1') run(a,b,c)

    1、为什么没有报错? 2、执行过程中到底执行了哪个 c ?

    23 replies  •  2018-05-16 08:02:42 +08:00
    zhanglintc
    zhanglintc
    May 15, 2018
    1
    这个代码咋看啊...
    20032009
    20032009
    OP
    May 15, 2018
    2
    def run(a,b,c):
    if a == b :
    c
    a = 1
    b = 1
    c = print('1')
    run(a,b,c)
    blodside
    blodside
    May 15, 2018
    3
    >>> def run(a,b,c): if a == b : c a = 1 b = 1 c = print('1') run(a,b,c)
    File "<stdin>", line 1
    def run(a,b,c): if a == b : c a = 1 b = 1 c = print('1') run(a,b,c)
    ^
    SyntaxError: invalid syntax
    20032009
    20032009
    OP
    May 15, 2018
    4
    def run(a,b,c):
    if a == b :
    c
    #
    a = 1
    b = 1
    c = print('1')
    run(a,b,c)
    ballshapesdsd
    ballshapesdsd
    May 15, 2018❤️1
    5
    print 函数返回值是 None。。
    magicO
    magicO
    May 15, 2018
    6
    同楼上,
    语法错误
    magicO
    magicO
    May 15, 2018
    7
    shell 里报错,pycharm 不报错,应该是 ide 做了什么事情
    @magicO
    20032009
    20032009
    OP
    May 15, 2018
    8
    格式是这样(·是空格):

    def run(a,b,c):
    ····if a == b :
    ········c
    a = 1
    b = 1
    c = print('1')
    run(a,b,c)

    我的上面正常运行,而且打印出 1
    magicO
    magicO
    May 15, 2018
    9
    @magicO 我的锅,用错版本。shell 里也正常。没毛病啊,执行的就是 print("1")
    rabbbit
    rabbbit
    May 15, 2018
    10
    holajamc
    holajamc
    May 15, 2018
    11
    c 就是你定义的 print('1') 呀,函数的参数可以是另外一个函数)
    magicO
    magicO
    May 15, 2018
    12
    11L 正解,没毛病啊
    20032009
    20032009
    OP
    May 15, 2018
    13
    在执行 6 行时,c = print('1') 这个地方 print 执行了
    在 run()里面的 c 也应该被执行啊,那应该打印出两个 1
    20032009
    20032009
    OP
    May 15, 2018
    14
    @magicO 在执行 6 行时,c = print('1') 这个地方 print 执行了
    在 run()里面的 c 也应该被执行啊,那应该打印出两个 1
    rabbbit
    rabbbit
    May 15, 2018❤️1
    15
    你是不是对函数 /变量有什么误解
    调用一个函数的格式方式: 函数名([参数])
    print('1')返回的是 None,不是一个函数
    magicO
    magicO
    May 15, 2018
    16
    @20032009 没有啊,一旦赋值就不是那样了。 虽然我也不懂更深层的原理,但似乎第一天写 python 就感觉应该是这样。搬板凳听大佬解释
    freeminder
    freeminder
    May 15, 2018
    17
    看的我这个难受,你要是说"执行了 print", 那就只有 c = print('1') 这一句执行了 print。c 在这句之后就是一个函数调用的返回值。你在 run 里面写的那个 c,可能是想要完成执行一个函数的事情?但是就算 c 在 run 中是一个函数引用-比如 lambda 创建的,你也得给人家一个括号吧-c()。
    FrailLove
    FrailLove
    May 15, 2018
    18
    a = 1;
    b = 1;
    print('1') 任何函数不 return 默认返回 None 打印出 1 后 c= None
    执行 run(1 ,1 ,None) 什么都不做
    clino
    clino
    May 15, 2018 via Android
    19
    为什么不用 gist 贴代码?
    20032009
    20032009
    OP
    May 15, 2018
    20
    谢谢大家,问题解决。打算入编程坑,努力成为大神中......
    whoami9894
    whoami9894
    May 15, 2018 via Android
    21
    c 被赋值为 print 函数的返回值,为 none。
    如果 c 被赋值为函数的话后面得有()调用函数操作符
    MartinWu
    MartinWu
    May 15, 2018
    22
    c 是 print("1")的返回值,也就是 None。并不是这个语句本身。
    1daydayde
    1daydayde
    May 16, 2018 via iPhone
    23
    貌似有个标准错误输出流 了解一下?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2099 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 14:38 · PVG 22:38 · LAX 06:38 · JFK 09:38
    ♥ Do have faith in what you're doing.