【python 基础篇 十】python的函数-------函数的基本使用

1.函数的概念

  1. 概念

    ​ 写了一段代码实现了某个小功能;然后把这些代码集中到一块,起一个名字,下一次就可以根据这个名字再次使用这个代码,这就是函数。

  2. 作用

    ​ 方便代码的重复使用。

    ​ 分解任务,简化程序逻辑

    ​ 使代码更加模块化

  3. 函数分类

    ​ 内建函数

    ​ 三方函数

    ​ 自定义函数

2.函数的基本使用

  1. 简单定义

    ​ def 函数名():

    ​ 函数体

  2. 函数调用

    ​ 函数名()

#函数的定义
def test():
    print(2**2)
    print(2**3)
    print(2**4)
    
#函数的调用  
test()#输出4 8 16

3.函数的参数

3.1 单个参数
  1. 场景

    ​ 需要动态的调整函数体中某一个处理信息时,则可以以参数的形式接收到相关数据。

  2. 定义

    ​ def 函数名(参数名称):

    ​ 函数体:函数体中,可以直接以变量的方式使用该参数

  3. 函数的调用

    ​ 函数名(参数值)

  4. 形参和实参的概念

    ​ 上述函数定义中,参数名称 即为形参 ,在调用函数的时候,传递的真实数据,即为实参。

#单个参数的函数的定义
def test(num):
    print(num**2)
#函数的调用
test(3)#输出 9
test(4)#输出 16
3.2 多个参数
  1. 场景

    ​ 需要动态的调整函数体中多个处理信息使,则可以用逗号做分割,接收多个参数。

  2. 定义

    ​ def 函数名(参数名称1,参数名称2,…):

    ​ 函数体:函数体中,可以直接以变量的方式使用该参数

  3. 函数的调用

    ​ 函数名(参数1,参数2,…)

    ​ 函数名(参数名称1=参数1,参数名称2=参数2,…) 可以指明形参名称,称为 “关键字参数” 。不需要严格按照顺序

#多个参数的函数的定义
def test(num1,num2):
    print(num1+num2)
#函数的调用
test(3,4)#输出 7
test(8,16)#输出 24
test(num2 = 18,num1 = 54)#输出 72
3.3 不定长参数
  1. 场景

    ​ 如果函数体中,需要处理的数据,不确定长度,则可以使用不定长参数的方式接收数据。

  2. 定义

    1. 方式一

      ​ def 函数名(*args):

      ​ *args:接收的参数组成一个元组

      函数体:函数体中,可以直接以元组变量的方式使用该参数

      函数使用:函数名(参数1,参数2,参数3,…)

    2. 方式二

      def 函数名(**args):

      ​ ****args:**接收的参数组成一个字典

      ​ **函数体:**函数体中,可以直接以元组变量的方式使用该参数

      函数使用:函数名(参数名称1=参数1,参数名称2 = 参数2,参数名称3 = 参数3,…)

  3. 参数拆包

    ​ 装包:把传递的参数,包装成一个集合,称之为“装包”

    ​ 拆包:把集合参数,再次分解成单独的个体,称之为“拆包”

#不定长参数的函数的定义  *args  元组
def mySum(*t):
    print(t,type(t))
    result = 0
    for v in t:
        result += v
    print(result)
#函数的调用
mySum(3,4,5,6,7)#输出 (3, 4, 5, 6, 7) <class 'tuple'>   25
mySum(3,8,5,12,7)#输出 (3, 8, 5, 12, 7) <class 'tuple'>  35


#不定长参数的函数的定义  **args   字典
def mySum(**kwargs):
    print(kwargs,type(kwargs))
#函数的调用
mySum(name ="sz",age = 12)#输出 {'name': 'sz', 'age': 12} <class 'dict'>


#参数的拆包和装包  *args
def mySum(a,b,c,d):
    print(a+b+c+d)
def test(*args):
    print(args)
    #拆包操作
    mySum(args)#报错,b,c,d三个没有赋值成功
    mySum(args[0],args[1],args[2],args[3])#这样太繁琐
    mySum(*args)#这样直接把已经装包的参数,再次拆包后赋值。
test(1,2,3,4)#输出 (1, 2, 3, 4) 10 10

#参数的拆包和装包  **args  
def mySum(a,b):
    print(a)
    print(b)
def test(**args):
    print(args)
    #拆包操作
    mySum(**args)
test(a=1,b=2)#输出 {'a': 1, 'b': 2} 1,2
test(a=1,c=2)#输出 报错 因为字典拆包是拆成 a=1,c=2 这样mySum函数中的参数没有c
3.4 缺省参数
  1. 场景

    ​ 当我们使用一个函数的时候,如果大多数情况下,使用的某个数据是一个固定值,则可以使用默认值,这种参数,称为“缺省参数”

  2. 定义

    ​ def 函数名(变量名1=默认值,变量名2=默认值,…):

    ​ 函数体:函数体中,即使外界没有传递指定变量,也可以使用,只不过值是给定的默认值

  3. 函数的调用

    ​ 函数名(变量1,变量2,…) 此次如果是缺省参数,则可以不填写

#缺省参数,当没有参数时,会使用默认值
def hit(somebody = "豆豆"):
		print("我想打",somebody)
hit("zhangsan")#输出我想打 zhangsan 
hit()#输出我想打 豆豆
3.5 参数注意
  1. 值传递和引用传递

    值传递:是指传递过来的,是一个数据的副本,修改副本,对原件没有任何影响

    ​ 引用传递:是指传递过来的,是一个变量的地址,通过地址,可以操作用一份原件。

  2. 在python当中,只有引用传递(地址传递),但是如果数据类型是可变的数据类型,则可以改变原件,如果数据类型是不可变类型,则不可以改变原件。

    def change(num):
        print(id(num))#140706432668744
    b = 10
    print(id(b))#140706432668744
    change(b)
    #此时b和num同时指向一个地址值,c c++ java三个语言是对于num创建一个新地址存放10
    
    
    def change(num):
        print(id(num))#140706434962504
        num = 666
        print(id(num))#2095039032144
    b = 10
    print(id(b))#140706434962504
    change(b)
    #此时因为num发生了改变,所以创建了一个新地址来存放num的改变,b没有发生改变
    

    4.函数的返回值

    1. 场景

      ​ 当我们通过某个函数,处理好数据之后,想要拿到处理的结果

    2. 语法

      def 函数名(参数等):

      ​ 函数体

      ​ return 数据

    3. 注意事项

      • return后续代码不会被执行
      • 只能返回一次
      • 如果想要返回多个数据,可先把多个数据包装成一个集合,整体返回。如列表,元组,字典等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unknown To Known

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值