Python 语言基础五_描述函数定义、函数参数、函数的调用、lambda表达式、变量的作用域

函数,即是将一段代码封装起来,用来实现特定的功能。

一、函数定义

除了Python内建的函数,用户也可以使用def语句自定义函数。定义格式如下:

def <函数名> (<参数1, 参数2, ……>) :
    <函数体>
     ...

函数在使用前必须定义,函数名为合法的标识符,函数名后跟的圆括号是一定要的,而其内的参数称为形参(形式参数),也可以为空。函数体定义时需要利用缩进格式,所谓缩进是指代码行开始部分的空格。代码行开头的前导空白用于确定语句的分组,同样的缩进级别的语句属于同一个语句块。函数名的命名规则和变量的命名规则相同,即不能以数字开头,不能包含标点符号,不能和现有的Python关键字或者内部函数同名。命名多个单词的描述性的函数名称时,建议用下划线分割单词。

举例:

>>> def my_print():
...   print("hello zcj!")
...
>>>

二、函数的调用

函数定义完成后,使用函数名来调用函数,从而使用其功能。也可以在一个函数中调用另一个函数,被调用的函数叫“被调函数”,而调用方的函数就是"主调函数"

>>> def my_abs(x):  #求x的绝对值
...   if x >= 0:
...     return x
...   else:
...     return -x
...     
>>> def my_show():
...   a = my_abs(-5)
...   print(a)
...
>>> my_show()   
5
>>>

三、函数参数

函数可以接收输入的值,并利用这些值来完成功能实现。多个参数传递需要用逗号隔开,而函数调用时,主调程序向被调函数传递的参数叫实参(实际参数)。之所以出现实参、形参的说法,对编程来说没有实际意义,只是学习交流时指代明确。

>>> def get_max(x, y):
...   if x > y:
...     return x
...   else:
...     return y
...     
>>> a = 5
>>> b = 8
>>> c = get_max(a, b)  
>>> print(c)
8

在python中采用值传递的机制,形参的变化不会改变实参。

四、默认值参数

在定义函数的过程中如果指定了参数,那么调用函数时一定要给所有的参数传递值,否则会出错。 但是在一些情况下,可能又希望它的参数是可选的,即不要求调用函数时一定要给所有参数都传递值,那么可以通过默认值参数来完成。

>>> def show_message(message, times=2):
...   print(message*times)
...
>>> show_message("zcj", 3)
zcjzcjzcj
>>> show_message("learn")
learnlearn

五、关键参数

在调用函数时,还可以使用另外一种方式给函数传递值,即使用参数的名称(关键字)而不是位置,这被称为关键参数。使用关键参数的优势:不需要担心参数顺序,使函数调用更简单。

>>> def show_abc(a, b, c):
...   print(a, b, c)
...
>>> show_abc(1,2,3)
1 2 3
>>> show_abc(c=6, b=5, a=4)  #使用关键参数
4 5 6

六、return语句

return用来退出一个函数,也可以使用return从函数返回一个值,并且这个值可以赋给其他变量。如果return语句没有返回值,等价于return None,表示无返回值。如果函数中没有明确指定return语句,都在结尾暗含有return None语句。

>>> def view_max(x, y):
...   if x > y:
...     return x
...   elif x < y:
...     return y
...   else:
...     return
...

>>> view_max(5, 3)
5
>>> view_max(5, 5)
>>> a = view_max(5, 5)
>>> print(a)
None

七、lambda表达式

lambda 表达式可以返回一个函数,使用lambda表达式可明显减少函数数量。定义格式如下:

lambda <参数1, 参数2, ……> : <表达式>

举例:

>>> def my_add(n):
...   return lambda x : x+n
...
>>> f = my_add(50)
>>> print(f(5))
55
>>> sum = lambda x,y : x+y
>>> print(sum(30, 3))
33

八、全局变量与局部变量

在之前的博文中表述过变量,在有关函数的编程中,有局部变量和全局变量之分。

1.全局变量

定义在整个文件中但在函数外部,作用域为全局范围的变量称为全局变量。如果需要在函数内使用全局变量,同时又为全局变量赋值,则使用global关键字来实现。好的编程习惯是只在绝对必要时才使用全局变量,尽量保持程序模块化。

>>> gb = 0       #声明全局变量gb
>>> def show_gb():
...   global gb  #使用变量gb
...   gb = 66
...   print(gb) 
...
>>> show_gb()
66
>>> print(gb)
66

2.局部变量

在函数定义内声明的变量,只在当前函数内有效,即使函数外有同名变量存在,它们也没有任何关系,这样的变量称为局部变量。

>>> x = 20      #全局变量
>>> def show_x():
...   x = 60    #局部变量
...   print(x)
...
>>> show_x()
60
>>> print(x)
20

关键字nonlocal的作用与关键字global类似,使用nonlocal关键字可以在一个嵌套的函数中修改嵌套作用域中的变量。

>>> def first_fun():
...   num = 5
...   def second_fun():
...     nonlocal num
...     num *= 3
...     print(num)
...   return second_fun()
...
>>> first_fun()
15

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值