您的位置:首页 > 编程语言 > Python开发

第6章 Python函数

2019-01-10 18:10 25 查看

第6章 Python函数

一、什么是函数

函数是组织好的,可重复利用的,用来实现单一的或相关联功能的代码段,它能够提高应用的模块化和代码的重复利用率。

二、函数的定义和使用

在Python中定义函数的格式
def 函数名(参数列表):
“函数_文档字符串”
函数体
return 表达式
函数定义规则

  1. 函数代码块以def开头,后面紧跟的是函数名和圆括号()。
  2. 函数名的命名规则跟变量的命名规则是一样的,即只能是字母、数字和下划线的任何组合,但是不能以数字开头,并且不能跟关键字重名。
  3. 函数的参数必须放在圆括号总。
  4. 函数的第1行语句可以选择性地使用文档字符串来存放函数说明。
  5. 函数内容以冒号起始,并且缩进
  6. return表达式结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None。
def print_into():
print('--------------------------------')
print('人生苦短,我用Python')
print('--------------------------------')
print_into()#调用函数
#不调用是不会打印出结果的

三、函数的参数

  1. 函数参数的船体
    可以传递从其他地方接受的值。
def add(a,b):
c = a + b
print(c)
add(11,22)
#结果:
#33

  1. 默认参数
    定义参数,可以给函数的参数的设置默认值,这个参数就被称为默认参数。当调用参数的时候,由于默认参数在定义时已经被赋值,所以可以直接忽略,而其他参数时必须传入值的。如果默认值没有传入值,则直接使用默认值;如果默认参数入了值,则使用传入的新值替代。
def print_info(name,age=30):
print("Name:",name)
print("Age:",age)
print_info(name="miki")
print_info(name='miki',age=9)
  1. 不定长参数
    def 函数名([formal_args,] args, kwargs):
    “函数_文档字符串”
    函数体
    return 表达式
    在上述格式中,函数共有3个参数。其中formal_args为形参,*args和
    kwargs为不定长参数。当调用函数的时候,函数传入的参数个数会优先匹配formal_args参数的个数。如果传入的参数个数和formal_args参数个数相同,不定长参数会返回空的元组或字典;如果传入参数的个数比formal_args参数的个数多,不定长参数会返回:
    (1)如果传入的参数没有指定名称,那么args会以元组的形式存放这些多余的余数;
    (2)如果传入的参数指定了名称,如m=1,那么**kwargs会以字典的形式存放这些被命名的参数,
def test(a,b,*args):
print(a)
print(b)
print(args)
def test2(a,b,*args,**kwargs):
print(a)
print(b)
print(args)
print(kwargs)
test(11,22)
print("="*10)
test(11,22,33,44,55,66,77,88,99)
test2(11,22,33,44,55,66,77,m=88,n=99)
#11
#22
#()
#==========
#11
#22
#(33, 44, 55, 66, 77, 88, 99)
#11
#22
#(33, 44, 55, 66, 77)
#{'m': 88, 'n': 99}

四、函数的返回值

所谓“返回值”,就是程序完成一件事情后,最后给调用者的结果。比如,定义一个函数来获取室内的温度,一旦调用这个函数,函数就会把拿到的温度值返回给调用者,这个温度值就是函数的返回值。在Python中,函数的返回值时使用return语句来完成的。

def add(a,b):
return a+b
print(add(1,2))
#结果
#3

五、函数的四种类型

根据有没有参数和返回值,函数大概可以分为四种类型:
(1)函数无参数,无返回值
(2)函数无参数,有返回值
(3)函数有参数,无返回值
(4)函数有参数,有返回值

  1. 无参数、无返回值的函数
def print_menu():
print("-----------------------")
print('   **刷刷锅 点菜系统')
print('1.   羊肉刷刷锅')
print('2.   羊肉刷刷锅')
print('3.   羊肉刷刷锅')
print('-----------------------')
print_menu()
#结果
#-----------------------
#   **刷刷锅 点菜系统
#1.   羊肉刷刷锅
#2.   羊肉刷刷锅
#3.   羊肉刷刷锅
#-----------------------
  1. 无参数、有返回值的函数
    此类函数不能接收参数,但是可以返回某一个数据,一般情况下采集数据时会用此类函数。
def get_temperature():
return 24
temperature = get_temperature()
print("当前温度",temperature)
#当前温度 24
  1. 有参数、无返回值的函数
    在实际开发中,有参数、无返回值的函数用的极少,这是因为函数作为功能模块,既然传入了参数,绝大多数情况时希望使用返回值的。
def test(number_one,number_two):
result=number_one+number_two
print('计算结果%d'%result)
test(1,2)
#结果
#计算结果3
  1. 有参数、有返回值的函数
    此类函数不仅能接收返回值,还可以返回某一个数据。
def calculate(number):
result = 0
i = 1
while i<=number:
result = result +i
i +=1
return result
result = calculate(100)
print('1~100累计和',result)
#结果
#1~100累计和 5050

六、函数的嵌套使用

在一个函数中调用了另外一个函数,这就是所谓的函数的嵌套调用。

def func_one():
print('----func_one start----')
print('这里是func_one函数执行的代码')
print('----func_one end----')
def func_two():
print('----func_two start----')
func_one()
print('----func_two end----')
func_two()
#结果
#----func_two start----
#----func_one start----
#这里是func_one函数执行的代码
#----func_one end----
#----func_two end----

七、变量的作用域

  1. LEGB原则
    Python中,程序的变量并不是在那个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。
a = 10
def test():
a = 20
print('a的值是%d'%a)
test()

变量的作用域决定了在那一部分可以访问那个特定的变量名称。Python变量的作用域一共有
4种,分别是:
L(Local):函数内的区域,包括局部变量和参数
E(EnClosing):外面嵌套函数区域,常见的是闭包函数的外层函数,
G(Global):全局作用域
B(Built-in):内建作用域
Python中变量是采用L->E->G->B的规则查找,即Python检索变量的时候,会优先在局部作用域查找,如果没有找到,便会去局部外的区域找(例如闭包),再找不到就会去全局作用域中找,最后再去内建作用域找。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: