文章目录
- Python 函数(二)
- 一、函数的返回值
- 1.1 返回一个简单值
- 1.2可选实参
- 1.3返回一个字典
- 二、变量的作用域
- 2.1 三种变量作用域
- 2.2 使用变量作用域
一、函数的返回值
函数并不是总是直接显示输出信息的,有时也可以处理一些数据,并返回一个或一组数据。函数返回的值被称为返回值。在Python中,函数可以使用return语句将值返回到调用函数的代码行。
1.1 返回一个简单值在Python程序中,对函数返回值的最简单用法就是返回一个简单值,例如返回一个文本单词。示例如下:
def get_name(first_name, last_name):
"返回一个简单的值"
full_name = first_name + ' ' + last_name
return full_name
jiandan = get_name ('五一','劳动节')
print(jiandan)
输出结果:
在上述代码中,在定义函数get_name()时通过形参接收“first_name”和“last_name”,然后将两者合二为一,在它们之间再加上一个空格,并将结果存储在变量full_name。
有时需要让实参变成一个可选参数,这样函数的使用者只需要在必要时才提供额外的信息。在Python程序中,可以使用默认值来让实参变为可选的。例如下面的例子中,假设还需要扩展函数get_name()的功能,使其还具备处理中间名的功能,则可以使用如下所示代码,让实参变成一个可选参数:
def get_name(first_name, last_name,middle_name=' '): #middle_name是可选参数
"返回一个简单的值"
full_name = first_name + ' ' + middle_name + ' ' + last_name
return full_name
jiandan1 = get_name ('五一','劳动节','和') #调用时对可选参数赋值
jiandan2 = get_name ('五一','劳动节') #调用时不对可选参数赋值
print(jiandan1)
print(jiandan2)
为让get_name()在没有提供中间名时依然可行,可给实参middle_name指定一个默认值——空字符串,这样调用时,可根据情况对可选实参赋值或者不赋值,执行结果如下:
在Python程序中,函数可返回任意类型的值,包括列表和字典等复杂的数据结构类型。示例如下:
def person(first_name, last_name,age=''): #middle_name是可选参数
"返回一个字典"
person = {'first' : first_name, 'last': last_name} #将参数封装在字典person中
if age:
person['age'] = age #设置字典person中的age就是参数age的值
return person
musician = person ('五一','劳动节',age=20)
print(musician)
在Python程序中,函数person()接收两个参数(first_name和last_name),并将这些值封装到字典中。在存储first_name的值时,使用的键是first,而在存储last_name的值时,使用的键是last。最后返回整个字典。
在Python程序中,变量的作用域是指变量的作用范围,是指这个变量在什么范围内起作用。在Python程序中有三种作用域,分别是局部作用域、全局作用域和内置作用域。
2.1 三种变量作用域Python三种变量作用域的具体说明如下所示。
- 局部作用域:定义在函数内部的变量拥有一个局部作用域,表示只能在其被声明的函数内部访问。
- 全局作用域:定义在函数外的拥有全局作用域,表示可以在整个程序范围内访问。在调用一个函数时,所有在函数内声明的变量名称都将被加入到作用域中。
- 内置作用域:Python预先定义的。
例如在下面的实例代码中,演示了在函数内外都有同一个名称的变量而不互相影响的过程:
def myfun():
a = 0
a += 3
print('函数内a:',a)
a = 'external'
print('全局作用域a:',a)
myfun()
print('全局作用域a:',a)
输出结果:
另外,还有一种方法使函数中引用全局变量并进行操作,如果要在函数中使用函数外的变量,可以在变量名前使用关键字global。示例如下:
def myfun():
global a
a = 0
a += 3
print('函数内a:',a)
a = 'external'
print('全局作用域a:',a)
myfun()
print('全局作用域a:',a)
在上述代码中,通过代码“global a”使在函数内使用的变量a变为全局变量。在函数中改变了全局作用域变量a的值,即有字符串“external”变为整数3,执行结果:



