Python-函数-上

Python之函数(上)
1. 函数简介
  • 函数:把具有独立功能的代码块组成一个对象模块,可以对这个模块进行多次调用,函数也是一个对象。
 语法:
	def 函数名([形参1,形参2,形参3.....]:
			代码块

注意:
函数名必须符合标识符的规范 print是函数对数 print()是调用函数

2. 函数的参数
2.1 形参和实参
  • 形参就是形式上的参数,没有实际的值,通过别人赋值后才有意义。相当于变量。
  • 实参就是实际意义上的参数,是一个实际存在的参数,指定了形参,在调用函数时必须传递参数,实参将会赋值给对应的形参,简单来说有几个形参就有几个实参。
2.2 函数的传递方式
  • 定义形参时可以为形参指定默认值。指定了默认值之后,如果用户传递了参数则默认值不会生效。如果用户没有传递参数则默认值就会生效
  • 位置参数:位置参数就是将对应位置的实参赋值给对应位置的形参。基于实参的顺序。
def fn(a,b):
	print('我的名字是',a)
    print('我喜欢吃的水果是',b)
fn('张三','香蕉')

执行结果:

我的名字是 张三
我喜欢吃的水果是 香蕉

实参与形参的位置要对应不能颠倒:

def fn(a,b):
	print('我的名字是',a)
    print('我喜欢吃的水果是',b)
fn('香蕉','张三')

执行结果:

我的名字是 香蕉
我喜欢吃的水果是 张三

a和b是形参,张三和香蕉是实参,形参a对应的位置是实参张三,形参b对应的位置是实参香蕉,这就是位置传参。

  • 关键字参数:关键字参数是根据参数名进⾏传递的。
def fn(a, b):
    print('我的名字是',a)
    print('我喜欢吃的水果是',b)

fn(b='香蕉',a='张三')

执行结果:

我的名字是 张三
我喜欢吃的水果是 香蕉
  • 混合使⽤位置参数和关键字参数的时候必须将位置参数写到关键字参数前⾯去

    • 位置参数在关键字参数之前

      def fn(a, b, c):
          print('a=', a)
          print('b=', b)
          print('c=', c)
      fn(1,2,c=20)
      

      执行结果:

      a= 1
      b= 2
      c= 20
      
    • 关键字参数在位置参数之前

      def fn(a, b, c):
      	print('a=', a)
      	print('b=', b)
      	print('c=', c)
      fn(c=20,1,2)
      

      执行结果:

      SyntaxError: positional argument follows keyword argument
      

    ** 为什么?**
    解释:函数中有形参和实参,有两种传递方式:位置传参和关键字传参,两者可以混合使用,但是关键字传参要在位置传参后面。

3. 不定长参数
  • 定义函数时,可以在形参前⾯加⼀个*,这样这个形参可以获取到所有的实参,它会将所有的实参保存到⼀个元组中

    def fn(a, *b, c):
        print('a=', a)
       print('b=', b)
       print('c=', c)
    fn(1,2,3,4,c=5)
    

    执行结果:

    a= 1
    b= (2, 3, 4)
    c= 5
    
  • 带*号的形参只能有⼀个,可以和其他参数配合使⽤

  • *形参只能接受位置参数,不能接受关键字参数

    def fn(*b):
        print('b=',b)
    fn(b=1,d=2,c=3)
    

    执行结果:

    TypeError: fn3() got an unexpected keyword argument 'b'
    
  • **形参可以接收其他的关键字参数,它会将这些参数统⼀保存到字典当中。字典的key就是参数的名字,字典的value就是参数的值

    def fn(**b):
        print('b=',b)
    fn(b=1,d=2,c=3)
    

    执行结果:

    b= {'b': 1, 'd': 2, 'c': 3}
    
  • **形参只有⼀个,并且必须写在所有参数的后⾯

4. 参数的解包
  • 传递实参时,也可以在序列类型的参数前添加星号,这样它会⾃动的将序列中元素依次作为参数传递

  • 要求序列中的元素的个数必须和形参的个数⼀致

    • 当传递位置参数时:

      def fn3(a, b, c):
          print('a=', a)
          print('b=', b)
          print('c=', c)
      t=(1,2,3)
      fn3(*t)
      

      执行结果:

      a= 1
      b= 2
      c= 3
      
    • 当传递关键字参数时:

      def fn3(a, b, c):
          print('a=', a)
          print('b=', b)
          print('c=', c)
      d={'b':2,'c':3,'a':1}
      fn3(**d)
      

      执行结果:

      a= 1
      b= 2
      c= 3
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
摘 要 伴随着人才教学的关注度越来越高,对于人才的培养也是当今社会发展的最为重要的问题之一。为了进一步的进行人才的培养关工作,许多的学校或者是教育的机构逐步的开展了网络信息化的教学和和管理工作,通过信息化的手段和技术实现网络信息化的教育及管理模式,通过网络信息化的手段实现在线答题在线考试和学生信息在线的管理等操作。这样更加的快捷解决了人才培养之中的问题,也在进一步的促进了网络信息化教学方式的快速的发展工作。相较于之前的人才教育和培养工作之中,存在这许多的问题和局限性。在学生信息管理方面通过线下管理的形式进行学生信息的管理工作,在此过程之中存在着一定的局限性和低效性,往往一些突发的问题导致其中工作出现错误。导致相关的教育工作受到了一定的阻碍。在学生信息和学生成绩的管理方面,往常的教育模式之下都是采用的是人工线下的进行管理和整理工作,在这一过程之中存在这一定的不安全和低效性,面对与学生基数的越来越大,学生的信息管理也在面领着巨大的挑战,管理人员面领着巨大的学生信息的信息量,运用之前的信息管理方式往往会在统计和登记上出现错误的情况的产生,为后续的管理工作造成了一定的困难。然而通过信息化的管理方式进行对学生信息的管理不仅可以避免这些错误情况的产生还可以进一步的简化学生信息管理工作的流程,节约了大量的人力和物力的之处。在线答题系统的实现不仅给学生的信息管理工作和在线考试带来了方便也进一步的促进了教育事业信息化的发展,从而实现高效化的教学工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值