zoukankan      html  css  js  c++  java
  • 函数 (一) 基础

    一、函数的作用

    函数可以让我们代码结构更清晰,而且避免了代码的重复,冗余,使一段代码或者功能可以反复的被调用,大大提高了开发效率

    二、函数的定义

    def 函数名(参数1,参数2,*args,默认参数,**kwargs):
        """注释:函数功能和参数说明"""
        函数体
        ……
        return 返回值

    1.定义:def 关键词开头,空格之后接函数名称和圆括号()。
    2.参数:圆括号用来接收参数。若传入多个参数,参数之间用逗号分割。
        参数可以定义多个,也可以不定义。
        参数有很多种,如果涉及到多种参数的定义,应始终遵循位置参数、*args、默认参数、**kwargs顺序定义。
        如上述定义过程中某参数类型缺省,其他参数依旧遵循上述排序 3.注释:函数的第一行语句应该添加注释。 4.函数体:函数内容以冒号起始,并且缩进。 5.返回值:return [表达式] 结束函数。不带表达式的return相当于返回 None

    实例如下:

    1 def my_max(x,y):
    2     '''比较两个值的大小,返回最大的那个数'''
    3     if x > y:
    4         return x
    5     if x < y:
    6         return y
    7     else:
    8         return '%s=%s'%(x,y)

    三、函数的调用

    调用函数很简单,就是已经定义的函数名加括号,如果此函数需要参数,那括号内就要加入需要传的参数。如,调用上面定义的my_max函数的方法如下:

    1 my_max(5,2)

    四、函数的返回值

    我们只需要在函数的最后加上一个return,return后面写上你要返回的值就可以了。

    接下来,我们就来研究一下这个return的用法。

    return关键字的作用

      return 是一个关键字,在pycharm里,你会看到它变成蓝色了。你必须一字不差的把这个单词给背下来。

      这个词翻译过来就是“返回”,所以我们管写在return后面的值叫“返回值”

      要研究返回值,我们还要知道返回值有几种情况:分别是没有返回值、返回一个值、返回多个值

    没有返回值

      不写return的情况下,会默认返回一个None,等同于 return None

    有一个返回值

      return 后面跟上返回值即可,调用函数的话可以用一个变量来接收这个返回值(就是将函数执行完之后的返回值赋给这个变量),如下:

    1 def my_sum(x,y):
    2     '''求两个数字的和,返回两数之和'''
    3     return x+y
    4 
    5 sum = my_sum(3,2)   #调用函数
    6 print(sum)          #结果:5

    有多个返回值

      如果有多个返回值的话只需在return后面依次跟上返回值,用逗号隔开。

      调用函数 的时候可以用一个变量来接收(此时返回的是一个元祖,赋值给此变量),也可以用多个变量来接收,此时返回值会按变量的顺序,一 一赋值(变量数要跟返回值的数目相等),如下:

    1 def getNum():
    2     '''返回三个数字的函数'''
    3     return 1,3,6
    4 
    5 res = getNum()   #用一个变量接收返回值
    6 print(res)        #结果是:(1, 3, 6)
    7 
    8 a,b,c = getNum()  #用一个变量接收返回值
    9 print(a,b,c)      #结果是:1 3 6

    五、函数的参数

    函数的参数分为形参和实参。简单来讲,形参就是定义函数的时候的参数,而实参就是调用函数的时候传递的参数

    而在调用函数进行传值的时候,传参方式又分为位置传参和关键字传参。

    位置传参是按照位置进行传值(此时,解释器会按照顺序,将实参一 一对应赋值给形参),

    关键字传参是按照关键字进行传值(这种传参方式是直接将实参以赋值的方式传给形参,如x=1,y=2)

    位置传参的优点是方便,只需一一写出需要传递的实参就行,关键之传参的优点是可以改变参数顺序。

    如下:

    1     '''求两个数字的和,返回两数之和'''
    2     return x+y
    3 
    4 my_sum(3,2)      #位置传参
    5 my_sum(x=3,y=2)  #关键字传参

    此外,还有一种参数是默认参数,是指在定义函数的时候,其中一个或者多个参数已经指定了默认值

    这种情况下在调用函数进行传参的时候,依然可以传递实参给此形参,如果不传,此参数的值即为默认值,如下:

    1 def user_info(name,sex=''):
    2     '''用户信息'''
    3     print('%s的性别是%s'%(name,sex))
    4 
    5 user_info('小明')     #结果为:小明的性别是男生 。不用指定的情况下,默认是男
    6 user_info('小花','')#结果是:小花的性别是女。    传参的情况下,会覆盖默认值

    另外,还有一种特殊的参数,他可以接收任何数量的参数,称为动态参数

      而动态参数又有两种,一种是参数名前加一个星号 " * " 这种参数可以接收不限数量的位置参数,然后组成一个元祖

      另一种是动态参数是参数名前加两个星号 “ ** ”  这种参数可以接收不限数量的关键字参数,然后组成一个字典

      如下:

    1 def func(*args,**kwargs):
    2     print(args)
    3     print(kwargs)
    4 
    5 func(1,2,3,a='a',b='b',c='c')
    6 #结果为:
    7 # (1, 2, 3)
    8 # {'b': 'b', 'c': 'c', 'a': 'a'}

    需要注意的是:如果一个函数的参数包括:位置参数,默认参数,以及动态参数 *args 和 **kwargs,那么他们的顺序应该是:(位置参数,*args,默认参数,**kwargs)

  • 相关阅读:
    Web框架高级功能之模板、拦截器、Json、打包
    前端技术发展史、Nodejs语法
    子集树与排列树
    Web开发---路由实现
    JS, Jquery进行前台翻页
    Jquery将Ajax返回的Response添加到table中
    显示字符太长??来隐藏
    关于code 上server的证书的问题
    关于Ajax call get and post method, 和前端解决跨域
    2017-05-03与03May2017之间的转化
  • 原文地址:https://www.cnblogs.com/fu-yong/p/8118719.html
Copyright © 2011-2022 走看看