把一段多次重复出现的函数命名成一个有意义的名字,然后通过名字来执行这段代码。有名字的代码段就是一个函数。使用关键字def定义一个函数,例如:
代码中可以给函数增加说明:
参数可以有默认值,例如,定义一个名为greet_person的函数:
输出结果如下:
Hello Sara! How are you doing today? Hello Sara! How are you doing today? Hello Sara! How are you doing today? Hello Sara! How are you doing today? Hello Sara! How are you doing today? Hello Kevin! How are you doing today? Hello Kevin! How are you doing today?
如果需要声明可变数量的参数,则在这个参数前面加*,示例代码如下:
函数定义中的特殊语法**kwargs用于传递一个键/值对的可变长度的参数列表,示例代码如下:
输出结果如下:
first == test mid == for last == abc
每个Python文件/脚本(模块)都有一些未明确声明的内部属性。其中一个属性是__builtins__属性,它本身包含许多有用的属性和功能,我们可以在这里找到__name__属性,根据模块的使用方式,它可以具有不同的值。
当把Python模块作为程序直接运行时(无论是从命令行还是双击它),__name__中包含的值都是文字字符串"__main__"。
相比之下,当一个模块被导入到另一个模块中(或者在Python REPL被导入)时,__name__属性中的值是模块本身的名称(即隐式声明它的Python文件/脚本的名称)。
Python脚本执行的方式是自上而下的,指令在解释器读取它们时执行。这可能是一个问题,如果你想要做的就是导入模块并利用它的一个或两个方法。你会怎么做?你有条件地执行这些指令:将它们包装在一个if语句块中。
这是'main函数'的目的,它是一个条件块,因此除非满足给定的条件,否则不会处理main函数。
main函数的示例代码如下:
在Python中,函数是一级对象。这意味着函数就像其他任何对象一样,可以从函数返回函数。
在下面的程序中,我们定义了两个函数:function1()和function2()。function1()返回function2()作为返回值。