008_定义函数

1,定义函数(定义任何函数其前面要加def)

s = '定义函数'
def my_len():       #定义函数
    i = 0
    for k in s:
        i += 1
    print(i)
my_len()    #函数调用   #>>>4
2,关于函数中的return
  • 函数没有返回时,有两种情况:
            1,函数中没有return
2,函数中有return但是没有加返回值
  • return的作用: return是结束此函数,并返回其要返回的值;
            当程序运行到return时就会结束,不在继续运行这个函数
def func():
    l = [3,5]
    for i in l:
        print(i)
        if i == 3:
            return      #函数到这后结束,不会执行下面的,如果换成break,
    print('****')       #只是结束了for的循环,还会执行函数,因此会执行下面的语句

ret = func()            #>>>3
print(ret)              #>>>None
3,返回值的3种情况
1,没有返回值——>返回None
1.1,不写return
1.2,只写return——>结束一个函数的继续
1.3,return None——>不常用

2,返回一个值
2.1,可以返回任何数据类型
2.2,只要返回就可以接收
2.3,如果在一个程序中有多个return,那么只执行第一个

3,返回多个值
3.1,用多个变量接收:有多少返回值就用多少变量接收
3.2,用一个变量接收:得到的是一个元组
4,参数
  4.1,参数分类
4.1.1,没有参数
1,定义函数和调用函数时括号里都不写内容
4.1.2,有一个参数
2,传什么就是什么
4.1.3,有多个参数
3,位置参数

  4.2,站在实参的角度上:
     4.2.1,按位置传参
     4.2.2,按关键字传参
     4.2.3,混着用可以:但是,必须先按照位置传参,在按关键字传参,不能给同一变量传多个值
  4.3,站在形参的角度上
4.3.1,位置参数:必须传,且有几个参数就传几个值
4.3.2,默认参数:可以不传,如果不传就是用默认的参数,如果传了就用穿的
  4.4,调用函数的时候
4.4.1,按位置传: 直接写参数的值
4.4.2,按关键字: 关键字 = 值
  4.5,定义函数的时候:
4.5.1,位置参数:直接定义参数
4.5.2,默认参数(关键字参数):参数名 = ‘默认的值’
4.5.3,动态参数:可以接受任意多个参数,参数名前加*
4.5.4,定义的顺序:必须先定义位置参数,后定义默认参数
5,动态参数 

   5.1,只接收位置参数的动态参数,

      加*的为位置参数的动态参数,动态参数可接收多个元素,并将接收的元素以元组的形式存放

def sum(*args):
    n = 0
    for i in args:      # 因为*args为动态参数,args元组方式处理
        n +=i
    return n

print(sum(1,2))
print(sum(1,2,3))
  5.2,只接收关键字参数的动态参数
      加**的参数为关键字参数的动态参数,动态参数可以接收多个元素,并将接收的元素以字典的形存放
def func(**kwargs):
    print(kwargs)

func(a = 1,b = 2,c = 3)
func(a = 1,b = 2)
  5.3,动态参数的另一种传参方式
def func(*args):    #站在形参的角度上,给变量加上*,就是组合所有传来的值
    print(args)

func(1,2,3)     #>>>(1, 2, 3)
l = [1,2,3]
func(*l)        #>>>(1, 2, 3)  #站在形参的角度上,给一个序列加上*,就是将这个序列按顺序分解
6,函数的注释
def func():
    '''
    这个函数实现了什么功能
    参数1:
    参数2:
    :return: 返回的什么
    '''
    pass

  



原文地址:https://www.cnblogs.com/eternity-twinkle/p/10500197.html