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

    一、为什么要使用函数?

       1.避免代码重用

       2.提高代码的可读性

    二、函数的定义与调用

    1def  函数名(参数1,参数2)

        ''' 函数注释'''

        print('函数体')

        return 返回值

      定义:def关键字开头,空格之后接函数名和圆括号,最后还要加一个冒号。

            def是固定的,不能变。

      函数名:函数名是包含字母,数字,下划线的任意组合,但是不能以数字开头。虽然函数名可以随便取名,但是一般尽量定义成可以表示函数功能的。

    2.函数的调用

         返回值=函数名(参数1,参数2)#记得函数名后面加括号

    下面我们先来定义一个求计算字符串长度的函数。假如我们的len()函数现在不能用了,那么我们就需要定义一个函数,求字符串的长度。如果让我们一次一次的去写相同的代码,会显得很麻烦。这时候我们的函数就上场了。

    #计算字符串的长度
    #1.给定一个字符串,调用函数,当他没有返回值的时候返回Null
    def  length():
            s='hello world'
            length=0
            for i in s:
                    length+=1
            print(length)
    print(length())
    
    
    #2.return 必须放在函数里,当函数有返回值的时候,必须用变量接收才会有效果
    def  length():
            s='hello world'
            length=0
            for i in s:
                    length+=1
            return  length
    print(length())
    

    三、函数的返回值

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

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

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

    4.也可以没有返回值:

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

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

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

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

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

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

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

    def func1():
        return (1,2)
    
    ret1,ret2=func1()
    

    四、函数的参数

    # def fun(s):#参数接受:形式参数,简称形参
    #     '''
    #         计算字符串长度的函数---------函数的功能
    #         参数s:接受要计算的字符串--------参数的信息
    #         return:要计算字符串长度 ---------返回值得信息
    #     '''
    #     length=0
    #     for i in s:
    #         length+=1
    #     return length
    #
    # ret=fun('helloword')#参数传入:实际参数,简称实参
    # print(ret)
    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')
    

    默认参数缺陷:当默认参数是一个可变数据类型时,后面的运算如果没有对该参数赋值,该参数不会初始化为默认值,会影响后续计算

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

    4.动态参数

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

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

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

     

      

  • 相关阅读:
    LeetCode Single Number
    Leetcode Populating Next Right Pointers in Each Node
    LeetCode Permutations
    Leetcode Sum Root to Leaf Numbers
    LeetCode Candy
    LeetCode Sort List
    LeetCode Remove Duplicates from Sorted List II
    LeetCode Remove Duplicates from Sorted List
    spring MVC HandlerInterceptorAdapter
    yum
  • 原文地址:https://www.cnblogs.com/xiaohema/p/8452989.html
Copyright © 2011-2022 走看看