欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

5.1Python函数(一)

程序员文章站 2022-04-30 10:15:29
目录 [TOC] 前言 分模块思想,分任务编程,是编程的一大重要思维,其中的实现,函数就担当了一个重要角色,今天我们就来学习Python的初级函数。 (一)函数的基本知识 (1)函数的优点 1. 体积小,减少内存大小,冗余度小。 2. 重用性强,可重复利用。 3. 维护方便。 4. 分解任务,简化逻 ......

目录

目录

前言

分模块思想,分任务编程,是编程的一大重要思维,其中的实现,函数就担当了一个重要角色,今天我们就来学习python的初级函数。

(一)函数的基本知识

(1)函数的优点

  1. 体积小,减少内存大小,冗余度小。
  2. 重用性强,可重复利用。
  3. 维护方便。
  4. 分解任务,简化逻辑,使代码更加模块化。

(2)函数的分类

  1. 内建函数
  2. 三方函数
  3. 自定义函数

(二)函数的基本使用

==1.函数的简单定义==

(1)语法说明

def 函数名():

​ 函数体

(2)源代码

# 定义一个简单函数
def test():
    print(2**2)
    print(2**3)
    print(2**4)

# 调用函数
test()

(3)输出效果

5.1Python函数(一)

==2.传值函数==

(1)语法说明

定义语法:

def 函数名(var1,var2,……)

​ 函数体

调用的时候,有两种方式:

  1. 顺序调用,要求实参与形参一一对应。
  2. 关键字调用,可以不按照顺序调用。

(2)源代码

# 定义一个带参数的函数
def test(var1, var2):
    print(var1+var2)
    print(var1**2+var2**2)
    print(var1**3+var2**3)


# 顺序调用带参数的函数
print("顺序调用")
test(1, 2)

# 关键字调用带参数函数
print("关键调用")
test(var2=2, var1=1)

(3)输出效果

5.1Python函数(一)

==3.不定长函数==

(1)语法说明

当形参为下面两种形式的时,为不定长参数

  1. *args --- 接收为元组类型, 只要使用星号就可以,名字没关系,习惯用args而已。
  2. **kwargs ---接收为字典类型。其传值时,必须是关键字传值。

注意:装包与拆包

  1. 装包:args与kwargs 就是表示整个元组与字典的整体,叫装包
  2. 拆包:*args 与 **kwargs 表示元组和字典的每个元素,叫拆包

(2)源代码

# 定义不定长的参数- *args 接收的是元组类型
def test1(*args):
    print(args, type(args))
    print(*args)


# 定义不定长的参数- *args 接收的是字典类型
def test2(**kwargs):
    print(kwargs, type(kwargs))
    # 输出keyword
    print(*kwargs)
    # 使用value,不能打印出来,不过可以使用
    # 而且形参与实参的keyword一样,其实就是关键字调用
    test3(**kwargs)


def test3(a, b, c):
    print(a)
    print(b)
    print(c)


# 调用参数,并接收的是 元组
test1(1, 2, 3)

# 调用参数,并接收的是 字典
test2(a="zsj", b=18, c="m")

(3)输出效果

5.1Python函数(一)

==4.缺省函数==

(1)语法说明

在定义函数的时候,给形参赋值,就是缺省函数,所赋的值便是默认值,

def test(name="me")

而在调用的时候,可以传入参数,也可以不传入参数。

传入参数时,以所传的参数优先。

不传入参数时,为默认值。

(2)源代码

# 定义缺省参数
def test(name="zyg"):
    print(name)


# 不传入参数, 默认值
test()
# 传入参数,优先值是传入的值
test("me")

(3)输出效果

5.1Python函数(一)

==5.函数的传值过程==

(1)语法说明

在python里函数的传值:都是==引用传递==

  1. 值传递(从实参复制一个副本)传递给形参
  2. 引用传递(直接把实参的id)传给形参

python的可变数据类型与不可变数据类型

  1. 可变数据类型:value值改变,id值不改变。(列表,字典)
  2. 不可变类型:value值改变,id值随之改变。(数值类型,字符串类型,布尔类型,元组类型)

python里函数是否可以改变实参内容问题

  1. 若实参是可变数据类型,则可以实参内容
  2. 若实参是不可变数据类型,则不可以实参内容

(2)可变类型的实例

# 定义一个函数,用id()来判断其是值传递,还是地址传递?

def test(num):
    print(id(num))
    num[1] = 5
    print(num)
    print(id(num))

list1 = [1, 2, 3]
print(id(list1))
test(list1)
print("最后的id", id(list1))
print("最后的值", list1)

5.1Python函数(一)

(3)不可变类型的实例

# 定义一个函数,用id()来判断其是值传递,还是地址传递?


def test(num):
    print(id(num))
    num = 5
    print(num)
    print(id(num))


number = 1
print(id(number))
test(number)
print("最后的id", id(number))
print("最后的值", number)

5.1Python函数(一)

==6.具有返回值函数==

(1)语法说明

当我们需要函数处理过后,返回一个结果值。可以使用

return 结果值

结果值:可以是元组类型,列表类型,拆包后的数据

(2)源代码

# 定义一个具有返回值的函数

def test(a, b):
    mysum = a + b
    mysub = a - b
    return (a, b)


n1 = 4
n2 = 2
sum_1, sub_1 = test(n1, n2)
print(sum_1)
print(sub_1)

(3)输出效果

5.1Python函数(一)

==7.函数的使用说明==

(1)说明:

函数的说明都有一个标准的写法,才能调用help查看

def 函数名():

​ """

​ 功能:xxxxx

​ var1:

​ var2:

​ ....

​ return xxxx

​ """

查看帮助可以用:help(函数名) ,注意是函数名,不是函数调用。

(2)源代码

# 定义一个具有返回值的函数
def test(a, b=1):
    """
        功能:该函数实现两个值的加减,并返回结果。
    :param a: 参与运算的一个值,数字类型,不可选,无默认值
    :param b: 参与运算的另一个值,数字类型,可选,默认值为1
    :return: 和与差的结果,元组类型。例如 (1, 2)
    """
    mysum = a + b
    mysub = a - b
    return (a, b)


# 查看帮助
help(test)

(3)输出效果

5.1Python函数(一)

作者:mark

日期:2019/02/02 周六