python全栈day9

01 函数的初始

1.函数是什么?

  具备某一项功能的工具即函数。而想要使用函数,那么需要首先对它进行定义。


2.函数怎么定义?

def 函数名(参数1,参数2,参数3,...):
    '''注释'''
    函数体
    return 返回的值
#函数名要能反映其意义

3.函数的优点?
  1)减少代码重复率;
  2)增强代码的阅读性。

4.函数的使用原则:先定义再调用

  定义函数名的规则和定义变量的规则是一样的,都是必须由字母数字下划线组合,不能以数字开头,不能是python中的关键字,也不能和内置函数同名。在使用过程中要区分函数的定义阶段和调用阶段。

#定义阶段
def func():
    print('Hello world!')

#调用阶段
func() 

  注意:1.函数在定义过程中只检查语法错误,逻辑错误不会检测,在pycharm等软件中逻辑错误不会标红。

     2.函数的执行者:函数名()

02 函数返回值return

1.作用
  1)在函数体中如果遇到return直接结束函数。
  2)给函数的执行者返回值。


2.在函数中返回值分情况讨论:
  1.函数中只使用return
    返回值为None

def func(a,b):
    print(a,b)
    return 

print(func(1,2))
#返回值为None

  

  2.使用return 单个值
    返回值为原封不动的单个值,数据类型不会改变。

def func(a,b):
    c = a + b
    return c

s = func(1,2)
print(s,type(s))
#返回值为1+2的结果3,类型为<class 'int'>


  3.使用return返回多个值。
    返回值为一个元组,由多个值组成的一个元组。

def func(a,b):
    c = a + b
    return a,b,c

s = func(1,2)
print(s,type(s))
#返回值为(1,2,3),类型为<class 'tuple'>

  

  注意:工作中,定义函数尽量不要出现print

03 函数参数
1.实参
  1)位置参数
    原则:按照顺序,一一对应

def func(a,b):    
    c = a + b
    return a,b,c

print(func(1,2))        #1,2和函数中的a,b  按照顺序,一一对应

  

  2)关键字参数
    原则:可以不按照顺序,但是必须一一对应。

def func(a,b):
    c = a + b
    return a,b,c

print(func(b = 2,a = 1))
#按照key = value形式定义实参,顺序可以不和形参顺序相同,但是必须一一对应

  

  3)混合传参:
    原则:关键字参数一定要在位置参数后面

def fun1(a,b,c,d,e):
    c = [1,2,3]
    d = {'name':'alex'}
    e = ('taibai','wusir')
    return a + b

print(fun1(1,10,c = 3,d = [1,2,3],e = {'name':'alex'}))

  

2.形参
  1)位置参数
    原则:按照顺序,一一对应
  2)默认参数
    原则:给其传值,将原默认参数覆盖掉,不传值,不报错,使用默认值。
    应用场景:不经常改变的参数,但是一直在用。

def msg(name,sex = 'man'):      #当文件录入时,信息中的sex多为‘man’时可以将其定为默认参数
    with open('msg','a',encoding='utf-8') as f:
        f.write('{}    {}\n'.format(name,sex))


  3)陷阱:默认参数为可变数据类型(面试必考)
    可变的数据类型的默认参数,它始终使用的是一个,id值永远相同。

def func1(x,l1 = [])
  l1.append(x)
  return l1
print(func1(1)) #这时返回[1] print(func1(100)) #这时返回[1,100],在此证明l1[]这个列表的是一个,id值相同

  

猜你喜欢

转载自www.cnblogs.com/abner28/p/9482142.html