• 初识函数


    一、函数定义:

    1  def  函数名():

    # 定义:def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":"。

    #  def 是固定的

    # 空格 为了将def关键字和函数名分开,  

    # 函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。

    #括号:是必须加的,

    2  函数调用:就是函数名()。       

     1 #函数定义
     2 def mylen():
     3     """计算s1的长度"""
     4     s1 = "hello world"
     5     length = 0
     6     for i in s1:
     7         length = length+1
     8     print(length)
     9 
    10 #函数调用
    11 str_len = mylen()
    12 print('str_len : %s'%str_len)
    View Code

    3 函数定义:

     1 #函数定义
     2 def mylen():
     3     """计算s1的长度"""
     4     s1 = "hello world"
     5     length = 0
     6     for i in s1:
     7         length = length+1
     8     print(length)
     9 
    10 #函数调用  
    11 mylen()
    View Code

    二、函数的返回值

    1.return的作用:结束一个函数的执行

    2.首先返回值可以是任意的数据类型。

    3.函数可以有返回值:如果有返回值,必须要用变量接收才有效果

       也可以没有返回值:

      没有返回值的时候分三种情况:

        1.当不写return的时候,函数的返回值为None

        2.当只写一个return的时候,函数的返回值为None

        3.return None的时候,函数的返回值为None(几乎不用)

    4.return返回一个值(一个变量)

    5.return返回多个值(多个变量):多个值之间用逗号隔开,以元组的形式返回。

         接收:可以用一个变量接收,也可以用多个变量接收,返回几个就用几个变量去接收

    def  func():
            a=111
            b=[1,2,3]
            c={'a':15,'b':6}
           #return a#返回一个值
           #return a,b,c#返回多个值,变量之间按逗号隔开,以元组的形式返回
    print(func())
    函数有一个或多个返回值
    1.不写return时返回None
    def  func():
        a=111
        b=[1,2,3]
    
    ret=func()
    print(ret)
    
    
    2.只写一个return时返回None
    def  func():
        a=111
        b=[1,2,3]
        return
    ret=func()
    print(ret)
    
    3.return None的时候返回None
    def  func():
        a=111
        b=[1,2,3]
        return  None
    ret=func()
    print(ret)
    函数没有返回值的函数
    1 def func4():
    2     print (1111111)
    3     return#结束一个函数的执行
    4     print (1242451)
    5 func4()
    return的作用
    方法一
    def func():
        list=['hello','egon',11,22]
        return list[-1]
    
    print(func())
    
    方法二
    def func():
        list=['hello','egon',11,22]
        return list
    
    m,n,k,g=func()#
    print(g)
    定义一个列表,返回列表的最后一个值

    三、函数的参数

    1.实参和形参

    形参:是函数定义时候定义的参数
    实参:函数调用的时候传进来的参数

    2.传递多个参数

    可以传递多个参数,多个参数之间用逗号隔开。

    站在传参的角度上,调用函数时传参数有两种方式:
      1.按照位置传参数
      2.按照关键字传参数

    用法:1.位置参数必须在关键字参数的前面
       2.对于一个参数只能赋值一次

    def my_max(a,b):#位置参数:按顺序定义参数
        if a>b:
            return a
        else:
            return b
    # 站在传参的角度上
    print(my_max(20,30))
    print(my_max(10,20))# 1.按照位置传参
    print(my_max(b=50,a=30))# 2.按照关键字传参
    print(my_max(10,b=30))#3.位置和关键字传参混搭
    传递多个参数,实现比大小的功能

    3.默认参数

    用法:为什么要用默认参数?将变化比较小的值设置成默认参数(比如一个班的男生多,女生就几个,就可以设置个默认值参数)

    定义:默认参数可以不传,不传的时候用的就是默认值,如果传会覆盖默认值。

       默认的值是在定义函数的时候就已经确定了的

    def stu_info(name,sex = "male"):
        """打印学生信息函数,由于班中大部分学生都是男生,
            所以设置默认参数sex的默认值为'male'
        """
        print(name,sex)
    stu_info('alex')
    stu_info('海燕','female')
    
    默认参数
    View Code

    默认参数缺陷:默认参数是一个可变数据类型

    def  default_param(a,l=[]):
            l.append(a)
            print(l)
    
    default_param('alex')
    default_param('rgon')
    
    输出:['alex']
            ['alex', 'egon']
    View Code

    4.动态参数

    按位置传值多余的参数都由args统一接收,保存成一个元组的形式

    按关键字传值接受多个关键字参数,由kwargs接收,保存成一个典的形式

    1 def fun(a,b,*args):
    2     sum=a+b
    3     for i in args:
    4            sum+=i
    5     return sum
    6 print(fun(1,5,6,4))#输出1+5+6+4的和
    *args应用
    def fun(a,b,**kwargs):
        print(a,b,kwargs)
    
    # 按照关键字传参数
    fun(a = 10,b = 20,cccc= 30,dddd = 50)#输出10 20 {'cccc': 30, 'dddd': 50}
    
    
    
    
    
    def f(a,b,*args,defult=6,**kwargs):
        #位置参数,*args, 默认参数,**kwargs
        # print(a,b,args,defult,kwargs)
        return a,b,args,defult,kwargs
    
    #传参数的时候:必须先按照位置传参数,再按照关键字传参数
    print(f(1,2,7,8,ccc=10,der=5))
    *kwargs的应用

    四、函数总结

    1 定义函数的规则:

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

     2 调用函数的规则:

    1.函数名()
        函数名后面+圆括号就是函数的调用。
    2.参数:
        圆括号用来接收参数。
        若传入多个参数:
            应按先位置传值,再按关键字传值
            具体的传入顺序应按照函数定义的参数情况而定
    3.返回值
        如果函数有返回值,还应该定义“变量”接收返回值
        如果返回值有多个,也可以用多个变量来接收,变量数应和返回值数目一致
    
    无返回值的情况:
    函数名()
    
    有返回值的情况:
    变量 = 函数名()
    
    多个变量接收多返回值:
    变量1,变量2,... = 函数名()

    五、参数总结

    形参:
    1 位置形参:必须被传值
    2 默认参数:调用时可不传值
               需要注意的问题:
                      只能在位置形参的后面定义
                      只在定义阶段被赋值一次
                      通常默认参数的值应该是不可变类型
    实参:
          1:位置实参:与形参一一对应
          2:关键字实参:指名道姓地传值,即便是不按照位置定义也能准确的为指定的形参传值
          可以混用1和2两种形式,但需要注意的问题:
                  1必须在2之前
                  不能为同一个形参重复传值

    可变长度的参数:从实参的角度推算出形参对应的形式*和**
            针对按照位置定义的实参冗余的部分,会被形参中的*保存成元组的形式赋值给args
            针对按照关键定义的实参冗余的部分,会被形参中的**保存成字典的形式赋值给kwargs
            强调:
                      如果实参中出现了*和**,第一时间打散了去看。

  • 相关阅读:
    Hash(学习笔记)
    [POI2012]OKR-A Horrible Poe(hash+线性筛素数)
    质数(学习笔记)
    [AHOI2014/JSOI2014]宅男计划(贪心+三分)
    [HEOI2015]定价(贪心+数学)
    Trie字典树(学习笔记)
    CF258D. Little Elephant and Broken Sorting(DP+概率期望)
    矩阵(01背包+滚动数组)
    [2015北大自招夏令营]产品排序(区间DP)
    HTML
  • 原文地址:https://www.cnblogs.com/lianxuebin/p/7240330.html
Copyright © 2020-2023  润新知