Python定义函数的问题

能得到正确意向的代码:


def break_words(stuff):
    words=stuff.split(' ')
    print(words)

sentence="All good things come to those who wait."
break_words(sentence)

其输出是:

['All','good','things','come','to','those','who','wait']

然而,为什么下列代码没有输出或错误呢?
1️⃣,代码如下:

def break_words(stuff):
    words=stuff.split(' ')
    return words
    print(words)

sentence="All good things come to those who wait."
break_words(sentence)

其输出结果是:

No Output

2️⃣,代码如下:

def break_words(stuff):
    words=stuff.split(' ')
    return words

sentence="All good things come to those who wait."
break_words(sentence)
print(words)

其输出结果是:

Traceback (most recent call last):
    File "file0.py", line7, in <module>
      print(words)
NameError: name 'words' is not defined.

能得到您的帮助,是我莫大的荣幸,谢谢您,希望您能给予我帮助,谢谢!

-------------------------------------------------------------------------------------首先对于第一段代码的问题----------------------------------------------------------------
解释器运行此代码,第1行定义一个函数然后一开始不进入函数,直接跳2到 第6行发现定义一个变量,第7行把变量传到函数并执行函数,函数里面第2行切割字符串,此时worlds为['All','good','things','come','to','those','who','wait']然后第3行看到了return worlds解释器直接退出函数并把words返回。所以不会执行下面第4行的print(words),同时第7行执行函数时你没有找变量把函数返回的给存起来当然也就不会有值打印出来
可以改为一下代码

def break_words(stuff):
    words = stuff.split(' ')
    return words


sentence = "All good things come to those who wait."
print(break_words(sentence))  # 直接将返回值打印出来

-------------------------------------------------------------------------------------------------对于第二段代码----------------------------------------------------------------------
你可能意识到了return的问题但是你再这段代码有一个错误:你试图在全局里访问局部变量worlds,worlds只是函数里面的值即函数里的局部变量,当代码执行到return worlds时函数将worlds的值返回,然后就释放被函数占用的空间即worlds的空间也被释放掉了,况且即使没释放掉你在全局也访问不了局部变量,函数是单独开辟了一个空间来存相关的内容的,在局部你可以访问全局的变量。如果你非要这么做那么把worlds设置为全局变量就好了

def break_words(stuff):
    global words
    words = stuff.split(' ')
    return words


sentence = "All good things come to those who wait."
break_words(sentence)
print(words)

global words来声明是全局变量
但是最好不要这样,毕竟这样做了你相当于在局部里面定义全局变量

为什么要return words呢?你明白return 的用法吗?return就是退出函数 返回一个结果给调用函数。return后面的语句不会再执行的了。并且带有return语句的函数 定义函数的时候需要定义这个函数的类型 。

第二个
你的words 是定义在def break_words(stuff):这个函数方法里面的。 你在函数外面print(words)是打印不出来的 因为外面根本就没有定义words这个变量。Python是没有花括号来定义语句块的,采用的是缩进代码来定义语句块。
第二段代码你想要打印出结果你的把words定义在外面做全局变量。

words = []
def break_words(stuff):
    words=stuff.split(' ')
    return words
 
sentence="All good things come to those who wait."
break_words(sentence)
print(words)

一、

def break_words(stuff):
    words=stuff.split(' ')
    return words
    print(words)
 
sentence="All good things come to those who wait."
break_words(sentence)

你在打印之前就使用return 返回了,break_words就结束了,所以没有执行print语句。
解决办法:将print语句放在return 前面。或者打印break_words(sentence)的返回值,print(break_words(sentence))

去python技能树学习学习python的用法吧,那里挺基础的