函数
定义:函数是组织好的,可以重复使用的,可以实现单一功能的代码。
比如,前面学过的print()函数、int()函数等:
括号里放的东西,也就是我们需要输入给函数的数据,它在函数中被称作【参数】。【参数】指向的是函数要接收、处理怎样的数据(你也可以把它理解成自变量)。
自定义和调用函数
格式:def (函数名): 例如: def math(x):
函数体 y=3x+5
return语句 return y

调用函数: 就是输入函数名和参数所对应的值,这个过程在函数里叫作参数的传递(pass)。
函数的参数
函数中常见的参数有:位置参数、默认参数和不定长参数。
没有return语句的函数,Python也会在末尾隐性地加上return None,即返回None值。
1、位置参数:举例解释

这里的'话梅花生'和'牛肉拉面'是对应参数的位置顺序传递的,所以appetizer和course被叫作【位置参数】,当有多个参数的时候,我们就必须按照顺序和数量传递,这也是最常见的参数类型。
2、默认参数:

默认参数,是直接在定义函数的时候里给参数赋值。
需要注意的是:默认参数必须放在位置参数之后。
如果一个函数的某个参数值总是固定的,那么设置默认参数就免去了每次都要传递的麻烦。
默认参数并不意味着不能改变,默认参数也可以给与新的赋值;
3、不定长参数:
即传递给参数的数量是可选的、不确定的。
格式比较特殊,是一个星号*加上参数名,它的返回值也比较特殊,如图:

这里order 的类型是元组,元组中的元素是不可更改的;
不定长参数可以接受任意数量的值。
返回多个值:
要返回多个值,只需将返回的值写在return语句后面,用英文逗号隔开即可;

这里用到的是random模块中的.choice()随机选择函数;
多个函数间的配合:
一个程序往往是通过多个函数的配合来实现的;
当多个函数同时运行时,就涉及函数中一个非常重要的概念 —— 变量作用域;
举例:

变量作用域:程序中的变量并不是在哪个位置都可以被使用的,使用权限决定于这个变量是在哪里赋值的。关于这个概念,目前我们只需要掌握下面两点即可:
第一点:一个在函数内部赋值的变量仅能在该函数内部使用(局部作用域),它们被称作【局部变量】,如cost()函数里的variable_cost,他只能用于cost()内部,不能再第10行,sum_cost()函数中使用。
第二点:在所有函数之外赋值的变量,可以在程序的任何位置使用(全局作用域),它们被称作【全局变量】,如第一行的rent。
那要怎么解决“局部变量”和”全局变量“之间的矛盾呢?有几种方法可供参考,第一种方法最取巧:把局部变量都放在函数外,变成全局变量;
那有没有一个能在函数内修改的方法呢?这时候global语句就能派上用场了,它可以将局部变量声明为全局变量,如下图:

global语句一般写在函数体的第一行,它会告诉Python,“我希望variable_cost是个全局变量,所以请不要用这个名字创建一个局部变量”。所以上面图中的sum_cost()函数内部现在可以直接使用声明后的全局变量variable_cost。
网友评论