前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >5.1Python函数(一)

5.1Python函数(一)

作者头像
py3study
发布2020-01-17 13:01:11
5520
发布2020-01-17 13:01:11
举报
文章被收录于专栏:python3python3

目录

目录

前言

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

(一)函数的基本知识

(1)函数的优点

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

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

(二)函数的基本使用

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

(1)语法说明

def 函数名(): ​ 函数体

(2)源代码
代码语言:javascript
复制
# 定义一个简单函数
def test():
    print(2**2)
    print(2**3)
    print(2**4)

# 调用函数
test()
(3)输出效果
01.png
01.png

==2.传值函数==

(1)语法说明

定义语法: def 函数名(var1,var2,……) ​ 函数体 调用的时候,有两种方式:

  1. 顺序调用,要求实参与形参一一对应。
  2. 关键字调用,可以不按照顺序调用。
(2)源代码
代码语言:javascript
复制
# 定义一个带参数的函数
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)输出效果

02.png
02.png

==3.不定长函数==

(1)语法说明

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

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

注意:装包与拆包

  1. 装包:args与kwargs 就是表示整个元组与字典的整体,叫装包
  2. 拆包:*args 与 **kwargs 表示元组和字典的每个元素,叫拆包
(2)源代码
代码语言:javascript
复制
# 定义不定长的参数- *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)输出效果
03.png
03.png

==4.缺省函数==

(1)语法说明

在定义函数的时候,给形参赋值,就是缺省函数,所赋的值便是默认值, def test(name="me") 而在调用的时候,可以传入参数,也可以不传入参数。 传入参数时,以所传的参数优先。 不传入参数时,为默认值。

(2)源代码
代码语言:javascript
复制
# 定义缺省参数
def test(name="zyg"):
    print(name)


# 不传入参数, 默认值
test()
# 传入参数,优先值是传入的值
test("me")
(3)输出效果
04.png
04.png

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

(1)语法说明

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

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

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

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

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

  1. 若实参是可变数据类型,则可以实参内容
  2. 若实参是不可变数据类型,则不可以实参内容
(2)可变类型的实例
代码语言:javascript
复制
# 定义一个函数,用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)
05.png
05.png
(3)不可变类型的实例
代码语言:javascript
复制
# 定义一个函数,用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)
06.png
06.png

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

(1)语法说明

当我们需要函数处理过后,返回一个结果值。可以使用 return 结果值 结果值:可以是元组类型,列表类型,拆包后的数据

(2)源代码
代码语言:javascript
复制
# 定义一个具有返回值的函数

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)输出效果
07.png
07.png

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

(1)说明:

函数的说明都有一个标准的写法,才能调用help查看 def 函数名(): ​ """ ​ 功能:xxxxx ​ var1: ​ var2: ​ .... ​ return xxxx ​ """ 查看帮助可以用:help(函数名) ,注意是函数名,不是函数调用。

(2)源代码
代码语言:javascript
复制
# 定义一个具有返回值的函数
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)输出效果
08.png
08.png
作者:Mark
日期:2019/02/02 周六
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 前言
  • (一)函数的基本知识
    • (1)函数的优点
      • (2)函数的分类
      • (二)函数的基本使用
        • ==1.函数的简单定义==
          • (1)语法说明
          • (2)源代码
          • (3)输出效果
        • ==2.传值函数==
          • (1)语法说明
          • (2)源代码
        • (3)输出效果
          • ==3.不定长函数==
            • (1)语法说明
            • (2)源代码
            • (3)输出效果
          • ==4.缺省函数==
            • (1)语法说明
            • (2)源代码
            • (3)输出效果
          • ==5.函数的传值过程==
            • (1)语法说明
            • (2)可变类型的实例
            • (3)不可变类型的实例
          • ==6.具有返回值函数==
            • (1)语法说明
            • (2)源代码
            • (3)输出效果
          • ==7.函数的使用说明==
            • (1)说明:
            • (2)源代码
            • (3)输出效果
            • 作者:Mark
            • 日期:2019/02/02 周六
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档