《老鸟python 系列》视频上线了,全网稀缺资源,涵盖python人工智能教程,爬虫教程,web教程,数据分析教程以及界面库和服务器教程,以及各个方向的主流实用项目,手把手带你从零开始进阶高手之路!点击 链接 查看详情




函数定义和调用

阅读:227569388    分享到

Python 的函数在形式上分为三种,一种是 Python 内置的函数, 一种是第三方库的函数,一种是我们自己定义的函数,但无论哪种形式, 函数定义方式都是一样的。

函数定义后,我们就可以通过函数名和参数来调用函数,本节我们就来学习如何定义函数和使用函数。

函数定义

Python 内置了很多函数,我们可以直接调用,要调用一个函数, 需要知道函数的名称和参数的个数,比如求绝对值的函数,函数名称为 abs,参数个数只有一个。

 print(abs(-8))

想了解 python 内置函数的定义,我们可以直接从 python 的官方网站查看文档(https://docs.python.org/2/library/functions.html), 我们也可以在交互式命令行通过 help(函数名称) 查看该函数的帮助信息。

C:\Users\fengfeng000123>python
>>> help(abs)
Help on built-in function abs in module __buil

abs(...)
abs(number) -> number

Return the absolute value of the argument.

Python 解释器内不可能内置过多的函数,但也有些比较实用的函数会经常用到,有些好心的程序员写好的一些库, 经过官方评审后,加入了 Python 安装包内,在我们安装 Python 的时候就会把它们放在一些目录下, 调用的时候只需要 import 库名 就可以了,当然也有一些程序员写的库没有加入到 Python 安装包内,我们只需要把它们下载下来即可使用。

import time

time.sleep(3)
print("三秒后我才出来")

在项目开发中我们需要自己定义函数来实现项目的需求,在 Python 中,我们定义一个函数要使用 def 语句,依次写出函数名,括号,括号中的参数和冒号, 然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。

def myabs(data):
    return data if data >= 0 else -data  # 暂不考虑用户如果输入非数字类型数据

print(myabs(-9))

在 python 中,我们定义一个函数,但是还没想好怎么写函数的代码,可以用 pass 语句,这种函数就是空函数,pass 语句什么都不做,实际上 pass 可以用来作为占位符。

def myfunc():
    pass

函数参数

调用函数时,如果参数个数不对,Python 解释器会自动检查出来,并抛出 TypeError。

def beauty(age):
    if age < 20:
        return "beauty"
    return "augly"

beauty()  # 参数个数不对

由于 Python 是弱类型语言,如果调用者传入的参数类型不符合我们要求,Python 解释器就无法帮我们检查, 我们可以用 Python 内置的数据类型检查函数 isinstance 来从逻辑上检查参数类型是否匹配,isinstance 函数可以判断某个对象是属于某种类型或者某些类型中的一种(用 tuple),是的话返回 True,否则返回 False。

def myabs(data):
    if isinstance(data, (int, float)):
        return data if data >= 0 else -data
    return "参数类型不对"

print(myabs("hello"))

我们虽然可以用 isinstance 函数来检查数据类型,但是我们想在用户给的参数不符合我们的要求时, 最好抛出异常终止程序执行,而不是给用户返回一个提醒。

def mysquare(data):
    try:
        rst = data * data
    except:
        raise TypeError("类型错误,请输入数字类型")
    return rst

print(mysquare("hello"))

函数返回值

其它语言一般只能返回一个值,而 Python 和大多数其它语言不同,可以返回多个返回值,当 Python 返回多个值的时候,python 解释器把这些值放进一个 tuple 里面,所以 Python 的函数返回多值其实就是返回一个 tuple,该 tuple 本质上也是一个值。

def myfunc():
    return "ruhua", "xingxing", "zhaoritian"

rst = myfunc()
print(rst)        # 可以看到是一个 tuple
print(type(rst))  # tuple 类型

当 python 返回多个值的时候,接收变量个数只能为一个或返回值的个数, 因为一个变量接收的是整个 tuple,而多个变量接收的是 tuple 里面成员的个数。

def myfunc():
    return "ruhua", "xingxing", "zhaoritian"

rst = myfunc()              # ok
one, two, three = myfunc()  # ok
one, two = myfunc()         # 错误

函数体内部的语句在执行时,一旦执行到 return 时,函数就执行完毕,并将结果返回, 如果没有 return 语句,函数执行完毕后也会返回结果,只是结果为 None。

def myfunc():
    name = "myfunc"

print(myfunc())

本节重要知识点

会写自定义函数。

了解函数的参数。

弄明白 python 返回值的本质。

作业

著名公司(某多多)对于以下代码,运行一下看下结果,想想为什么?

def myabs(data):
    try:
        return data if data >= 0 else -data
    except:
        raise TypeError("类型错误,请输入数字类型")

print(myabs(True))            # ok
print(myabs(None))            # 异常
print(myabs("hello"))         # 异常
print(myabs([-1, -2]))        # 异常
print(myabs((-2, -3)))        # 异常
print(myabs({"a": "hello"}))  # 异常
print(myabs(set([-1, -2])))   # 异常

如果以上内容对您有帮助,请老板用微信扫一下赞赏码,赞赏后加微信号 birdpython 领取免费视频。


登录后评论

user_image
司徒正美
2020年8月27日 04:06 回复

python 中只有数字类型或bool类型才能和数字类型比较


user_image
vczh
2019年10月27日 08:48 回复

python 语法的特性啊

python 2 任何类型都可以和数字类型进行比较

python 3 的话,只有数字类型或bool类型才能和数字类型比较


user_image
邪叫教主
2019年10月15日 06:16 回复

老鸟老师您好,久闻大名


user_image
Laruence
2018年12月5日 18:07 回复

打卡第 N 天哈哈


user_image
貔卡貅
2018年11月14日 11:16 回复

忘得差不多了,都不知道怎么解了,这个数学啊,会的是真nb不会的是真不会啊~~~

语文作文不会可以瞎写啊,英语不会你可以写阅读理解啊,数学不会只能tmd写个解啊~~