• python之函数初识


    一、函数的初识
    1、如何定义函数:
    def 函数名():
      代码...

    例如:
    def my_len():
      l = [1, 2, 3, 4]
      count = 0
      for i in l:
        count += 1
      print(count)

    2、函数的优点:
    1,减少代码的重复率。
    2,增强代码的阅读性。

    3、函数到底是什么?
    函数最主要的目的:封装一个功能。

    4、函数如何调用:函数名 ()
    my_len()

    5、总结
    定义:def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":"。
       def 是固定的,不能变,他就是定义函数的关键字。
       空格 为了将def关键字和函数名分开,必须空,当然你可以空2格、3格或者你想空多少都行,但正常人还是空1格。
       函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并能表达函数功能。
       括号:是必须加的!

    注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性。

    调用:就是 函数名() 要记得加上括号。

    二、函数的返回值:return
    1、函数中如果遇到retrun,则直接结束函数。

    2、给函数的执行者返回值。
    1,不写return和只写return              返回None
    2,return 单个值                              原封不动的返回(返回的数据类型也一致)
    3,return 多个值                              返回一个元组,所有的返回值作为元组的每一个元素

    (1)不写return
    def func1():
      print(111)
      print(222)
    print(func1())      #111 222 None

    (1-2)只写return
    def func1():
      print(111)
      print(222)
      return
    print(func1())     #111 222 None


    (2)return 单个值
    def fun1():
      a = 1
      b = 'hello'
      c = [1,2,3]
      return a
    print(fun1())      # 1

    (3)return 多个值
    def fun1():
      a = 1
      b = 'hello'
      c = [1,2,3]
      return a,b,c
    print(fun1())      #(1, 'hello', [1, 2, 3])

    注意:工作中,函数中尽量不要出现print,这里只是为了展示函数的用法才使用的

     


    三、函数的参数
    1、用一个例子简单了解一下:
    #函数定义
    def mylen(s):
      """计算s的长度"""
      length = 0
      for i in s:
        length += 1
      return length

    #函数调用
    str_len = mylen("hello world")
    print('str_len : %s' %(str_len))

    这里我们要告诉mylen函数要计算的字符串是谁,这个过程就叫做传递参数,
    简称传参,我们调用函数时传递的这个“hello world”和定义函数时的s就是参数。

    这个“hello world”被称为实际参数,因为这个是实际的要交给函数的内容,简称实参。

    定义函数时的s,只是一个变量的名字,被称为形式参数,因为在定义函数的时候它只是一个形式并不是真正的数据,
    表示这里有一个参数,简称形参。 

     

    2、实参
    1,位置参数:按照顺序,一一对应


    def func1(x,y):
      print(x,y)
    func1(1,2)      #位置参数,1对应传给x,2对应传给y


    2,关键字传参:可以不按照顺序,但是必须一一对应
    def func1(x,y):
      return x+y
    print(func1(y=100,x=99))      #关键字参数,我们写实参的时候直接声明了形参y对应100,x对应99

    3,混合传参:关键字参数一定要在位置参数后面
    def func1(a,b,x,y):
      return b+y

    print(func1(100,200,y=100,x=99))    #300

    3、形参
    1,位置参数 按照顺序,一一对应
    def func(x,y,z):
      print(x,y,z)
    func(1,2,3)


    2,默认参数:给其传值,将原默认参数覆盖掉,不传值,不报错,使用默认值。
    应用场景:不经常改变的参数,但是一直在用。
    def func1(x,y,a=666):
      print(x,y,a)
    func1(1,2)              #1 2 666
    func1(1,2,333)       #1 2 333

    注意:
    默认参数一般设置为不可变的数据类型(str,int,tuple等),
    若默认参数设置为可变的数据类型(list,dict等),那么执行一次后,这个可变的数据类型它始终用的是同一个。
    def fun1(x,l1=[]):
      l1.append(x)
      return l1

    res = fun1(20)
    print(res,id(res))       #[20] 2192007779592

    res1 = fun1(100)
    print(res1,id(res1))   #[20, 100] 2192007779592


    4、参数总结
    实参:
    位置参数:按照顺序,一一对应
    关键字参数:可以不按照顺序,但是必须一一对应
    混合参数:关键字参数一定要在位置参数后面

    形参
    位置参数:按照顺序,一一对应
    默认参数:给其传值,将原默认参数覆盖掉,不传值,不报错,使用默认值

     

    小知识点:只针对于简单的if else 这样的结构,才可以使用。
    def fun(x,y):
      if x > y:
        return x
      else:
        return y
    print(fun(1,2))

    上面代码可以下成下面的代码:
    def fun(x,y):
      return x if x > y else y
    print(fun(1,2))

     

  • 相关阅读:
    【Scrum】2.18
    【scrum】2.22
    绿色软件 Vs 安装软件
    【Scrum】2.21
    【scrum】2.15
    读《design pattern》有感
    让广告再播一会儿~
    Qt::日志处理
    终于在博客园开通了
    惹毛程序员的十件事
  • 原文地址:https://www.cnblogs.com/yidashi110/p/10092284.html
Copyright © 2020-2023  润新知