函数

1.什么是函数:

  函数就是一种工具

  可以重复调研

2.为什么要用函数

  1)防止代码冗余

  2)代码可读性差

3.怎用函数

1)定义函数 ——————>制造工具

2)调用函数 ——————>使用工具

关键字 函数名+括号:

#函数描述:函数体代码的功能

函数名的命名规范与变量名一样

def index():
    print('Hello world')


print(index())




Hello world
None

1.无参函数

  def index():

    print('ok')

2.空函数

  def login ():

    pass

3.有参函数

username = 'sean'

password = '123'

def login(username,password):

  print(username,password) 

return :它是一个函数结束的标志,函数体代码,只要执行到return,函数执行结束

1.不写return:默认返回none

2.只写return:只有结束函数体代码的效果,返回none 

3.写return none:与return效果一样

4.return返回一个值:可以将返回的结果,当作一个变量值来使用

5.return返回多个值:

1)将返回的多个值存入元组后返回(默认)

2)函数的返回值不想被修改

3) 可以自己指定返回的数据类型

函数参数:

  函数先定义后调用,在定义阶段只检测语法

形参:

  是在函数定义阶段就规定的参数,它就相当于变量名

实参:

  是在函数条用阶段传入的参数,它相对于定义变量时的变量值

注意:

def index(a):
    print(a)
    print(b)

a=1
b=1
index(a)



结果:
1
2

def index(a):
    print(a)
    print(b)

a=1
index(a)
b=1

报错

位置参数:

通过位置进行传参

def foo(a,b):
    print(a,b)
fool(2,1)

结果:
2  1

关键字参数:

  指定参数进行传参

ps:

位置参数一定要在关键字参数之前,连用时不要对同一个形参重复赋值

默认参数:

在定义函数阶段就已经传入参数,如果说你在实参的时候传入了一个新的参数,就会使用新参数,默认参数在传值时,一般不要将可变类型当作参数传递

典型例题
# 第一种
def register(username, age, hobby, l1=None):
    if not l1:
        l1 = [hobby]
        print(username, age, hobby, l1)


register('root', 15, 'read')
register('ios', 55, 'study')
register('btn', 45, 'learn')


# 第二种
def register(username, age, hobby):
    l1 = [hobby]
    print(username, age, hobby, l1)


register('root', 15, 'read')
register('ios', 55, 'study')
register('btn', 45, 'learn')


执行结果:
root 15 read ['read']
ios 55 study ['study']
btn 45 learn ['learn']

应用场景:

  当参数对应值重复出现的情况下使用默认参数

可变长参数

官方认证:*args:可以接收所有溢出的位置参数,接收的值存于元组中(args)

只要有*就有可变长参数的效果

*打散你传入的容器类型  位置参数

**kwargs :接收所在溢出的关键字参数,存在于字典中(kwargs)*字典 返回key

原文地址:https://www.cnblogs.com/godlover/p/11827817.html