1

函数,function,是一段代码的集合体。是Python为了代码最大程度的重用、减小代码冗余而提供的最基本的程序结构。
Python是一门面向对象的编程语言,对函数进行分类和封装,由对象实现对方法的调用。


一、函数调用

在此之前,我们已经接触过一部分Python的Built-in内建函数,例如abs()、max()、min()、int()等。
要实现调用一个函数,必须先知道函数的名称以及所需要的参数信息。对于内建函数,可以通过命令help(func_name)查看函数的帮助信息。
通过函数名实现调用,其中的函数名其实就是指向一个函数的对象引用,可以把函数名赋给任何一个变量,相当于给这个函数起了一个别名。
例如:

>>> a = abs    # a 是函数abs()的别名
>>> a(-1)
1

二、函数定义

  • 语法形式

定义关键字def。Python中将函数的声明和定义视为一体,函数由声明的标题行和定义体组成。

def 函数名(参数列表):
    函数体
    return sth.

【注意】:

  1. 函数的返回值用return关键字进行返回。若没有显示的使用return,则默认返回None。
  2. 函数的返回值是一个tuple类型的值。返回一个值时,括号省略;返回多个值时,为同一个tuple接收,把位置赋给相应的值。如果要返回一个list的值,则需要显示地使用“[]”进行修改。
  3. 前向引用。Python中不允许在函数未声明定义前,对其进行引用或者调用。

【例子一】自定义一个求绝对值的函数为例:

>>> def my_abs(x):  
... if x>= 0:         
...  return x       
... else:           
...  return –x    
>>> my_abs(-3)    
3
  • 定义一个空函数

如何定义一个空函数?使用pass关键字。
pass语句用来作为占位符。
什么时候使用呢?一般是比如说这段代码还没想好怎么写,可以使用pass让代码能运行起来。

def nop():
    pass

三、import 调用

函数定义完成后,把函数写入到***.py文件中保存。进入到该存放路径下,启动Python解释器。
使用语句“from py_file_name import 函数名”。

import 语句可以导入需要的Python模块,例如 import time;
也可以从模块中导入某部分,from time import sleep,ctime;
也可以导入某个自定义的模块或者模块中的函数等。

有时候工程模块存在层级目录结构,而只需要导入工程中下的某文件的某部分,则可以使用“.”进行导入,例如:
from 工程名层级.test_function import TestFunc

四、调用函数参数检查

调用函数时,需要对函数的参数列表进行检查。
如果参数个数不对,python解释器会自动检查出来,并抛出TypeError。但如果参数类型不对,python解释器就无法帮助检查。

  • 内置函数

内置函数参数类型不对时:

>>> abs('a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: bad operand type for abs(): 'str'
  • 自定义函数

若函数定义没有参数检查,则出错信息在下一句,与内置函数不一样,说明函数定义不够完善。

def my_abs(x):
    if x>= 0:
        return x
    else :
        return -x
>>> my_abs('a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Python_project\test1.py", line 2, in my_abs
if x>= 0: (if语句报的错)
TypeError: '>=' not supported between instances of 'str' and 'int'

改为如下:

def my_abs1(x):  
    if not isinstance(x,(int , float )):  # 参数类型检查
        raise TypeError('not the type')    # 抛出错误并提示“not the type”
    if x >=0:
        return x
    else:
        return -x
>>> my_abs1('a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Python_project\test1.py", line 11, in my_abs1
raise TypeError('not the type')
TypeError: not the type    # (错误和异常的处理)

❤ thanks for watching, keep on updating...


unpredictable_X
34 声望17 粉丝

热爱学习,热爱生活