zoukankan      html  css  js  c++  java
  • 函数的返回值及参数

    1.为什么要用函数

    如果不用len()这个Python内置函数统计“字符串”的长度,该如何获取长度?

    s="hello word"
    n=0
    for i in s:
        n+=1
    print(n)

    现在要计算另一个“字符串”的长度,“hello wuxi”

    s="hello wuxi"
    n=0
    for i in s:
        n+=1
    print(n)

    现在产生了一个问题:实现相同的功能,代码冗余。

    而python内置的len()函数,读起来简单,一看便知这个功能。而上面的两组代码“可读性差”

    print(len(s1))
    print(len(s2))

    2.初始函数定义与调用

    def func():
        代码1
        代码2
        ...
    func()

    注意事项:

    一、def 关键字开头,后面接函数名加()

    二、函数名的命名规范和“变量名”相同。只能包含字符串、下划线和数字且不能以数字开头、要见名知意。

    三、函数的注释。用上下三引号表示

    四、函数的调用。函数名加括号

    三、函数的返回值

    使用len()方法会得到一个“返回值”

    l = [1,2,3,4,5]
    res=len(l)
    print(res)

    一、return关键字

    return是函数返回值的关键字,没有他,返回值为None。

    可返回任意类型的数值

    1.1没有返回值

    下面就是无return,则返回None的例子

    def mylen():
        """计算s1的长度"""
        s1 = "hello world"
        n = 0
        for i in s1:
            n = n+1
    #函数调用
    str_len = mylen()
    print(str_len)
    #结果为None

    1.2只写一个return

    return后面不写其他内容也返回None,既然没有返回内容,那为什么要写return,因为return还有一个用法:结束整个函数

    def func():
        print(111)
        return
    res=func()
    print(res)
    View Code

    1.3返回一个值

    则返回return后的内容

    def func():
        print(111)
        return 1
    ret = func()
    print(ret)
    View Code

     注意return和返回值之间要有空格

    1.4返回多个值

      返回多个值,并以元祖形式括起来。因为在Python中用逗号分隔的值就被认为是元祖

    def func1():
        '''返回多个值'''
        return 1,2,3,4
    def func2():
        '''返回多个任意类型的值'''
        return 1,['a','b'],3,4
    ret1 = func1()
    print(ret1)
    ret2 = func2()
    print(ret2)
    View Code

      返回多个值并以元祖形式返回,可以考虑用多个值接收

    def func():
        return [1,2],[3,4]
    res=func()
    print(res)
    #([1, 2], [3, 4])
    View Code

      可以考虑用多个值接收。使得据结果不为元祖

    def func():
        return 1,['a','b'],'e'
    res=func()
    a,b,c=res
    print(a,b,c)
    View Code

      返回的是元祖形式,若不想以元祖形式返回,则可以用容器抱起来

      因为元祖是用来存放多个值的

    def func():
        return [[1,2],[3,4]]
    res=func()
    print(res)
    #结果[[1, 2], [3, 4]]
    View Code

     四、函数的参数

      没有参数,我们只能统计固定的长度。有了函数的参数,就可以计算任何内容的长度了

    def mylen(a):
        """计算s1的长度"""
        length = 0
        for i in a:
            length +=1
        return length
    #函数调用
    str_len = mylen("hello wuxi")
    print('str_len:%s'%str_len)
    View Code

      我们依据参数告诉函数要计算的字符长度是谁的。这个过程就是传参的过程

      形参和实参

      参数分为定义函数阶段括号内的(形参)。还有调用调用函数时括号内的“实际参数(实参)”。

      传递多个参数

         多个参数之间用逗号分隔

    def my_max(x,y)

      位置参数

        站在实参角度

          1.按位置实参(正常传值)

    ma = mymax(10,20)

          2.关键字实参

    ma = mymax(y = 10,x = 20)

          3.关键字和位置实参混合

           注意:位置实参必须在关键字实参的前面

    ma = mymax(10,y = 20)

       默认参数

          在函数的定义阶段,形参(变量名)就已经被赋值了
          # 在调用的时候可以不为默认值形参传值,默认使用定义阶段就已经绑定的值
          # 在调用的时候如果可以给默认值形参传值 传了那么就使用你传的值

          将变化较小的值设置成默认参数,有需要改变的,可以重新设置  

    def stu_info(name,sex = "male"):

          参数陷阱:默认参数是一个可变数据类型。比如是列表

    def func(a,l=[]):
        l.append(a)
        # return ls
        print('点名簿包含:%s'%l)
    func('wuxi')
    func('sll')
    func('zdq')
    View Code

      可变长参数

         按照位置传值,多余的值同一由args接收,保存成元祖(元祖就是用来接收多个值的)

         *在实参中会将列表、元祖、集合、字符串打散成位置实参(for循环)一一传入函数中。

    func(*[1,2,3])
    #func(1,2,3)

         **在实参中会将字典拆分成k=value的形式。

    func(**{‘x’:1,'y':2})
    func(x=1,y=2)

        *在形参中

        接收多余的位置实参,不接收关键字实参

        **形参

        接收关键字实参,保存成字典形式

  • 相关阅读:
    rstudio命令行操作
    HTTP缓存机制
    F5和Ctrl F5
    g++与gcc区别
    C++中long long和long
    拉链法哈希表实现
    tcp中的带外数据
    LSGAN
    随机森林分类器学习
    python中cls关键字
  • 原文地址:https://www.cnblogs.com/ZDQ1/p/11157717.html
Copyright © 2011-2022 走看看