函数-4.1函数

一、是什么

函数:一个功能独立的代码块

示例:

# 定义一个函数,能够完成打印信息的功能
def print_info():
    print('------------------------------------')
    print('         人生苦短,我用Python         ')
    print('------------------------------------')

  

二、作用

函数在编程中是非常重要的一个知识点,答的大体功能如下

  • 能够将部分代码划分为一个整体的功能
  • 只需定义函数1次就可以使用N次,可以大大减少了代码的冗余
  • 代码看上去更加整洁美观

示例1:未使用函数

如下通过print输出了2遍“佛祖镇楼”

# 输出第1遍 佛祖镇楼
print("                            _ooOoo_  ")
print("                           o8888888o  ")
print("                           88  .  88  ")
print("                           (| -_- |)  ")
print("                            O\\ = /O  ")
print("                        ____/`---'\\____  ")
print("                      .   ' \\| |// `.  ")
print("                       / \\||| : |||// \\  ")
print("                     / _||||| -:- |||||- \\  ")
print("                       | | \\\\\\ - /// | |  ")
print("                     | \\_| ''\\---/'' | |  ")
print("                      \\ .-\\__ `-` ___/-. /  ")
print("                   ___`. .' /--.--\\ `. . __  ")
print("                ."" '< `.___\\_<|>_/___.' >'"".  ")
print("               | | : `- \\`.;`\\ _ /`;.`/ - ` : | |  ")
print("                 \\ \\ `-. \\_ __\\ /__ _/ .-` / /  ")
print("         ======`-.____`-.___\\_____/___.-`____.-'======  ")
print("                            `=---='  ")
print("  ")
print("         .............................................  ")
print("                  佛祖镇楼                  BUG辟易  ")
print("          佛曰:  ")
print("                  写字楼里写字间,写字间里程序员;  ")
print("                  程序人员写程序,又拿程序换酒钱。  ")
print("                  酒醒只在网上坐,酒醉还来网下眠;  ")
print("                  酒醉酒醒日复日,网上网下年复年。  ")
print("                  但愿老死电脑间,不愿鞠躬老板前;  ")
print("                  奔驰宝马贵者趣,公交自行程序员。  ")
print("                  别人笑我忒疯癫,我笑自己命太贱;  ")
print("                  不见满街漂亮妹,哪个归得程序员?")

# 输出第2遍 佛祖镇楼
print("                            _ooOoo_  ")
print("                           o8888888o  ")
print("                           88  .  88  ")
print("                           (| -_- |)  ")
print("                            O\\ = /O  ")
print("                        ____/`---'\\____  ")
print("                      .   ' \\| |// `.  ")
print("                       / \\||| : |||// \\  ")
print("                     / _||||| -:- |||||- \\  ")
print("                       | | \\\\\\ - /// | |  ")
print("                     | \\_| ''\\---/'' | |  ")
print("                      \\ .-\\__ `-` ___/-. /  ")
print("                   ___`. .' /--.--\\ `. . __  ")
print("                ."" '< `.___\\_<|>_/___.' >'"".  ")
print("               | | : `- \\`.;`\\ _ /`;.`/ - ` : | |  ")
print("                 \\ \\ `-. \\_ __\\ /__ _/ .-` / /  ")
print("         ======`-.____`-.___\\_____/___.-`____.-'======  ")
print("                            `=---='  ")
print("  ")
print("         .............................................  ")
print("                  佛祖镇楼                  BUG辟易  ")
print("          佛曰:  ")
print("                  写字楼里写字间,写字间里程序员;  ")
print("                  程序人员写程序,又拿程序换酒钱。  ")
print("                  酒醒只在网上坐,酒醉还来网下眠;  ")
print("                  酒醉酒醒日复日,网上网下年复年。  ")
print("                  但愿老死电脑间,不愿鞠躬老板前;  ")
print("                  奔驰宝马贵者趣,公交自行程序员。  ")
print("                  别人笑我忒疯癫,我笑自己命太贱;  ")
print("                  不见满街漂亮妹,哪个归得程序员?")

  

示例2:使用函数

如下通过函数输出了2遍“佛祖镇楼”

# 定义一个函数,完成了独立输出“佛祖镇楼”的功能
def print_fozu():
    print("                            _ooOoo_  ")
    print("                           o8888888o  ")
    print("                           88  .  88  ")
    print("                           (| -_- |)  ")
    print("                            O\\ = /O  ")
    print("                        ____/`---'\\____  ")
    print("                      .   ' \\| |// `.  ")
    print("                       / \\||| : |||// \\  ")
    print("                     / _||||| -:- |||||- \\  ")
    print("                       | | \\\\\\ - /// | |  ")
    print("                     | \\_| ''\\---/'' | |  ")
    print("                      \\ .-\\__ `-` ___/-. /  ")
    print("                   ___`. .' /--.--\\ `. . __  ")
    print("                ."" '< `.___\\_<|>_/___.' >'"".  ")
    print("               | | : `- \\`.;`\\ _ /`;.`/ - ` : | |  ")
    print("                 \\ \\ `-. \\_ __\\ /__ _/ .-` / /  ")
    print("         ======`-.____`-.___\\_____/___.-`____.-'======  ")
    print("                            `=---='  ")
    print("  ")
    print("         .............................................  ")
    print("                  佛祖镇楼                  BUG辟易  ")
    print("          佛曰:  ")
    print("                  写字楼里写字间,写字间里程序员;  ")
    print("                  程序人员写程序,又拿程序换酒钱。  ")
    print("                  酒醒只在网上坐,酒醉还来网下眠;  ")
    print("                  酒醉酒醒日复日,网上网下年复年。  ")
    print("                  但愿老死电脑间,不愿鞠躬老板前;  ")
    print("                  奔驰宝马贵者趣,公交自行程序员。  ")
    print("                  别人笑我忒疯癫,我笑自己命太贱;  ")
    print("                  不见满街漂亮妹,哪个归得程序员?")

# 调用2次函数,每次输出1个佛祖镇楼
print_fozu()
print_fozu()

  

三、分类

函数根据是否是自己编写可以分为2类

  • 别人已经写好拿来直接用的函数,成为包括Python内置函数或者第三方包中的函数,更省事
  • 开发者自己编写的函数(通常称为自定义函数);根据需要自己编写,更灵活

在整个函数相关知识学习中,我们主要以研究“自定义函数”为主,当“自定义函数”都弄明白了弄懂了,那么用别人的写好的函数就信手拈来了

四、自定义函数

上面的知识我们知道,函数就是一个独立功能的代码块,想要用函数一定要掌握2块知识

  • 定义函数(即怎样制作函数)
  • 调用函数(即怎样使用函数)

下面我们就来研究函数的定义以及调用

1. 定义函数

定义函数格式如下:

def 函数名(形参):
    函数体

  

说明:

  • 函数名:一定有,按照命名规则起个名字,注意Python中建议使用“小写加下划线”的方式,例如print_info而不用PrintInfo
  • 函数体:一定有,就是整个函数真正要执行的代码,注意函数体前面缩进4个空格
  • 形参:可有可无,专门用过来存储调用时传递给函数的数据用的

2. 示例

下面定义一个函数,完成打印菜单的功能

def print_menu():
    print("-----------------------")
    print("        欢迎光临        ")
    print("数字1: 黄瓜炒肉")
    print("数字2: 冬瓜炒肉")
    print("数字3: 西瓜炒肉")
    print("数字4: 南瓜炒肉")
    print("数字5: 北瓜炒肉")
    print("-----------------------")

  

说明:

  • 函数名:print_menu
  • 函数体:第2~9行的代码
  • 形参:无

注意:

  • 定义了函数,这个函数不会被执行。就好比你发明了一个功能,这个功能不能自己用自己,必须等待别人使用才行,如果想让函数执行,就需要调用函数

3. 调用函数

通俗的讲:定义函数相当于打造了一个工具,调用函数相当于使用这个工具完成想要做的事情

调用函数的格式如下

函数名(实参)

  

说明:

  • 函数名:一定有,想要调用的函数的名字
  • 实参:可有可无,调用函数时给它传递的数据

注意:

  • 调用的函数的名字必须是先定义好的才能够调用,否则会失败

4. 示例

# 定义了一个函数,实现打印菜单功能
def print_menu():
    print("-----------------------")
    print("        欢迎光临        ")
    print("数字1: 黄瓜炒肉")
    print("数字2: 冬瓜炒肉")
    print("数字3: 西瓜炒肉")
    print("数字4: 南瓜炒肉")
    print("数字5: 北瓜炒肉")
    print("-----------------------")

# 调用函数
print_menu()

  

运行结果:

-----------------------
        欢迎光临
数字1: 黄瓜炒肉
数字2: 冬瓜炒肉
数字3: 西瓜炒肉
数字4: 南瓜炒肉
数字5: 北瓜炒肉
-----------------------

  

说明:

  • 函数定义一定要在函数的调用之前,其原因:Python解释器在解析.py文件时会从文件的开头开始解析,会先遇到函数的定义,然后当遇到函数的调用时就知道它在哪,所以函数要先定义才能调用

5. pass

如果一个函数,暂时不确定函数体的代码,可以用pass先占用位置,这样即没有语法错误,也能够让开发人员知道 这个函数功能没有实现,可以在后面进行编写

def 函数名():
    passs

  

示例:要定义4个函数,实现加减乘除的功能,但还不清楚具体功能怎样写,此时就可以用pass

# 定义了4个函数
def add_2_nums():
    pass


def min_2_nums():
    pass


def mult_2_nums():
    pass


def div_2_nums():
    pass


# 分别调用函数
add_2_nums()
min_2_nums()
mult_2_nums()
div_2_nums()

  

如果想清楚了具体的函数应该怎样实现,那么把pass删除,补上需要的代码即可

# 定义了4个函数
def add_2_nums():
    print("接下来要进行加法操作...")
    num1 = input("请输入第1个数:")
    num2 = input("请输入第2个数:")
    print("%s+%s=%d" % (num1, num2, int(num1) + int(num2)))


def min_2_nums():
    print("接下来要进行减法操作...")
    num1 = input("请输入第1个数:")
    num2 = input("请输入第2个数:")
    print("%s-%s=%d" % (num1, num2, int(num1) - int(num2)))


def mult_2_nums():
    print("接下来要进行乘法操作...")
    num1 = input("请输入第1个数:")
    num2 = input("请输入第2个数:")
    print("%s*%s=%d" % (num1, num2, int(num1) * int(num2)))


def div_2_nums():
    print("接下来要进行除法操作...")
    num1 = input("请输入第1个数:")
    num2 = input("请输入第2个数:")
    print("%s/%s=%d" % (num1, num2, int(num1) / int(num2)))


# 分别调用函数
add_2_nums()
min_2_nums()
mult_2_nums()
div_2_nums()

  

注意:

  • Python代码规范中提到,定了多个函数,那么函数与函数之间空2行

6.定义一次执行N次

一个函数可以进行多次调用,每次调用函数时,函数都会从头开始执行,当这个函数中的代码执行完毕后,意味着调用结束了

def test():
    num = 100
    num += 1
    print("在test函数中num=%d" % num)


test()
test()

  

运行结果:

在test函数中num=101
在test函数中num=101

  

说明:

  • 第7行调用了第一次test函数,当test函数结束后num为101
  • 第8行调用了第二次test函数,依然会从test函数的开头开始执行,所以结果依然是101

五、内置函数

内置函数:Python自带的函数,尽情的用,对我们的开发有极大的帮助

Python之所以越来越受到开发者的喜爱,原因之一就是:它丰富的内置函数,基本上需要的功能Python都有了

常用的内置函数如下示例

cmp

>>> cmp([1, 2], [3, 4])
-1
>>> cmp([1, 2], [1, 1])
1
>>> cmp([1, 2], [1, 2, 3])
-1
>>> cmp({"a":1}, {"b":1})
-1
>>> cmp({"a":2}, {"a":1})
1
>>> cmp({"a":2}, {"a":2, "b":1})
-1

  

注意:cmp在比较字典数据时,先比较键,再比较值。

len

>>> len("hello abcdef")
12
>>> len([1, 2, 3, 4])
4
>>> len((3,4))
2
>>> len({"a":1, "b":2})
2

  

注意:len在操作字典数据时,返回的是键值对个数。

max

>>> max("hello abcdef")
'o'
>>> max([1,4,522,3,4])
522
>>> max({"a":1, "b":2})
'b'
>>> max({"a":10, "b":2})
'b'
>>> max({"c":10, "b":2})
'c'

  

del

del有两种用法,一种是del加空格,另一种是del()

>>> a = 1
>>> a
1
>>> del a
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> a = ['a', 'b']
>>> del a[0]
>>> a
['b']
>>> del(a)
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

  

time

开发中,经常需要打印一些调试的信息,此时就又必须要输出时间,这就需要一些时间函数

import time  # 引入time模块

currentTime = time.time()
print("当前时间戳为:", currentTime)

  

运行结果:

当前时间戳为: 1598952056.126486

  

random

import random

a = random.uniform(1, 5)
print("a =", a)

b = random.randint(10, 50)
print("b =", b)

c = random.randrange(0, 51, 2)
print("c =", c)

  

运行结果(每次结果都可能不同)

a = 2.018423712655862
b = 14
c = 14

  

内置函数有很多,在后面的课程中我们根据实际情况加以使用

切记:用到哪些内置函数就查询哪些内置函数,不用背,但要会查询会应用即可

posted @ 2021-12-15 09:50  dong4716138  阅读(47)  评论(0编辑  收藏  举报