加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

5.1Python函数(一)

发布时间:2020-12-17 00:15:11 所属栏目:Python 来源:网络整理
导读:div class="toc" p class="toc-title"目录 div class="toc-list" 分模块思想,分任务编程,是编程的一大重要思维,其中的实现,函数就担当了一个重要角色,今天我们就来学习Python的初级函数。 体积小,减少内存大小,冗余度

<div class="toc">
<p class="toc-title">目录


<div class="toc-list">

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

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

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

def 函数名():

? 函数体

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

调用函数

test()


<h4 id="输出效果">(3)输出效果

01.png

定义语法:

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

? 函数体

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

  1. 顺序调用,要求实参与形参一一对应。
  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)


<h3 id="输出效果-1">(3)输出效果

02.png

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

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

注意:装包与拆包

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

# 定义不定长的参数- *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")


<h4 id="输出效果-2">(3)输出效果

03.png

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

def test(name="me")

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

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

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

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

不传入参数,默认值

test()

传入参数,优先值是传入的值

test("me")


<h4 id="输出效果-3">(3)输出效果

04.png

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

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

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

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

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

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

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

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

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

05.png

# 定义一个函数,用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

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

return 结果值

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

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

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)


<h4 id="输出效果-4">(3)输出效果

07.png

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

def 函数名():

? """

? 功能:xxxxx

? var1:

? var2:

? ....

? return xxxx

? """

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

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

查看帮助

help(test)


<h4 id="输出效果-5">(3)输出效果

08.png

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读