python基础- 函数介绍及定义

函数介绍

引子

如今我们已经编写一些简单的程序, 但是随着功能的增多, 代码量随之增大. 此时如果仍然不区分把实现不同的功能的代码放到一起, 将会使得程序结构不清晰, 代码的可读性差, 和代码的冗余.

什么是函数

函数就是具备某一功能的"工具"

为什么用函数

  • 为了解决代码的冗余
  • 为了使代码有更强的可读性.

函数应该怎么用

函数和变量一样, 应该先定义, 后使用.

函数的定义方式.

函数的定义是用 def 关键字进行定义, 格式如下

def index():
    pass
    
    
    
  • def 表示定义函数的关键字
  • index 表示这个函数的名字.
  • ()形参位置
  • : 冒号是必须要的.
  • 函数下代码有四个空格缩进.

函数的调用方式.

函数定义后, 就可以使用, 函数的定义是,在内存中开辟内存空间, 将函数体代码放进内存空间中, 并和函数名建立映射关系.

# 打印函数

def index():
    pass
    
print(index)

#  输出结果
<function index at 0x000002C1C4141EA0>

输出的结果是 函数所在的内存空间地址.


#  函数的调用

def index():
    print("我运行了")


index()

# 用函数名+() 就是函数的调用方式.

# 输出结果
我运行了

函数的分类

  • 无参函数
    在函数定义的时候, 没有形参, 即在函数运行的时候, 也没有参数的传入,
    称之为无参函数
def index():
    print("我运行了")
  • 有参函数
def index(a,b):
    print(a,b)
    
  • 空函数
    为什么要用空函数? 因为在写项目的时候, 会去实现很多功能, 定义空函数就是为了先进行项目的功能分类, 让项目的架构更清晰. 然后再逐一实现对象的功能函数代码
def index():
    pass

形参和实参

形参

在函数的定义阶段, 函数名后括号内, 填入的占位用的 变量名 称之为形参.

def index(a,b):
    pass
# a,b 就是形参

实参

在函数的调用阶段, 传入的值即为实参.

def index(a,b):
    print(a,b)

index(1,2)

#  1,2 就是实参. 

函数的传参方式.

位置传参

位置参数就是, 依照前后的顺序,依次传参, 就是位置参数.

def index(a,b):
    print(a,b)

index(1,2)

这种传参方式就是位置参数.

关键字参数.

以关键字和值这种 对应的方式传参, 即为关键字参数.


def index(a,b):
    print(a,b)

index(a=1, b=2)

a= 1,b=2 就是关键字参数.

默认参数

# 当一个参数的值重复传入的时候, 就可以设置默认参数, 即在 形参处

def index(name, age, gender="male"):
    print(f"我的名字是{name}, 年龄{age},性别{gender}")

index("张", 18 )

#  输出结果
我的名字是张, 年龄18,性别male

使用默认参数时, 如果不传参,则自动传入设置的默认值. 传参的话, 覆盖掉默认值.

def index(name, age, gender="male"):
    print(f"我的名字是{name}, 年龄{age},性别{gender}")

index("张", 18 )

index("王",19,"female")

#  输出时间
我的名字是张, 年龄18,性别male
我的名字是王, 年龄19,性别female

ps: 注意,当位置参数和关键字参数同时使用的时候, 位置参数要在关键字参数的前面.

可变长参数 *args **kwargs

当用户不知道要传入几个参数的时候, 就出现会多传参的情况, 这时 我们就需要找个万能的形参来接收用户多传来的值.

# *args
用来接收多传进来的位置参数,

def index(a,b,*args):
    print(a,b)
    print(*args)

index(1,2,3,4,5)

# 输出结果
1,2
3,4,5

# 例2


def index(a,b,*args):
    print(a,b)
    print(args)

index(1,2,3,4,5)

# 输出结果
1,2
(3,4,5)
# 原理是, 将多传入的未知参数打包到元组中, 并赋值给args ,  
# 所以args 只是python中官方认证的方法,  可以用任意的名称

#  * 打散的功能,  可以看出上面两个立体中 args和*args的区别
# * 如果后面跟的是字典, 则返回的值是字典的所有key

# **kwargs

#  用来接收多传进来的关键字参数,  是以字典的方式接收, 即 关键字是字典的key  值为 value

def index(a, b, *args, **kwargs):
    print(a, b)
    print(kwargs)


index(1, 2, 3, 4, 5, d=13, c="wo")

# 输出结果
    
1 2
{'d': 13, 'c': 'wo'}


posted @ 2019-11-11 07:51  七里塘  阅读(179)  评论(0编辑  收藏  举报