函数的初识

函数的认知

面向过程编程

缺点:

  1. 代码重复。
  2. 代码可描述性不高。

初始函数

lis=[1,2,3,4,4,5,6,8,7,1]
def new_len():
  s=0
  for i in lis:
      s+=1
  print(s)
new_len()

函数是以功能为导向,一个函数一个功能(常见登陆,注册,文件的操作等)。

函数可以极大提高代码的利用率,减少代码的重复性,增加了代码的可读性。

函数的结构

def 关键字:定义一个函数。python中把一些特殊单词具有特殊意义。

define后面紧跟一个空格,后面加函数名字。例:new_len():

函数名一定要具有可描述性。:分隔符,tab键:四个空格。

函数的调用

lis=[1,2,3,4,4,5,6,8,7,1]
def new_len():
  s=0
  for i in lis:
      s+=1
  print(s)
new_len() #函数名加上括号,才是函数的执行者,函数写多少次,就执行多少次。

例如:
lis=[1,2,3,4,4,5,6,8,7,1]
def new_len():
  s=0
  for i in lis:
      s+=1
  print(s)

for i in range(2):
    print(111)

for i in range(5):
    new_len()
   
#结果:
111
111
10
10
10
10
10
证明函数体出现几次,就执行几次函数

函数的返回值

return的作用

  1. 直接结束函数。(只在函数当中用)

  2. 给函数的调用者返回具体的值。

  3. 函数中没有return或者只有一个return,函数的执行者得到的是None。

![](https://img2018.cnblogs.com/blog/1703505/201906/1703505-20190617163844946-1332847977.png)
  1. 函数中return后面是单个值,数的执行者得到的是这个值,且返回值与这个值的数据类型相同

  1. 函数中return后面是多个值,函数的执行者得到的是一个元祖,这些值都是元组中的元素。

  1. return后面是运算的时候,返回的是运算结果

函数的参数(函数的拓展性)

def new_len(a):#a是形参
    count=0
    for i in a:
        count+=1
    return count
li=[1,2,3]
print(new_len(li))#li是实参

实参和形参

实参:

  1. 位置参数,从左到右,一一对应

    def meet(age,money):
        print(f"年龄{age},月薪{money}")
    meet("100","200")
    
    def text(a,b):
        if a>b:
            print(a)
        else:
            print(b)
        return a,b
    text(9,15)
    
    #三元运算
    a1=1 b2=2
    ret=a1 ifa1>b2 else b2
    
  2. 关键字参数

    要一一对应,顺序可以不对应

    def meet(age,money):
        print(f"年龄{age},月薪{money}")
    meet(age="100",money="200")
    
    def meet(age,money,weight,high):
        print(f"年龄{age},月薪{money},身高{high},体重{weight}")
    meet(age="20",money="20000",weight=120,high=165)
    ## 顺序无所谓,按照一一对应,数量对就可以,
    
  3. 混合参数

    位置参数是固定顺序的,关键字参数一定要在位置后面。

    def meet(age,money,weight,high):
        print(f"年龄{age},月薪{money},身高{high},体重{weight}")
    meet("20","20000",high=165,weight=120)
    

形参:

  1. 位置参数

    与实参的位置参数一样

  2. 默认参数

    在形参里面直接设置

    更改默认参数:

    1. 在实参里直接定义,覆盖
    2. 也可以在实参里面按位置参数输入来覆盖
  3. 动态参数

  4. 仅限关键字参数(了解)

原文地址:https://www.cnblogs.com/li-dong-yu-95-11-21/p/11040560.html