zoukankan      html  css  js  c++  java
  • python授课之函数

    函数

    一、为什么要使用函数?

       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.函数可以有返回值:如果有返回值,必须要用变量接收才有效果

       也可以没有返回值:

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

        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())
    函数有一个或多个返回值
    def func4():
        print (1111111)
        return#结束一个函数的执行
        print (1242451)
    func4()
    return的作用

    四、函数的参数

    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')
    默认参数

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

    五、小结

     

    1.定义:def 关键词开头,空格之后接函数名称和圆括号()。
    2.参数:圆括号用来接收参数。若传入多个参数,参数之间用逗号分割。
        参数可以定义多个,也可以不定义。
        参数有很多种,如果涉及到多种参数的定义,应始终遵循位置参数、*args、默认参数、**kwargs顺序定义。
        如上述定义过程中某参数类型缺省,其他参数依旧遵循上述排序
    3.注释:函数的第一行语句应该添加注释。
    4.函数体:函数内容以冒号起始,并且缩进。
    5.返回值:return [表达式] 结束函数。不带表达式的return相当于返回 None
    
    def 函数名(参数1,参数2,*args,默认参数,**kwargs):
            """注释:函数功能和参数说明"""
            函数体
            ……
            return 返回值
  • 相关阅读:
    POJ1486 Sorting Slides 二分图or贪心
    POJ2060 Taxi Cab Scheme 最小路径覆盖
    POJ3083 Children of the Candy Corn 解题报告
    以前的文章
    POJ2449 Remmarguts' Date K短路经典题
    这一年的acm路
    POJ3014 Asteroids 最小点覆盖
    POJ2594 Treasure Exploration 最小路径覆盖
    POJ3009 Curling 2.0 解题报告
    POJ2226 Muddy Fields 最小点集覆盖
  • 原文地址:https://www.cnblogs.com/ivanxy/p/10323713.html
Copyright © 2011-2022 走看看